Войти

Показать полную графическую версию : [архив] Скрипты Inno Setup. Помощь и советы [часть 2]


Страниц : 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

FlatX007
28-08-2009, 21:51
BlackSelf »

Так тоже не работает ... =)

получилось только так (с третей попытки)


[UninstallRun]
Filename: "{cmd}"; Parameters: "/c REG DELETE HKEY_CURRENT_USER\Software\Launcher /f"

Def191
29-08-2009, 02:34
Делаю инсталлятор для игры. Необходимо, чтобы помимо установки основных файлов в директорию, указанную юзером, в корень любого логического диска распаковывалась папка с доп. файлами (аудио, необходимы для nocd). Диск для установки должен либо автоматически определяться из пути установки (константы соответсвующей я не нашел, а как получить его из {app} - не знаю), либо с помощью дополнительного диалога сразу после выбора пути установки - например, выпадающее меню со списком логических дисков. В принципе, оба варианта приемлемы. Можно ли это реализовать стандартными средствами, или надо писать скрипт на паскале (ни разу не пробовал, да и с языком плохо знаком) ? Заранее спасибо.

BlackSelf
29-08-2009, 02:48
Def191, вот константа для распаковки в корень системного диска: {sd}
Диск для установки должен либо автоматически определяться из пути установки (константы соответсвующей я не нашел, а как получить его из {app} - не знаю) »
Можно вот так: {drive:{app}}

Def191
29-08-2009, 17:43
BlackSelf, спасибо. То, что нужно.

AjaX_too
29-08-2009, 20:28
помогите реализовать следующее:

в установщике нужно сделать страничку с двумя регистрами, при выборе одного - добавляеться одно значение в реестр, при выборе другого - второе (или не добавляется вообще). Как добавить данные в реестр я знаю, мне нужна лишь логика реализации регистров. Спасибо.

Serega
29-08-2009, 20:31
в установщике нужно сделать страничку с двумя регистрами »
что вы подразумеваете под словом регистр?

AjaX_too
29-08-2009, 21:00
что вы подразумеваете под словом регистр? »

забыл название, есть чекбоксы где можно несколько выбрать галок, а есть вроде радиокнопка, где можно выбрать один вариант (по нубски кружок с точкой вообщем :))

Serega
29-08-2009, 21:37
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, в принципе можно и так, только нужны не чекбоксы а радиобутоны.
нужно вот так:

Serega
29-08-2009, 23:29
нужно вот так »
добавьте для каждого элемента в секции [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]? А что и прописано. то не в той последовательности, как в самой секции.

Serega
30-08-2009, 19:09
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";


Некоторые в принципе то и отображаются-но абсолютно без имен...

Serega
30-08-2009, 20:26
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
Когда устанавливается программа, то сам мастер не прекращает работу до тех пор, пока потом саму прогу не закроешь.. С чем это связано?:(
И как сделать. чтобы в конце мастера установки появилсь окно с выбором запускаемых файлов? В частности не все файлы ехе-шные.

Serega
31-08-2009, 21:02
Когда устанавливается программа, то сам мастер не прекращает работу до тех пор, пока потом саму прогу не закроешь.. С чем это связано? »
Опять приходится гадать...
Видимо в секции [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. Инсталлятор создавал деинсталлятора. (после инсталляции)

Serega
31-08-2009, 23:04
А реально ли сделать так »
Я думаю, да.
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