tyomitch писал(а):Перетащить на эту машину вместе с прогой ещё и msvbvm60.dll
tyomitch писал(а):Перетащить на эту машину вместе с прогой ещё и msvbvm60.dll
tyomitch писал(а):Кидать можно в системную папку (\Windows\System на Win9x, \Winnt\System32 на WinNT), можно прямо в папку к программе. Отмечать в реестре не нужно.
OCX-ы можно кидать вообще куда угодно, но их надо регистрировать (запуском regsvr32 путь_и_имя_OCX)
Option Explicit
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As Any) As Long
Private Const EWX_LOGOFF As Long = 0
Private Const EWX_SHUTDOWN As Long = 1
Private Const EWX_RESTART As Long = 2
Private Const EWX_FORCE As Long = 4
Private Const EWX_SHUTDOWN_ATX As Long = 8
Private Const VER_PLATFORM_WIN32_WINDOWS = 1 ' Windows 9x
Private Const VER_PLATFORM_WIN32_NT = 2 ' Windows NT/2000/XP
Private Type LUID
UsedPart As Long
IgnoredForNowHigh32BitPart As Long
End Type
Private Type TOKEN_PRIVILEGES
PrivilegeCount As Long
TheLuid As LUID
Attributes As Long
End Type
Private Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
End Type
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Public IsWin9x As Boolean
Public IsWinNT As Boolean
Sub Main()
Dim OSver As OSVERSIONINFOEX
Dim OSverTmp As OSVERSIONINFO
Dim mblnVersionInfoEx As Boolean
OSver.dwOSVersionInfoSize = Len(OSver)
mblnVersionInfoEx = CBool(GetVersionEx(OSver))
If Not mblnVersionInfoEx Then
OSver.dwOSVersionInfoSize = Len(OSverTmp)
Call GetVersionEx(OSver)
End If
IsWin9x = (OSver.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS)
IsWinNT = (OSver.dwPlatformId = VER_PLATFORM_WIN32_NT)
If IsWin9x The
VBA.Shell [Path]\vbReg.bat
else
VBA.Shell [Path]\vbReg32.bat
endif
End Sub
VVlad писал(а):tyomitch писал(а):Перетащить на эту машину вместе с прогой ещё и msvbvm60.dll
И надо ли его где регистрировать?
cashman писал(а):tyomitch писал(а):Кидать можно в системную папку (\Windows\System на Win9x, \Winnt\System32 на WinNT), можно прямо в папку к программе. Отмечать в реестре не нужно.
OCX-ы можно кидать вообще куда угодно, но их надо регистрировать (запуском regsvr32 путь_и_имя_OCX)
Как моя прога может узнать в какую Винду попала и куда ей необходимо скинуть необходимые файлы?...
А по .OCX, я никогда не регистрировал их, как это сделать на программном уровне?.. если есть статья - кинь ссылку...
ta_gena писал(а):Сделай bat файл, например vbReg32.bat
В нем пишем
Copy msvbvm60.dll %SystemRoot%\msvbvm60.dll
CD %SystemRoot%
%SystemRoot%\System32\RegSvr32 %SystemRoot%\msvbvm60.dll
и
vbReg.bat
В нем пишем
Copy msvbvm60.dll %SystemRoot%\msvbvm60.dll
CD %SystemRoot%
%SystemRoot%\System\RegSvr32 %SystemRoot%\msvbvm60.dll
TMP=C:\WINDOWS\TEMP
TEMP=C:\WINDOWS\TEMP
PROMPT=$p$g
winbootdir=C:\WINDOWS
PATH=C:\WINDOWS;C:\WINDOWS\COMMAND
COMSPEC=C:\WINDOWS\COMMAND.COM
windir=C:\WINDOWS
BLASTER=A220 I5 D1 T4 P330
if exist "%windir%\System32\Kernel32.dll" goto Windows_NT_2K_or_XP
if exist "%windir%\System\Kernel32.dll" goto Windows_95_98_or_ME
:Windows_95_98_or_ME
copy "msvbvm60.dll" "%windir%\System\msvbvm60.dll"
goto FinishInstall
:Windows_NT_2K_or_XP
copy "msvbvm60.dll" "%windir%\System32\msvbvm60.dll"
goto FinishInstall
:FinishInstall
Неужели так тяжело написать на VB инсталлятор из десятка строк?
Его ведь всё равно надо где-то хранить, почему бы не в одной папке с инсталлятором
Сейчас этот форум просматривают: Yandex-бот и гости: 7