Показать полную графическую версию : [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
FlatX007
28-08-2009, 21:51
BlackSelf »
Так тоже не работает ... =)
получилось только так (с третей попытки)
[UninstallRun]
Filename: "{cmd}"; Parameters: "/c REG DELETE HKEY_CURRENT_USER\Software\Launcher /f"
Делаю инсталлятор для игры. Необходимо, чтобы помимо установки основных файлов в директорию, указанную юзером, в корень любого логического диска распаковывалась папка с доп. файлами (аудио, необходимы для nocd). Диск для установки должен либо автоматически определяться из пути установки (константы соответсвующей я не нашел, а как получить его из {app} - не знаю), либо с помощью дополнительного диалога сразу после выбора пути установки - например, выпадающее меню со списком логических дисков. В принципе, оба варианта приемлемы. Можно ли это реализовать стандартными средствами, или надо писать скрипт на паскале (ни разу не пробовал, да и с языком плохо знаком) ? Заранее спасибо.
BlackSelf
29-08-2009, 02:48
Def191, вот константа для распаковки в корень системного диска: {sd}
Диск для установки должен либо автоматически определяться из пути установки (константы соответсвующей я не нашел, а как получить его из {app} - не знаю) »
Можно вот так: {drive:{app}}
BlackSelf, спасибо. То, что нужно.
AjaX_too
29-08-2009, 20:28
помогите реализовать следующее:
в установщике нужно сделать страничку с двумя регистрами, при выборе одного - добавляеться одно значение в реестр, при выборе другого - второе (или не добавляется вообще). Как добавить данные в реестр я знаю, мне нужна лишь логика реализации регистров. Спасибо.
в установщике нужно сделать страничку с двумя регистрами »
что вы подразумеваете под словом регистр?
AjaX_too
29-08-2009, 21:00
что вы подразумеваете под словом регистр? »
забыл название, есть чекбоксы где можно несколько выбрать галок, а есть вроде радиокнопка, где можно выбрать один вариант (по нубски кружок с точкой вообщем :))
AjaX_too, можно использовать страницу с дополнительными задачами, т.е. секция [Tasks]
[Tasks]
Name: chk1; Description: Ключ 1; GroupDescription: Дополнительно:
Name: chk2; Description: Ключ 2; GroupDescription: Дополнительно:
[Registry]
Root: HKCU; Subkey: Software\My Company1; Tasks: chk1; Flags: uninsdeletekeyifempty
Root: HKCU; Subkey: Software\My Company2; Tasks: chk2; Flags: uninsdeletekeyifempty
AjaX_too
29-08-2009, 22:17
Serega, в принципе можно и так, только нужны не чекбоксы а радиобутоны.
нужно вот так:
нужно вот так »
добавьте для каждого элемента в секции [Tasks] флаг exclusive, т.е.:
[Tasks]
Name: chk1; Description: Ключ 1; GroupDescription: Дополнительно:; Flags: exclusive
Name: chk2; Description: Ключ 2; GroupDescription: Дополнительно:; Flags: exclusive
AjaX_too
29-08-2009, 23:35
отлично, спасибо!
pa60t9ra
30-08-2009, 17:39
Всем привет. На данный момент не атк много вопросов. :)
1. Как поставить фоновую музыку, чтобы проигрывало во время установки приложения.
2. Почему не все отображается в меню пуск, что прописано в секции [Icons]? А что и прописано. то не в той последовательности, как в самой секции.
1. Как поставить фоновую музыку, чтобы проигрывало во время установки приложения. »
Воспользуйтесь Inno Setup GameScript Generator, ссылка есть в шапке темы.
Почему не все отображается в меню пуск, что прописано в секции [Icons]? »
Ошибка в 24 строке... скрипт покажите.
pa60t9ra
30-08-2009, 20:07
[Icons]
Name: "{group}\GreylinkDC++"; Filename: "{app}\greylink.exe"; Components: "all";
Name: "{group}\{cm:UninstallProgram,GreyLinkDC++}"; Filename: "{uninstallexe}"; Components: "all";
Name: "{group}\Help\"; Filename: "{app}\Help\FAQ.rtf"; Components: "all";
Name: "{group}\Help\"; Filename: "{app}\Help\Nastrojka DC++.chm"; Components: "all";
Name: "{group}\SSearch\"; Filename: "{app}\SSearch\SSearch.exe"; Components: "all";
Name: "{group}\SSearch\"; Filename: "{app}\SSearch\Hom\p_ssearch.html"; Components: "all";
Name: "{userdesktop}\GreylinkDC++"; Filename: "{app}\greylink.exe"; IconFilename: "{app}\greylink.exe"; Components: "all"; Tasks: "desktopicon";
Name: "{commonstartup}\GreylinkDC++"; Filename: "{app}\greylink.exe"; Components: "all"; Tasks: "AutoLaunch";
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\greylink.exe"; Filename: "{app}\greylink.exe"; Components: "all"; Tasks: "quicklaunchicon";
Некоторые в принципе то и отображаются-но абсолютно без имен...
pa60t9ra, основная ошибка, в том, что одинаковых имён у ярлыков быть не может, т.е. один ярлык перезапишет другой с таким же именем. Так же нужно использовать WorkingDir, она говорит о папке расположения файла на который ссылается ярлык.
[Icons]
Name: {group}\GreylinkDC++; Filename: {app}\greylink.exe; WorkingDir: {app}; Components: all
Name: {group}\{cm:UninstallProgram,GreyLinkDC++}; Filename: {uninstallexe}; WorkingDir: {app}; Components: all
Name: {group}\Help_FAQ; Filename: {app}\Help\FAQ.rtf; WorkingDir: {app}\Help; Components: all
Name: {group}\Help_Nastrojka; Filename: {app}\Help\Nastrojka DC++.chm; WorkingDir: {app}\Help; Components: all
Name: {group}\SSearch; Filename: {app}\SSearch\SSearch.exe; WorkingDir: {app}\SSearch; Components: all
Name: {group}\SSearch_P; Filename: {app}\SSearch\Hom\p_ssearch.html; WorkingDir: {app}\SSearch\Hom; Components: all
Name: {userdesktop}\GreylinkDC++; Filename: {app}\greylink.exe; WorkingDir: {app}; IconFilename: {app}\greylink.exe; Components: all; Tasks: desktopicon
Name: {commonstartup}\GreylinkDC++; Filename: {app}\greylink.exe; WorkingDir: {app}; Components: all; Tasks: AutoLaunch
Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\Greylink; Filename: {app}\greylink.exe; WorkingDir: {app}; Components: all; Tasks: quicklaunchicon
pa60t9ra
31-08-2009, 20:51
Когда устанавливается программа, то сам мастер не прекращает работу до тех пор, пока потом саму прогу не закроешь.. С чем это связано?:(
И как сделать. чтобы в конце мастера установки появилсь окно с выбором запускаемых файлов? В частности не все файлы ехе-шные.
Когда устанавливается программа, то сам мастер не прекращает работу до тех пор, пока потом саму прогу не закроешь.. С чем это связано? »
Опять приходится гадать...
Видимо в секции [Run] вы прописали запуск программы, без запроса об этом у пользователя и поставили флаг waituntilidle. Подробнее об этом флаге, можете прочитать в справке.
И как сделать. чтобы в конце мастера установки появилсь окно с выбором запускаемых файлов? »
Используйте в секции [Run] для файла котрый предлагается запустить флаг postinstall
В частности не все файлы ехе-шные. »
К этим файлам прибавьте флаг shellexec
Raf-9600
31-08-2009, 21:57
А реально ли сделать так, чтоб допустим если выбран компонент Steam, то:
1. Инсталлятор предлагал установиться в {reg:HKLM\SOFTWARE\Valve\Steam,InstallPath|{pf}\ARPS}
2. Инсталлятор не предлагал (и не создавал) папку в меню Пуск.
3. Инсталлятор не создавал деинсталлятора.
А если выбран NoSteam, то:
1. Инсталлятор предлагал установиться в {pf}\Half-Life 2
2. Инсталлятор предлагал создание директории "Half-Life 2" в меню Пуск.
3. Инсталлятор создавал деинсталлятора. (после инсталляции)
А реально ли сделать так »
Я думаю, да.
1. В секции [Setup] в DefaultDirName делаете ссылку на функцию = {code:MyFunc}, которая возвращает путь в зависимости от выбранного компонента IsComponentSelected;
2. Думаю, придётся создавать страницу и в зависимости от выбора компонента показывать её или нет;
3. В секции [Setup] в Uninstallable делаете ссылку на функцию = {code:MyFunc2}, которая возвращает True или False в зависимости от выбранного компонента IsComponentSelected.
Raf-9600
31-08-2009, 23:19
Serega, а Вы бы немогли бы написать скрипт, для реализации этого всего? :)
Знаю что наглею, но просто я не шарю в языках программирования... :blush2:
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.