Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]
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 а потом и сама программа.
Возможно ли такое, или может быть есть какие другие варианты?
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)
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 кнопки отмены
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;
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, они всё равно запускаются, и создаётся впечатление, что они по новой устанавливаются т.к конец установки, довольно долго завершается.
Может будут, какие другие варианты?
Devils Night, можно сделать проверку по реестру, но это сложновато
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.