Дата публикации статьи: 24.02.2006 19:45

Как создавать автоматические патчи на Visual Basic

Исходный код к статье
Обсудить в форуме

  1. Сначала Вам надо скачать и установить программу CreateInstall Pro с сайта vladislav-e.narod.ru (там находится полная русская версия)
  2. Нужен Microsoft Visual Basic (хотя если Вы читаете этот урок, значит он у Вас есть)

Итак, заходите в VB, выбирайте Standart EXE и пишите первую версию программы. Написали? Теперь подключаем модуль(приложен в архиве к статье): (Add->Add File) Затем кликаем по форме два раза и пишем в процедуру вот это:

Private Sub Form_Load()
Dim q As String
q = App.Path
SetKeyValue HKEY_LOCAL_MACHINE, "Software", _
"InstallDir", q, REG_SZ SetKeyValue HKEY_LOCAL_MACHINE, "Software", _
"Version", "1.0", REG_SZ End Sub

Теперь разберём что здесь написано:
Записываем запись в реестр(ф-ия SetKeyValue), далее идёт ветвь реестра(HKEY_LOCAL_MACHINE), потом подключ(Software), затем название строкового параметра(у нас он InstallDir, а можно писать любой), далее значение строкового параметра(у нас это переменная q, т.к. нам надо записать путь к программе) и наконец идёт тип параметра(REG_SZ). Во второй строчке идёт тоже самое, но заметьте, вместо "InstallDir" мы написали "Version", а вместо q поставили "1.0", т.е. этот строковой параметр будет определять версию программы.
Теперь вам следует откомпилировать этот проект.

Пишем новую версию проги и исправляем строчку:

SetKeyValue HKEY_LOCAL_MACHINE, "Software", _
"Version", "1.0", REG_SZ

на

SetKeyValue HKEY_LOCAL_MACHINE, "Software", _
"Version", "1.1", REG_SZ

Таким образом, при запуске программы в реестре будет записано, что это не версия 1.0, а версия 1.1. Всё, осталось откомпилировать файл.

Переходим к самому главному, т.е. написанию "автоматического патчера". Если не понятно, что это такое, занчит поймёте попозже.
Сначала подключаем модуль, который мы писали в начале, для этого нажимайте Add->Add File и выбирайте наш модуль(приложен в архиве к статье).
Теперь на форму кинь 3 текстбокса, две кнопки и один лэйбл. Два текстбокса(1 и 3)надо скрыть, поставив им свойство Visible=False. Надо уже писать код для кнопки УСТАНОВИТЬ ОБНОВЛЕНИЕ и ВЫХОД:

Private Sub Command1_Click()
Text1.Text = QueryValue(HKEY_LOCAL_MACHINE, "Software", "InstallDir")
Text3.Text = QueryValue(HKEY_LOCAL_MACHINE, "Software", "Version")
If Text1.Text <> "" And Text3.Text <> "" Then
If Text3.Text = "1.0" Then
SetKeyValue HKEY_LOCAL_MACHINE, "Software", _
"Version", "1.1", REG_SZ FileCopy "icb.exe", Text1.Text + "\icb.exe" but = MsgBox("Обновление успешно установлено!!!", _
vbInformation + 0, "Обновление установлено!") If but = vbOK Then End End If Else MsgBox "У Вас установлена другая версия программы", _
vbExclamation + 0, "Ошибка" End If End If If Text1.Text = "" Or Text3.Text = "" Then sar = MsgBox( _
"Обновление не установлено! Пожалуйста, переустановите программу!" _
, vbExclamation + 0, "Ошибка") If sar = vbOK Then End End If End If End Sub Private Sub Command2_Click() End End Sub

Разбираемся: QueryValue - функция чтения из строкового параметра, с помощью неё мы читаем строковой параметр "InstallDir", который записали в 1-ой версии проги. А в Text3 мы читаем параметр "Version".
Дальше проверяем, если эти текстбоксы не пустые значит проверяем та ли это версия, если та, то изменяем запись в реестре на 1.1
Потом идёт функция копирования файла в ту папку, которую мы считали из реестра(Text1.Text)+имя файла(icb.exe), а затем идёт сообщение об успешном окончании, и если юзер нажмёт кнопку OK, тогда "патчер" закроется. А дальше, если text1 и text3 пустые, тогда выйдет сообщение об ошибке , и при нажатии OK "патчер" закроется.
А также при нажатии на ВЫХОД "патчер" закроется. Теперь откомпилируйте файл.

Всё, вроде основная чать готова, теперь будем пользоваться CreateInstall Pro и WinRar.
Заходим в CreateInstall Pro и называем проект, затем делаете то, что Вам надо на вкладке "Проект" и переходите на вкладку "Файлы", там жмёте +, даёте имя группы и выбираете файл 1-ой версии. Потом идёте на вкладку "Мастер"->"Распаковка", жмёте + выбираете Вашу группу файлов, которую Вы создали, настраиваете всё остальное и идёте в "В конце".
Там пишите имя файла программы(он будет запускаться в конце установки, чтобы сделать записи в реестре). Затем жмёте "Деинсталляция", та жмите + и в стоке "Что удалять" выберите "Реестр". Затем "Корневой ключ" выберите "HKEY_LOCAL_MACHINE", а в строке "Подключ реестра" напишите "Software", т.е. там где у нас храняться записи. "Имя значения" в первый раз напишите "InstallDir", а во второй "Version"(Вы должны добавать две записи). Объясняю, при удалении программы наши записи из реестра тоже удаляться.
Теперь выберите файлы "Патчер" и прогу версии 1.1 и нажмите "Добавить в архив...". Метод сжатия ставьте "Максимальный", и поставьте галочку на "Создать SFX-архив" и "Заблокировать архив". Затем идите на вкладку "Дополнительно" и жмите "Параметры SFX...". Там в строке "Выполнить после распаковки" напишите имя "патчера". Затем идём на вкладку "Режимы" и ставим галочку на "Распаковать во временную папку". Вот и всё, теперь создавайте SFX-архив. Конечно можно(даже нужно) сделать хороший дизайн для инсталляторов, патчеров и т.д. Это же я писал так для примера.

Автор: Кирилл Букаев WWW: www.kibsoft.al.ru