Как скомпилировать EXE-ник не требующий инстала??

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

Как скомпилировать EXE-ник не требующий инстала??

Сообщение Moondev » 10.02.2005 (Чт) 20:27

Как скомпилировать EXE-ник не требующий инсталяции?
Я так понимаю, что должен быть какой-то софт, который все библиотеки включит в этот exe-шник?

По крайней мере в VB6 я ничего такого не нашел.

Если кто знает - помогите плиз.
НАдо для того, чтобы пользователь вставил СD в дисковод и сразу заупстилась программа.

Спасибо!
Thanks!

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 10.02.2005 (Чт) 20:49

Moondev писал(а):Как скомпилировать EXE-ник не требующий инсталяции?
Я так понимаю, что должен быть какой-то софт, который все библиотеки включит в этот exe-шник?

По крайней мере в VB6 я ничего такого не нашел.

Если кто знает - помогите плиз.
НАдо для того, чтобы пользователь вставил СD в дисковод и сразу заупстилась программа.

Спасибо!
В каком смысле не требующий инстала? Может я чего то не допонял или чего то понял не так...но тебе ничего не мешает закинуть в корень диска кроме твоего екзешника еще и ОСХ и библиотеки которые он использует, и все будет работать, правда елси они не требую регистрации. Обьсяни подробно чего тебе надо

Moondev
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 25.11.2004 (Чт) 1:49

Сообщение Moondev » 10.02.2005 (Чт) 21:23

надо чтобы все OCX библиотеки и т.д. он не требовал. А что, если они в том же каталоге он САМ их найдет???
Thanks!

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 10.02.2005 (Чт) 22:12

0) Подходящий софт - PEBundle, например
1) Да, если кинуть библиотеки и ocx'ы в каталог с прогой, то все будет ОК (если они зарегистрированы regsvr'ом)

ism
Постоялец
Постоялец
 
Сообщения: 337
Зарегистрирован: 12.12.2001 (Ср) 12:59
Откуда: Russia, Saint-Petersburg

Сообщение ism » 10.02.2005 (Чт) 22:49

Moondev писал(а):надо чтобы все OCX библиотеки и т.д. он не требовал. А что, если они в том же каталоге он САМ их найдет???

Библиотеки - да
OCX - надо регистрировать какими-то API, или Windows'овской утилитой regsvr32 или что-то похожее

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 11.02.2005 (Пт) 11:26

Можно создать батник, который это все дело сначала регестрирует, а потом запускает авторан, т.е. твою прогу

dimix
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 174
Зарегистрирован: 08.02.2005 (Вт) 22:47

Сообщение dimix » 11.02.2005 (Пт) 13:03

А можно поподробнее про регистрацию? Я в своем проекте использую OCX. Чтобы прога работала на компе, где нет этого OCX, я руками кидаю его в Windows\System. А как его регистрировать? Типа, можно ли сделать так, чтобы он был в каталоге с прогой и использовался прогой оттуда?

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 11.02.2005 (Пт) 15:55

Moondev писал(а):надо чтобы все OCX библиотеки и т.д. он не требовал. А что, если они в том же каталоге он САМ их найдет???


Найти-то найдет. Но надо учитывать что не всегда все будет работать - программа может не работать на старых операционках (Win95 к примеру) - там вроде требуется замена ole-шных библиотек, что возможно помимо всего только с перезагрузкой...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 11.02.2005 (Пт) 20:07

Насчет регистрации: Пуск->Выполнить->regsvr32 C:\Windows\System\Name.dll(ocx).

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 11.02.2005 (Пт) 20:13

A.A.Z. писал(а):Насчет регистрации: Пуск->Выполнить->regsvr32 C:\Windows\System\Name.dll(ocx).


Да но если библиотека находиться на диске :?:

Хотя я уже говорил, что можно писать батник :roll:

ism
Постоялец
Постоялец
 
Сообщения: 337
Зарегистрирован: 12.12.2001 (Ср) 12:59
Откуда: Russia, Saint-Petersburg

Сообщение ism » 11.02.2005 (Пт) 22:24

A.A.Z. писал(а):Насчет регистрации: Пуск->Выполнить->regsvr32 C:\Windows\System\Name.dll(ocx).


А если XP от не System, а System32
Легче всего маленькую прогу на C, которая все проверит и скопирует куда надо
Последний раз редактировалось ism 11.02.2005 (Пт) 22:30, всего редактировалось 1 раз.

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 11.02.2005 (Пт) 22:29

dimix писал(а):я руками кидаю его в Windows\System
Поэтому я и написал System ;)

dimix
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 174
Зарегистрирован: 08.02.2005 (Вт) 22:47

Сообщение dimix » 11.02.2005 (Пт) 23:22

Serega.I писал(а):
A.A.Z. писал(а):Насчет регистрации: Пуск->Выполнить->regsvr32 C:\Windows\System\Name.dll(ocx).


Легче всего маленькую прогу на C, которая все проверит и скопирует куда надо


А что делать тем, кто не пишет на С?
А давай ты ее напишешь и здесь выложишь :wink:

Даю наводку:

