Как заставить откомпилиную прого работать на машине, без VB?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
VVlad
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 17.10.2004 (Вс) 1:16

Как заставить откомпилиную прого работать на машине, без VB?

Сообщение VVlad » 17.10.2004 (Вс) 1:30

Как заставить откомпилиную прого работать на машине, без VB?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.10.2004 (Вс) 1:35

Перетащить на эту машину вместе с прогой ещё и msvbvm60.dll
Изображение

cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Сообщение cashman » 17.10.2004 (Вс) 1:58

tyomitch писал(а):Перетащить на эту машину вместе с прогой ещё и msvbvm60.dll


А этот файл надо в какую дерикторию кидать... в разных Виндах по разному??? и нужно ли его отметка в реестре?...
+ к этой теме...
если прога требует разные там дополнительно используемые .OCXы??? теже вопросы (по размещению и регистрации)...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.10.2004 (Вс) 2:04

Кидать можно в системную папку (\Windows\System на Win9x, \Winnt\System32 на WinNT), можно прямо в папку к программе. Отмечать в реестре не нужно.

OCX-ы можно кидать вообще куда угодно, но их надо регистрировать (запуском regsvr32 путь_и_имя_OCX)
Изображение

VVlad
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 17.10.2004 (Вс) 1:16

Сообщение VVlad » 17.10.2004 (Вс) 2:07

tyomitch писал(а):Перетащить на эту машину вместе с прогой ещё и msvbvm60.dll

И надо ли его где регистрировать?

cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Сообщение cashman » 17.10.2004 (Вс) 2:22

tyomitch писал(а):Кидать можно в системную папку (\Windows\System на Win9x, \Winnt\System32 на WinNT), можно прямо в папку к программе. Отмечать в реестре не нужно.

OCX-ы можно кидать вообще куда угодно, но их надо регистрировать (запуском regsvr32 путь_и_имя_OCX)


Как моя прога может узнать в какую Винду попала и куда ей необходимо скинуть необходимые файлы?...
А по .OCX, я никогда не регистрировал их, как это сделать на программном уровне?.. если есть статья - кинь ссылку...

ta_gena
Бывалый
Бывалый
 
Сообщения: 264
Зарегистрирован: 30.10.2002 (Ср) 12:18
Откуда: Russia

Сообщение ta_gena » 17.10.2004 (Вс) 2:42

Сделай 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


А далее пишем прогу
Код: Выделить всё
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


Dzhon
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 236
Зарегистрирован: 09.12.2003 (Вт) 13:30
Откуда: Россия, Омск

Сообщение Dzhon » 17.10.2004 (Вс) 7:10

А можно просто создать инсталяционный пакет (например в InstalShield Express) и при его создании Express сам определит какие .ocx и .dll у тебя в программе используется и спросит куда их установить, а во время инсталяции все их установит и прорегистрирует :wink:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.10.2004 (Вс) 11:20

VVlad писал(а):
tyomitch писал(а):Перетащить на эту машину вместе с прогой ещё и msvbvm60.dll

И надо ли его где регистрировать?

Нет, не надо.
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.10.2004 (Вс) 11:24

cashman писал(а):
tyomitch писал(а):Кидать можно в системную папку (\Windows\System на Win9x, \Winnt\System32 на WinNT), можно прямо в папку к программе. Отмечать в реестре не нужно.

OCX-ы можно кидать вообще куда угодно, но их надо регистрировать (запуском regsvr32 путь_и_имя_OCX)


Как моя прога может узнать в какую Винду попала и куда ей необходимо скинуть необходимые файлы?...
А по .OCX, я никогда не регистрировал их, как это сделать на программном уровне?.. если есть статья - кинь ссылку...

1. По GetVersionEx, а системную папку - по GetSystemDirectory.
2. http://bbs.vbstreets.ru/viewtopic.php?t=2537
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.10.2004 (Вс) 11:28

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


Стоит ли и говорить, что %SystemRoot% в Win9x нету?
А вот регистрировать msvbvm60.dll совсем даже и не обязательно.
Смысл команды cd здесь не понял вообще. Зачем она?

Ну, и не говоря о том, что в общем случае системная папка может быть не %SystemRoot%\System[32], а хоть вообще на другом диске.



И самое главное: зачем тебе здесь батники? Есть же оператор FileCopy? :-)
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.10.2004 (Вс) 12:12

Для справки страждущих: в Win98 предопределены следующие переменные:
Код: Выделить всё
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

Это все. Других нет.
Изображение

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 17.10.2004 (Вс) 19:05

Код: Выделить всё
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

Вот так лучше 8)
الفيجوال بيسك الرابح

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.10.2004 (Вс) 19:13

Ща специально создам kernel32.dll и там, и там...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.10.2004 (Вс) 19:19

GM, ещё раз: в общем случае системная папка может быть не %windir%\System[32], а хоть вообще на другом диске.
Неужели так тяжело написать на VB инсталлятор из десятка строк?
Изображение

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 17.10.2004 (Вс) 19:47

Неужели так тяжело написать на VB инсталлятор из десятка строк?

Если нет msvbvm60.dll то этот инсталлятор не запустится.
الفيجوال بيسك الرابح

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.10.2004 (Вс) 19:52

Если положить его в одну папку с инсталлятором - запустится.
Его ведь всё равно надо где-то хранить, почему бы не в одной папке с инсталлятором?
Изображение

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 17.10.2004 (Вс) 20:00

Его ведь всё равно надо где-то хранить, почему бы не в одной папке с инсталлятором

Действительно, что-то я не подумал :oops:
الفيجوال بيسك الرابح

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 18.10.2004 (Пн) 9:00

Поиском то пользоваться не пробовали? Тема уже избита и обсуждена раз сто наверное. Ключевые слова - Fusion и Package deployment wizard.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 7

    TopList