Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: barsik.newmail.ru
 Профиль | | #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-сайт: 123
 Профиль | | #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-сайт: www.tarjaturunen.narod.ru
 Профиль | | #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-сайт: barsik.newmail.ru
 Профиль | | #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-сайт: barsik.newmail.ru
 Профиль | | #15
Добавлено: 27.10.04 15:13
2Kevin Mitnik
умный в гору не пойдет, умный гору обойдет... это твой принцип???

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам