Войти

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


Страниц : 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] 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188

Raf-9600
13-08-2011, 11:29
Ктонить подскажет, как правильно прописать совместимость к игре? Тоесть когда я выставляю так:

Root: HKU; Subkey: "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; ValueType: String; ValueName: "{app}\Diablo.exe"; ValueData: "WIN98 256COLOR 640X480 DISABLETHEMES DISABLEDWM HIGHDPIAWARE"; Components: Game\Diablo; MinVersion: 0,5.01.2600; Flags: Uninsdeletekey

То при установке в x64 винду, ключ создается в Software\Wow6432Node, а мне нужно чтоб он создавался именно там где я его прописал. Как это сделать, не включая в инсталляторе глобальный x64 режим?

El Sanchez
13-08-2011, 12:44
Root: HKU »
Raf-9600, неверный корневой куст, HKU - это HKEY_USERS, совместимость там не прописывается. Ну пусть даже и опечатались и имели в виду HKCU, но в HKCU\Software\Wow6432Node тоже совместимость не пишется, поэтому остается контекст машины HKLM - там совместимость в двух местах. Если хотите писать сразу в Software контекста машины и применить совместимость глобально, то:

Root: HKLM64; Subkey: "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; ValueType: String; ValueName: "{app}\Diablo.exe"; ValueData: "WIN98 256COLOR 640X480 DISABLETHEMES DISABLEDWM HIGHDPIAWARE"; Components: Game\Diablo; MinVersion: 0,5.01.2600; Flags: Uninsdeletekey;Check: IsWin64

Но я бы затронул только пользовательский контекст:

Root: HKCU; Subkey: "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; ValueType: String; ValueName: "{app}\Diablo.exe"; ValueData: "WIN98 256COLOR 640X480 DISABLETHEMES DISABLEDWM HIGHDPIAWARE"; Components: Game\Diablo; MinVersion: 0,5.01.2600; Flags: Uninsdeletekey

Raf-9600
13-08-2011, 16:07
У меня ещё два вопроса:
1. Можно ли как-то указать, чтоб файл устанавливался только если НЕ выбран определённый компонент?
2. Вот я, для переименования файлов использую батники, а можно ли без них, навпрямую, через cmd.exe все указывать? :)

R.i.m.s.k.y.
13-08-2011, 16:36
El Sanchez, я бы поставил HKCU32 или HKLM32, ну в зависимости откуда игра читает

El Sanchez
13-08-2011, 17:40
я бы поставил HKCU32 или HKLM32, ну в зависимости откуда игра читает »
R.i.m.s.k.y., да не игра, а винда будет оттуда данные о совместимости программ считывать. :) Если указать HKLM32, то запись будет произведена в куст Wow6432Node, что не требуется, да и не нужно, а HKCU32 эквивалентно HKCU.

Можно ли как-то указать, чтоб файл устанавливался только если НЕ выбран определённый компонент? »

[Files]
Source: test.txt; DestDir: {app}; Components: not ComponentName


для переименования файлов использую батники, а можно ли без них, навпрямую, через cmd.exe все указывать? »
Raf-9600, переименовывать можно на этапе установки:

[Files]
Source: {app}\old.txt; DestDir: {app}; DestName: new.txt

Либо в секции [Code], используя функцию RenameFile (см. справку). Но если нужно через cmd.exe, то:

[Run]
Filename: {cmd}; Parameters: "/c Ren ""{app}\old.txt"" ""new.txt"""

Raf-9600
13-08-2011, 18:16
Но если нужно через cmd.exe
Сенки, так гораздо удобнее :)

А вот касательно компонентов, проблемка.
Есть ли возможность прописать так, чтоб файл устанавливался если выбран компонент Game\Diablo\Englisch, но не устанавливался, если выбран Game\Diablo\Englisch\Crack ?

El Sanchez
13-08-2011, 20:07
Есть ли возможность прописать так, чтоб файл устанавливался если выбран компонент Game\Diablo\Englisch, но не устанавливался, если выбран Game\Diablo\Englisch\Crack ? »
В таком случае должна быть возможность выбора родительского компонента Game\Diablo\Englisch без одновременного выбора дочернего Game\Diablo\Englisch\Crack. Для этого на компонентах нужно проставить флаги:

