Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: Kindly
Дата сообщения: 03.10.2006 11:07
DroN_S
[Code]
//Все просто - взят пример из Inno Setup
function InitializeSetup(): Boolean;
var
ResultCode: Integer;
ResultStr:string;
begin
Result:=True;
begin
//Считываем строку с версией программы
If RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\My Program_is1', 'DisplayName', ResultStr)
then
begin
//Если строка равна указанной строке, то выводим сообщение
If ResultStr='My Program 1.5'
then
begin
ResultStr:=RemoveQuotes(ResultStr);
//Если нажимаем OK - запускаем деинсталляцию, если Отмена - закрываем инсталлятор.
if MsgBox('Обнаружена установленная ''' + ResultStr + '''.'#13#13'Для установки новой версии программы следует удалить текущую.'#13#13'OK - удалить программу.'#13#13'Отмена - покинуть инсталлятор.', mbInformation, MB_OKCANCEL) = idCANCEL
then
begin
Result:=False;
end
else
If RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\My Program_is1', 'UninstallString', ResultStr)
then
begin
If ResultStr<>''
then
begin
ResultStr:=RemoveQuotes(ResultStr);
if not Exec(ResultStr, '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode)
then
MsgBox('Ошибка удаления. ' #13#13 '' + SysErrorMessage(ResultCode) + '.' #13#13 'Вероятно, деинсталлятор был перемещен, удален или переименован.', mbError, MB_OK);
end;
end;
end;
end;
end;
end;

Это? Или опять не то?
Автор: JKSerGEAnt
Дата сообщения: 03.10.2006 15:36

Цитата:
Sample!!!! Please!!!

Там же все так просто... программистом быть совершенно не требуется, поверь. Да и сам будешь лучше разбираться в предмете, если сам попробуешь.
Автор: DroN_S
Дата сообщения: 03.10.2006 17:25
Kindly
коряво но пойдёт....
просто спрашивается удалить текущую версию, да или нет, выбираешь да, деинсталлятор спраштвает Вы точно хотите удалить? бред ведь а так всё замечательно
Автор: AtotIK
Дата сообщения: 04.10.2006 09:39
Kindly

Всё сделал...Показвываю...

1. Восстановление файлов:

[Code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
ResultCode: Integer;
begin
case CurUninstallStep of
usPostUninstall:
begin
Exec(ExpandConstant('{app}\Backup\ToEng.bat'), '', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
end;
end;
end;

2. Предупреждение о удалении:

[Registry]
Root: HKLM; Subkey: "Software\AtotIK\_Prog_"; ValueName: "Backup"; ValueType: String; ValueData: "1"; Flags: uninsdeletekey; Tasks: "backup";

[Code]
function InitializeUninstall(): Boolean;
var
ResultStr:string;
begin
Result:=True;
begin
If not RegQueryStringValue(HKLM, 'SOFTWARE\AtotIK\_Prog_', 'Backup', ResultStr) then
begin
if MsgBox('Программа удаления обнаружила, что Вы не делали резервные копии оригинальных файлов при установке обновления программы.'#13#13'Удаление обновления приведёт к неработоспособности программы!'#13#13'Продолжить?', mbError, MB_YESNO) = idNo then
Result:=False;
end;
end;
end;

З.Ы. Тока как отключить сообщение титпа "Удалить прогу?" когда я нажимаю "Да" (получается что приходится нажимать 1 раз на "Да" - потом появляется ещё 1 окошко "Вы действительно хотите удалить программу?" и тоже "Да")?
Автор: Kindly
Дата сообщения: 05.10.2006 11:18
DroN_S
коряво-некоряво, а как объяснил, так примерно ответ и получил. Если не надо сообщения "Вы действительно хотите удалить..." так нужно было и сказать.
Автор: AtotIK
Дата сообщения: 05.10.2006 12:50
Во-во...Мне тоже это надо...
Автор: DroN_S
Дата сообщения: 05.10.2006 13:15

Цитата:
Если не надо сообщения "Вы действительно хотите удалить..." так нужно было и сказать.

говорю сейчас!!!!
как убрать?
Автор: Xom9I4oK
Дата сообщения: 08.10.2006 02:34
Помогите плз )). Вот скрин http://www.hidebehind.com/AB9A1D2A . Мне надо, чтобы Подпункт1 нельзя было выбрать, не поставив чекбокс на Пункте1. Вот кусок кода, который надо доработать:

Цитата:
[Tasks]
Name: Punkt1; Description: Пункт1; GroupDescription: Устанавливать:
Name: Punkt1\Podpunkt1; Description: Подпункт1; GroupDescription: Какая версия игры у Вас установлена? Если у Вас другая версия, то не ставьте данный флажок.; Flags: unchecked;
Name: Punkt2; Description: Пункт2; GroupDescription: Устанавливать:

P.S. Насколько я понял тут нужно писать скрипт, но если бы я знал что делать, то не спрашивал бы )).
Автор: SyCraft
Дата сообщения: 08.10.2006 09:22
ВопроС:
Нужно что бы инсталлер записывал в реестр ключи типа:

Цитата:
"\"C:\\Program Files\\Opera AC\\Opera.exe\""

но путь получал из переменной {app}
т.е. как заставить инсталлер ставить не одну \ а 2 ?
Зарание спасибо!
Автор: mukca
Дата сообщения: 08.10.2006 10:29
SyCraft
пример

Цитата:
Root: HKLM; SubKey: SOFTWARE\ISSoft\NFO View for TC; ValueType: string; ValueName: LangFile; ValueData: {app}\plugins\Lister\nfoview\Lang\Rus.lng; Components: plug\lister\nfoview
Root: HKLM; SubKey: SOFTWARE\ISSoft\NFO View for TC; ValueType: string; ValueName: CTPath; ValueData: {app}\plugins\Lister\nfoview\Profiles\; Components: plug\lister\nfoview
Root: HKLM; SubKey: SOFTWARE\ISSoft\NFO View for TC; ValueType: string; ValueName: LPath; ValueData: {app}\plugins\Lister\nfoview\Lang\; Components: plug\lister\nfoview

у меня на версии 5/1/x работал. без проблем.
он сам дописывал //
Автор: Xom9I4oK
Дата сообщения: 08.10.2006 11:29
Вобщем я сам разобрался в проблеме - было позно и я ступил немного ((. Теперь стоит задачка посложнее. Есть ветка реестра

Цитата:
[HKEY_LOCAL_MACHINE\SOFTWARE\Croteam\SeriousSam2]
"Path"="$d:/games/Serious Sam 2/"

Нужно чтобы инсталлер по ней определял сам путь к игре. Думаю не надо объяснять что тут все проще простого, если бы не значок доллара, который все портит ((.
Автор: SyCraft
Дата сообщения: 08.10.2006 18:41
mukca
Спасибо!
Автор: mukca
Дата сообщения: 08.10.2006 21:05
SyCraft
че работает??? ?!
Автор: Xom9I4oK
Дата сообщения: 09.10.2006 10:02
Снова сам разобрался - пришлось вспоминать Паскаль )). Кстати в руководсте 4-й версии был дан один скрип "...если мы вставляем фоновое изображение вышеупомянутым способом, то сначала «рисуется» форма (по умолчанию синего цвета), а затем только после этого загружается в нее изображение. Получается, что нам может это «мозолить глаза». Для эстетов рекомендуется следующий вариант: ... "
После вставки этого кода пропадает форматирование в этом файле "InfoBeforeFile=Readme.rtf".
Автор: AtotIK
Дата сообщения: 09.10.2006 13:08
Ну так пользуйся вторых вариантом...;)
Автор: Kindly
Дата сообщения: 10.10.2006 17:10
DroN_S
убрать так - вставить параметр /silent в функцию Exec (между первых кавычек).
Автор: AtotIK
Дата сообщения: 11.10.2006 10:26
Xom9I4oK
Э-э-э-э...Во втором тоже не работает
Автор: VitK
Дата сообщения: 11.10.2006 12:37
Распаковал дистрибутив при помощи IS Unpacker Explorer, пытаюсь затем его назад скомпилировать, но сабж доходит до строк MinVersion: 4.1.1998,4.0.1381 Service Pack 6
и показывает ошибку, когда такие строки удаляешь - нормально рулит дальше.

В чем здесь проблема? Как разрулить ее?

ЗЫ. Использовал для компиляции последнюю версию сабжа
Автор: boss911
Дата сообщения: 12.10.2006 03:23
Вышел Inno Setup 5.1.8

Незнаите, почему ISTool отстает от версии компилятора, разработка хоть его не заглохла, я без него как без рук!?
Автор: JKSerGEAnt
Дата сообщения: 12.10.2006 12:48
boss911

Цитата:
Незнаите, почему ISTool отстает от версии компилятора

Потому что в Inno ничего особо не меняется.


Цитата:
Inno Setup 5.1.8

Почти в 2 раза возросла скорость компиляции на lzma всем ставить в обязательном порядке.
Автор: alexist
Дата сообщения: 13.10.2006 07:56
Помогите решить два вопроса:

1) Как можно в время выполнения получить перечень файлов включенных в инсталатор и их версии?
В Setup Factory такова возможность есть, но жизнь требует перейти на Inno Setup.

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

2) Имею заранее подготовленные НЕСКОЛЬКО каталогов-шаблонов (при установке имеют разное месторасположение), в которых лежат новые файлы-источники для установки.
В секции [FILES] прописываю что-то вроде.

Source: {#MySourceDir}\DIR1\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
Source: {#MySourceDir}\DIR2\*; DestDir: {DIR2}; Flags: ignoreversion recursesubdirs createallsubdirs
Source: {#MySourceDir}\DIR3\*; DestDir: {DIR3}; Flags: ignoreversion recursesubdirs createallsubdirs

Так вот, НЕ ВСЕГДА каждый из каталогов (DIR2, DIR3 и т.д.) будет содержать файлы для обновления, но компилятор обязательно их требует этого, раз уж указал, что обновлять все содержимое этих каталогов.

Можно ли это как-то обойти, чтобы руками постоянно скрипт не править?
Автор: Denis_Kokyev
Дата сообщения: 13.10.2006 08:48
Подскажите , пожалуйста, столкнулся с вопросом, на который ответ не
могу никак получить при помощи хелпов. Идея в удобном подключении
курсорчиков с возможностью восстановления предыдущих настроек. Как я
подумал это сделать:
1. Переписываю курсорчики в нужное мне место.
2. Сохраняю в reg файл ветку реестра HKCU\Control Panel\Cursors
3. Вношу изменения в реестр для подключения курсорчиков
4. При деинсталяции стираются курсорчики, запускается reg файл с
сохраненными данными о предидущих курсорчиках, удаляется это reg файл.


Код:
[Types]
Name: "mine"; Description: "Курсорчики БиЛайн";

[Files]
Source: "C:\567\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs;

[Run]
;Filename: {sys}\dllcache\regedit.exe; Parameters: -EA {win}\cursors\beeline\backup.reg "HKEY_CURRENT_USER\Control Panel\Cursors"; WorkingDir: {sys}; StatusMsg: Внесение изменений в реестр...;
Filename: {win}\cursors\beeline\backup.bat

[Registry]
Root: HKCU; SubKey: Control Panel\Cursors; ValueType: string; ValueName: ; ValueData: BeeLine
...
[UninstallRun]
Filename: {sys}\dllcache\regedit.exe; Parameters: -s {win}\cursors\beeline\backup.reg; WorkingDir: {sys}; StatusMsg: Внесение изменений в реестр...;

[UninstallDelete]
Type: files; Name: "{win}\cursors\beeline\*.reg"
Автор: andremar
Дата сообщения: 13.10.2006 11:01
плиз поделитесь руссификатором для ScriptMaker 5.1.6.9
ссылки в шапке не работают
Автор: alexist
Дата сообщения: 13.10.2006 11:30
andremar
В шапке три источника руссификатора и все рабочие.
Присмотрись внимательно к линкам.
Автор: DRIVER
Дата сообщения: 13.10.2006 14:53
Подскажите пожалуйста. Ситуация такова. ПРИМЕР: Я создаю дистрибутив, а потом выпускаю к нему патчи под номерами 1, 2, 3 ну и т.д.. Дистрибутив вносит в реестр запись, дату его создания. При установке патча, эта запись меняется на дату его (патча) создания. Как сделать так, чтобы при установке патча №3 установщик сказал какие патчи нужно установить. В нашем случае 1 и 2.
Автор: FLIP87
Дата сообщения: 15.10.2006 08:21
Народ, не могу считать из INI файла строку:

Код: Filename: "{app}\Config.ini"; Section: "SECTION"; Key: "KEY"; String: "{code:GetIniString(const SECTION2, KEY2, Default, Config.ini: String)}"
Автор: SerIg
Дата сообщения: 16.10.2006 13:57
Извиняюсь за вопрос, если он повторялася!
А русификатор есть к InnoSetup ?
Автор: KeyGen
Дата сообщения: 16.10.2006 14:03
SerIg


Kindly на MsiLab.net в комментариях к Inno Setup написал:


Цитата:
Спасибо. Но с русификацией начинаю завязывать, поэтому русификатора для новой версии от меня не будет.


Да и там сложного нет ничего (можно и без русского), обычный тектовый редактор + компилятор.

Есть ISTool или ScriptMaker (они русифицированы) - вот там точно без знания английского не обойтись.
Автор: Nagual
Дата сообщения: 17.10.2006 09:15
Привет, люди!
Я в танке, только недавно узнал об этом топике, всем респект!
Помогите новичку разобраться.
Может это уже и было, но не нашел, прочитав выборочно половину топика.

Интересует такой вопрос:
как в инсталляхе добавить проверку раздела
[HKEY_CURRENT_USER\Software\xxx Software]
или ключа реестра
[HKEY_LOCAL_MACHINE\SOFTWARE\xxx Software\xxx\x.0]
"xxxProgramFolder"="x:\\xxx\\xxx Software\\xxx"

и, при его существовании, добавить в реестр пару ключей такого вида:
[HKEY_CURRENT_USER\Software\ххх Software\ххх Program\Settings\xxx]
"Name"="x:\\xxx\\xxx Software\\xxx\\xxx.exe"
"Perform"=dword:00000001

Спасибо
Автор: Xom9I4oK
Дата сообщения: 20.10.2006 22:08
ISTool обновилась до 5.1.8 _http://www.istool.org/default.aspx/downloads

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: ICONS


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.