Страница: 1 |
Страница: 1 |
Вопрос: Инсталлятор
Добавлено: 24.10.04 00:28
Автор вопроса: Kevin Mitnik | ICQ: 205559551
Как сделать инсталлятор для своей программы???
Ответы
Всего ответов: 15
Номер ответа: 1
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #1
Добавлено: 24.10.04 01:13
Я как раз только что написал себе инсталлятор.
Всё делается очень просто:
1. Делаешь ехе-файл, который должен уметь:
a) Доставать файлы из своих ресурсов
б) Создавать папки
в) Создавать файлы
г) Добавлять шрифты
д) Регистрировать компоненты в реесте
е) Позволять юзеру выбирать путь установки
ж) Позволять отменять сделанные шаги (preview-next)
з) Отображать процесс создания папок, файлов, ключей реестра
и) Запускать инсталлированную программу
к) Перезагружать систему
л) Поздравлять юзера с успешной инсталляцией
2. Берёшь на борт ехе-файла (он будет называться сетап.ехе), все файлы, которые необходимо включить в сетап. На борт - значит в ресурсы
3. Пишешь в ресурсах же скрипт (сценарий) установки, в соответствии с которым и будут создаваться папки, копироваться файлы из ресурсов на винт юзера, создаваться ключи в реестре. Программа должна уметь читать и выполнять твой скрипт
4. Компилируешь его вместе со своими файлами (которые в ресурсах) и наслаждаешься.
Маленькое примечание: программа не должна требовать для своей работы никаких посторонних компонентов (dll, ocx) и должна быть самодостаточной, т.е. должна работать на любой голой системе. В том числе и там, где нет msvbvm60.dll.
Ну и для уменьшения размера, можешь оформить его как sfx-архив.
Номер ответа: 2
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #2
Добавлено: 24.10.04 01:16
Ну, а если раздумаешь делать инсталлятор, возьми готовый, например: SGPro, InnoSetup, CreateInstall, Nuullsoft Installer или что-либо ещё
Номер ответа: 3
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #3
Добавлено: 24.10.04 01:17
кстати в ВБ уже есть встроенный инсталятор... только он глючный малость.... как решить его глюки ищи по форуму . все подробно обсуждалось и не раз.
Номер ответа: 4
Автор ответа:
Kevin Mitnik
ICQ: 205559551
Вопросов: 6
Ответов: 10
Профиль | | #4
Добавлено: 24.10.04 10:47
2cresta, пришли на мыло примерный код плз...
мне надо только чтобы копировались файлы, изменялось пара значений в регистре перезагружылось и на рабочий стол добавлялся ярлык....
Номер ответа: 5
Автор ответа:
someone
Вопросов: 215
Ответов: 1596
Web-сайт:
Профиль | | #5
Добавлено: 24.10.04 11:09
INNO SETUP
у меня есть ISX setup rus - то же самое только на русском, да весит много - 7 мб в зипе
Номер ответа: 6
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #6
Добавлено: 24.10.04 12:31
Kevin Mitnik
Если ты ожидал, что инсталлятор на VB написан, то разочарую тебя: инсталлятор сделал на ассемблере, чтобы его собрать, нужен пакет masm32 (ml.exe, rc.exe, link.exe и мож кое-какие ещё тулзы). Визуальной среды в сборке сетапа нет (Да и как можно впихнуть в 16 кБ-ную программу визуальную среду). Надо писать в файл .rc в определённой последовательности определённый сценарий. В соответствии с написаным сценарием будет компилироваться файл ресурсов, затем файл .obj, затем ехе файл, и затем в соответствии с этим же сценарием будет этот ехе выполняться.
Если будешь всё это изучать - вышлю.
Сам ещё всего толком не опробовал, мож какие баги есть, сегодня ночью только первый раз инсталлировал им. Правда сетап немаленький получился (ок.12 Мб) но вроде всё сработало. Но опять же, возможны подводные камни. Если с ассемблером напряг, то может быть лучше использовать что-нибудь другое.
Номер ответа: 7
Автор ответа:
Unheilig
ICQ: 336859855
Вопросов: 9
Ответов: 32
Web-сайт:
Профиль | | #7
Добавлено: 24.10.04 22:48
Вот ссылка на сайт http://www.codenet.ru/progr/vbasic/inst.php
на нём статья про то как сделать простенький инсталлер, при желании можно доработать.
Номер ответа: 8
Автор ответа:
Kevin Mitnik
ICQ: 205559551
Вопросов: 6
Ответов: 10
Профиль | | #8
Добавлено: 24.10.04 23:29
Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, _
lpSectorsPerCluster As Long, _
lpBytesPerSector As Long, _
lpNumberOfFreeClusters As Long, _
lpTtoalNumberOfClusters As Long) As Long
Private Sub Command1_Click()
On Error GoTo ree_
nd = InputBox("Введите имя директории", "Новая папка..."
If nd = "" Then Exit Sub
MkDir Dir1.Path & "\" & nd
Dir1.Refresh
Exit Sub
ree_:
MsgBox "Ошибка, однако.", 16, "Setup"
End Sub
Private Sub Command2_Click()
Form2.Show
End Sub
Private Sub Dir1_Change()
mDir = Dir1.Path
Label1.Caption = mDir ' Эту переменную загоняем в модуль как
' Public InsDir as String, она нам еще пригодится.
End Sub
Private Sub Drive1_Change()
Spaces = GetDiskFreeSpace(Mid$(Drive1.Drive, 1, 2), _
secpercl, bytespersec, numoffreecl, AllCl)
Dim l As Long
l = 1024 ^ 2
ss = bytespersec / l
fs = secpercl * ss * numoffreecl
fs = Format(fs, "0"
Label2.Caption = "Свободно на диске: " & fs & " MB"
Dir1.Path = Drive1.Drive
End Sub
Private Sub Form_Load() 'Извлекаем из ресурсов файл, и создаем ярлык.
ProgressBar1.Value = 20
Dim BinaryData() As Byte
BinaryData = LoadResData(101, "Files"
ProgressBar1.Value = 80
Open mDir & "\wininfo.exe" For Binary Access Write As #1
Put #1, 1, BinaryData
Close #1
ProgressBar1.Value = 98
'В английских форточках работает.
lngresult = fCreateShellLink("..\..\Desktop", "WinInfo", mDir & "\wininfo.exe", ""
ProgressBar1.Value = 100
Unload Me
frmFinish.Show
End Sub
Как указывать тут какие файлы копировать надо и куда..?
и почему у меня неработает fCreateShellLink??
Пишет: Sub or Function not defined
В чем проблема?
Номер ответа: 9
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #9
Добавлено: 25.10.04 00:28
fCreateShellLink надо декларировать, к тому же ты обращаешься к ней как к ф-ции из STKIT432.DLL, это старая dll, использовалась в VB4. Для VB6 есть VB6STKIT.DLL, ф-ция называется также, только параметров не 4, а 6. И сделать ярлык на рабочий стол она может тоже не всегда. В список Пуск>Программы - практически всегда делает, но это не очень нужно.
Номер ответа: 10
Автор ответа:
AASoft
Вопросов: 86
Ответов: 920
Профиль | | #10
Добавлено: 25.10.04 03:25
ili NSIS yuzaem......
Номер ответа: 11
Автор ответа:
AASoft
Вопросов: 86
Ответов: 920
Профиль | | #11
Добавлено: 25.10.04 03:25
ili NSIS yuzaem......
Номер ответа: 12
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #12
Добавлено: 26.10.04 14:51
зачем мучатся если есть готовые инсталяторы...
Номер ответа: 13
Автор ответа:
Kevin Mitnik
ICQ: 205559551
Вопросов: 6
Ответов: 10
Профиль | | #13
Добавлено: 26.10.04 16:30
2Barsik, //
Мне просто охото попробовать свой сделать...!
:_)
Номер ответа: 14
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #14
Добавлено: 26.10.04 16:40
О ярлыке: у меня так и не получилось через fCreateShellLink сделать ярлык. Ни в какую не хочет. Только через IShellLink interface, но это из VB недоступно.
Номер ответа: 15
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #15
Добавлено: 27.10.04 15:13
2Kevin Mitnik
умный в гору не пойдет, умный гору обойдет... это твой принцип???