[Components]
Name: Game\Diablo\Englisch; Description: blabla; Flags: checkablealone
Name: Game\Diablo\Englisch\Crack; Description: blablabla; Flags: dontinheritcheck

[Files]
Source: test.txt; DestDir: {app}; Components: Game\Diablo\Englisch and not Game\Diablo\Englisch\Crack

Devils Night
14-08-2011, 01:51
Как сделать, чтобы шла проверка?
Ситуация такая - перед установкой, инсталлятор проверяет наличие установленных в системе программ таких как: dotnetfx3_x86, vcredist_x86, xliveredist, umdf, wmfdist11 и wmpappcompat, если программы установлены, то начинается установка, если нет, то сначала устанавливаются dotnetfx3_x86, vcredist_x86, xliveredist, umdf, wmfdist11 и wmpappcompat а потом и сама программа.

Возможно ли такое, или может быть есть какие другие варианты?

Rikill
14-08-2011, 02:18
Devils Night, в тихом режиме эти программы сами делают проверку.

VASYAKRN
14-08-2011, 14:01
прикрутите к моему скрипту иконку папки на странице папки и меню пуск через ботву

скрипт (http://inno.at.ua/TMP/undercover_bratherhood_lite.7z)
иконка (http://inno.at.ua/TMP/2.png)

insombia
14-08-2011, 14:49
Помогите к скрипту (http://rghost.ru/17917001) прикрутить слайд-шоу как здесь (http://rghost.ru/17917091)

Rikill
14-08-2011, 14:57
VASYAKRN,
procedure InitializeWizard();
begin
ExtractTemporaryFile('иконка.bmp');
ExtractTemporaryFile('иконка на меню пуск.bmp');
WizardForm.SelectDirBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\иконка.bmp'));
WizardForm.SelectDirBitmapImage.AutoSize:=true;

WizardForm.SelectGroupBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\иконка на меню пуск.bmp'));
WizardForm.SelectGroupBitmapImage.AutoSize:=true;
end;
[hr]
А вам insombia сюда (http://narod.ru/disk/22510124000/isSlideShow%20v1.02.rar.html).

insombia
14-08-2011, 15:13
Rikillя это уже когда то использовал у меня пропал прогресс бар и были 2 кнопки отмены

Rikill
14-08-2011, 15:20
insombia, (facepalm) а может прочитаете документацию к isSlideShow??? Даже в гоговском инсталле прогресс бар внизу, потому что он не может быть на слайд шоу, слайд шоу как правило поверх всего.
Можно поиграться с этим, поставив true

WizardForm.ProgressGauge.visible:=false;

А это злополучная кнопа отмены, удалить строчки:

WizardForm.CancelButton.Left:=ScaleX(405);
WizardForm.CancelButton.Top:=ScaleY(325);

VASYAKRN
14-08-2011, 15:56
Rikill
Ти можеш сделать ето в скрипте
Я пробивал У МЕНЯ НЕ ПОЛУЧАЕТСЯ

insombia
14-08-2011, 16:15
VASYAKRN

procedure InitializeWizard1();
begin
ExtractTemporaryFile('иконка.bmp');
ExtractTemporaryFile('иконка на меню пуск.bmp');
WizardForm.SelectDirBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\иконка.bmp'));
WizardForm.SelectDirBitmapImage.AutoSize:=true;

WizardForm.SelectGroupBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\иконка на меню пуск.bmp'));
WizardForm.SelectGroupBitmapImage.AutoSize:=true;
end;

procedure InitializeWizard();
begin
InitializeWizard1();
end;

Rikill
14-08-2011, 16:15
insombia, это оно и есть.
[hr]
http://rghost.ru/17926531 лови, там надо было немного подумать просто.

insombia
14-08-2011, 16:20
Rikill то правильно он говорил что у него не получается вставить код я ему дал пример как его вставить

Devils Night
14-08-2011, 16:45
Devils Night, в тихом режиме эти программы сами делают проверку. »Немного не то, нужно чтобы сам инсталятор проверял на наличие установленных компонентов, а при тихой установке dotnetfx3_x86, vcredist_x86, xliveredist, они всё равно запускаются, и создаётся впечатление, что они по новой устанавливаются т.к конец установки, довольно долго завершается.
Может будут, какие другие варианты?

Rikill
14-08-2011, 16:46
Devils Night, можно сделать проверку по реестру, но это сложновато




© OSzone.net 2001-2012