Вариант 1. То, что нужно регистрировать, лежит в папке с основным exe. Т.е. там же, где будет лежать твоя программулина.

Вариант 2. То, что нужно регистрировать, перечисляется в дополнительном файле (например SeregaI.txt), который, в свою очередь, лежит в папке с основной программой.

:D :D :D

ism
Постоялец
Постоялец
 
Сообщения: 337
Зарегистрирован: 12.12.2001 (Ср) 12:59
Откуда: Russia, Saint-Petersburg

Сообщение ism » 13.02.2005 (Вс) 0:44

К сожалению C не стоит, а на VB пожалуйста 8) ...

Работает с любым к-вом OCX и никаких regsvr32 ненужно, все разработано и протестено мной

Код: Выделить всё
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Function registerDll(dllname As String) As Boolean
Dim hLib As Long
Dim hProc As Long

hLib = LoadLibrary(dllname)
If hLib = 0 Then
    registerDll = False
    Exit Function
End If
hProc = GetProcAddress(hLib, "DllRegisterServer")
If hProc = 0 Then
    FreeLibrary hLib
    registerDll = False
    Exit Function
End If

CallWindowProc hProc, 0, 0, 0, 0

FreeLibrary hLib

registerDll = True
End Function


Private Sub Form_Load()
Dim intFH As Integer
Dim strName As String

intFH = FreeFile
'Пердполагается что каталог не корневой!!!!
'OCX не перемещается в windows\system32!!!!
Open App.Path & "\SeregaI.txt" For Input As intFH

Do Until EOF(intFH)
    Line Input #intFH, strName
    If registerDll(App.Path & "\" & strName) = False Then MsgBox strName & " зарегистрировать неудалось"
Loop

Close #intFH
End Sub


А вообще хоть на MASM перепешу, если будет время

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

Сообщение tyomitch » 13.02.2005 (Вс) 1:23

Serega.I писал(а):К сожалению C не стоит, а на VB пожалуйста 8) ...

Работает с любым к-вом OCX и никаких regsvr32 ненужно, все разработано и протестено мной

Прямо-таки тобой? :-)
А почему такое сходство с http://groups.google.ru/groups?selm=707 ... put=gplain (дата того поста - Oct 1998)?
Изображение

ism
Постоялец
Постоялец
 
Сообщения: 337
Зарегистрирован: 12.12.2001 (Ср) 12:59
Откуда: Russia, Saint-Petersburg

Сообщение ism » 13.02.2005 (Вс) 11:59

Обвинения в плагиате бессмысленны, я даже знаю как разрегистрировать, надо заменить
Код: Выделить всё
hProc = GetProcAddress(hLib, "DllRegisterServer")

на
Код: Выделить всё
hProc = GetProcAddress(hLib, "DllUnregisterServer")


можно юзать просто:
Код: Выделить всё
Declare Function RegTestDLL Lib "Test.DLL" Alias _
"DllRegisterServer" () As Long

но так замучиешся их перечислять

А дату и подделать можно...

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

Сообщение tyomitch » 13.02.2005 (Вс) 13:46

Да я не спорю, что ты всё знаешь. Просто далеко не ты всё это изобрёл - этим трюкам лет 7.

Ответь на другой вопрос: в IDE твой метод неизбежно выдаёт ошибку "Bad DLL calling convention", которую тебе наверняка приходится перехватывать. А вот как сделать без этой ошибки?
Изображение

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

Сообщение GSerg » 13.02.2005 (Вс) 15:45

Тёмыч, having fun? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.02.2005 (Вс) 18:23

Serega.I писал(а):А дату и подделать можно...

Забавно :)
Ты обвиняешь Google Groups в том, что они сперли у тебя алгоритм и выдают за свой?
Тогда, до кучи, туда же запиши и API-Guide, потому что у них пример практически такой же.
Lasciate ogni speranza, voi ch'entrate.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 13.02.2005 (Вс) 19:14

Вот народу неемется :)
Есть же отличный инсталлер Inno Installer, и ОСХы регистрирует замечательно, и вообще все со вкусом. Нет, я не агитирую, как подумали, некоторые несознательные личности, я показываю относительно простой путь решения проблемы с доставкой софта пользователю.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 14.02.2005 (Пн) 12:20

FAKK2 писал(а):Вот народу неемется :)
Есть же отличный инсталлер Inno Installer, и ОСХы регистрирует замечательно, и вообще все со вкусом. Нет, я не агитирую, как подумали, некоторые несознательные личности, я показываю относительно простой путь решения проблемы с доставкой софта пользователю.


Не, ну конечно можно использовать Inno Setup, но тема то про автозапуск диска :wink:

dimix
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 174
Зарегистрирован: 08.02.2005 (Вт) 22:47

Сообщение dimix » 14.02.2005 (Пн) 18:51

Вот-вот. И вообще, форум-то не про использование софта сторонних разработчиков. Давайте еще пообсуждаем, что VB нафиг не нужен, все уже давно кем-то написано и скомпилировано.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 14.02.2005 (Пн) 18:59

Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.


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

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

Сейчас этот форум просматривают: Google-бот, Mail.ru [бот] и гости: 19

    TopList