Jump to content
Korean Random
EvilAlex

Создание инсталляторов для модпаков на базе Inno Setup

Recommended Posts

можно ли как то сделать так что бы читало файлы с русским названием к примеру на немецкой винде при извлечении из tmp?

Edited by Ekspoint

Share this post


Link to post

Short link
Share on other sites

всем привет есть вопрос. если выбран компанент то надо запустить программу которая в инностеап положена и запустить на завершении загрузки. не могу найти решении вопроса в интернете все мимо. может тут кто подскажет. спасибо.

Share this post


Link to post

Short link
Share on other sites

Привет знатокам!

 

Подскажите, плиз, можно ли и если да, то как организовать в инсталляторе InnoSetup (расширенная версия) такую логику:

 

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

Share this post


Link to post

Short link
Share on other sites

 

 

Привет знатокам! Подскажите, плиз, можно ли и если да, то как организовать в инсталляторе InnoSetup (расширенная версия) такую логику: Имеем два компонента чекбокса. При выборе первого компонента надо установить один набор файлов, при выборе второго - другой. То есть обрабатывать чекбоксы как эксклюзивные. Использование радиокнопок в моем случае не подходит по ряду причин.

 

Легко и просто делаешь один главный и последующие к нему подглавный подподгланый и т.д. и так же за ним второй главный2 и что к нему набор подглавный2 подподглавный2

Т.е. название галавный и главный2 разные и соответственно ветки разные... вот и все если не понял в скайп nowikbiz поясню...

вот например:

Name: BMP1; Description: "{cm:Mods42}"; Types: full compact custom; Flags: disablenouninstallwarning;

Name: BMP1\Battle_Assistant; Description: "{cm:Mods43}"; Types: full custom; Flags: disablenouninstallwarning;
Name: BMP1\Arty_Intuition; Description: "{cm:Mods44}"; Types: full custom; Flags: disablenouninstallwarning;

Name: BUK; Description: "{cm:Mods66}"; Types: full compact custom; Flags: disablenouninstallwarning;
Name: BUK\Chasi_v_angare; Description: "{cm:Mods67}"; Types: full compact custom; Flags: disablenouninstallwarning;
Name: BUK\11\Chasi_v_angare; Description: "{cm:Mods68}"; Types: full custom; Flags: exclusive disablenouninstallwarning;
Name: BUK\12\Chasi_v_angare; Description: "{cm:Mods69}"; Types: full compact custom; Flags: exclusive disablenouninstallwarning;
Name: BUK\21\Chasi_v_angare; Description: "{cm:Mods70}"; Types: full custom; Flags: exclusive disablenouninstallwarning;
Name: BUK\22\Chasi_v_angare; Description: "{cm:Mods71}"; Types: full custom; Flags: exclusive disablenouninstallwarning;

Выглядеть будет вот как:9976257.png

Edited by Nowik1971

Share this post


Link to post

Short link
Share on other sites

Прошу прощения, совершенно вылетел из головы важный момент когда составлял сообщение. Надо сделать так, что если выбран и 1 и 2 компонент, то устанавливается только то, что прописано для второго. То есть игнорируем первый, если выбран второй.

Edited by Tombo

Share this post


Link to post

Short link
Share on other sites

 

 

Надо сделать так, что если выбран и 1 и 2 компонент, то устанавливается только то, что прописано для второго. То есть игнорируем первый, если выбран второй.
В секциях [Files] и [Tasks], в параметре "Components", допустимы логические выражения.
Например (из справки):
Components: a or b
Components: a and b
Components: not a or b
Components: not (a or b)

Share this post


Link to post

Short link
Share on other sites

Спасибо за наводку. Почитал мануал по этому делу и понял, что придется делать отдельную страницу для таких чекбоксов?

These tasks appear as check boxes and radio buttons on the Select Additional Tasks wizard page

То есть использовать Tasks совместно с существующими чекбоксами не получится или я ошибаюсь?

Share this post


Link to post

Short link
Share on other sites
Опубликовано 52 минут назад Прошу прощения, совершенно вылетел из головы важный момент когда составлял сообщение. Надо сделать так, что если выбран и 1 и 2 компонент, то устанавливается только то, что прописано для второго. То есть игнорируем первый, если выбран второй.

[Files]

Source: "моды\0.9.15\твиккер 0.9.15\Только удаление тумана на всех картах\*";  DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Tasks: VE; BeforeInstall: AddToMemo;

Source: "моды\0.9.15\твиккер 0.9.15\Отключить облака\Tweaker_Skyboxes\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Tasks: VE\OT; BeforeInstall: AddToMemo;

Source: "моды\0.9.15\твиккер 0.9.15\Отключить эффект движения деревьев\Tweaker_Trees\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Tasks: VE\OLVE; BeforeInstall: AddToMemo;

Source: "моды\0.9.15\твиккер 0.9.15\Отключить дым из выхлопных труб танков\Tweaker_Tank_Smoke\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Tasks: VE\OLVE\ODO; BeforeInstall: AddToMemo;

Source: "моды\0.9.15\твиккер 0.9.15\Отключить дым от уничтоженных танков\Tweaker_Tank_Destroy_Smoke\*";  DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Tasks: VE\OLVE\ODD; BeforeInstall: AddToMemo;

Source: "моды\0.9.15\твиккер 0.9.15\Отключить дым и пламя от выстрелов\Tweaker_Tank_Shoot_Smoke\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Tasks: VE2; BeforeInstall: AddToMemo;

Source: "моды\0.9.15\твиккер 0.9.15\Отключить эффекты уничтожения танков\Tweaker_Tank_Destroy\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Tasks: VE2\OT; BeforeInstall: AddToMemo;

Source: "моды\0.9.15\твиккер 0.9.15\Отключить эффект взрыва снарядов и попадания в объекты\Tweaker_Shells\*"; DestDir:  "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Tasks: VE2\OLVE; BeforeInstall: AddToMemo;

Source: "моды\0.9.15\твиккер 0.9.15\Отключить эффекты разрушения объектов\Tweaker_Environment\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Tasks: VE2\OLVE\ODO; BeforeInstall: AddToMemo;

Source: "моды\0.9.15\твиккер 0.9.15\Отключить эффекты попадания по танкам\Tweaker_Tank_Hit\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Tasks: VE2\OLVE\ODD; BeforeInstall: AddToMemo;

[Tasks]

Name: "VE"; Description: "У меня слабый ПК и я хочу поднять FPS";  Flags:  exclusive;

Name: "VE\OT"; Description: "Отключение тумана на всех картах"; GroupDescription: "Отключение эффектов:"; Flags: checkablealone;

Name: "VE\OLVE"; Description: "Отключение лишних визуальных эффектов"; GroupDescription: "Отключение эффектов:"; Flags: unchecked;

Name: "VE\OLVE\ODO"; Description: "Отключение движения облаков"; GroupDescription: "Отключение эффектов:"; Flags: checkablealone;

Name: "VE\OLVE\ODD"; Description: "Отключение движения деревьев";  GroupDescription: "Отключение эффектов:"; Flags: checkablealone;

//****************************

Name: "VE2"; Description: "У меня слабый ПК и я хочу поднять FPS2";  Flags: exclusive;

Name: "VE2\OT"; Description: "Отключение тумана на всех картах2"; GroupDescription: "Отключение эффектов:"; Flags: checkablealone;

Name: "VE2\OLVE"; Description: "Отключение лишних визуальных эффектов2"; GroupDescription: "Отключение эффектов:"; Flags: unchecked;

Name: "VE2\OLVE\ODO"; Description: "Отключение движения облаков2"; GroupDescription: "Отключение эффектов:"; Flags: checkablealone;

Name: "VE2\OLVE\ODD"; Description: "Отключение движения деревьев2";  GroupDescription: "Отключение эффектов:"; Flags: checkablealone;

Я понял вот так надо? примерно, если первый выбираешь то все из первого если второй то все из второго списка???

9973204.png

Edited by Nowik1971

Share this post


Link to post

Short link
Share on other sites

Знатоки, подскажите пожалуйста как при установке ХВМ сохранить старые настройки. Есть установщик ХВМ. Логика следующая, если чекбокс для сохранения старого конфига отмечен, страница с выбором компонентов ХВМ пропускается и устанавливается ХВМ без папки configs. 

Share this post


Link to post

Short link
Share on other sites

Знатоки, подскажите пожалуйста как при установке ХВМ сохранить старые настройки. Есть установщик ХВМ. Логика следующая, если чекбокс для сохранения старого конфига отмечен, страница с выбором компонентов ХВМ пропускается и устанавливается ХВМ без папки configs. 

Объявить установку XVM в [Files] тремя строками: для папок "0.9.15.0.1", "mods", "configs" соответственно. Можно и двумя, но это уже зависит от расположения папок в проекте.

В параметре Check, строки объявленной папки "configs", вставить проверку необходимых параметров для распаковки данной папки. Например:

[Files]
...; Check: IsComponentSelected('XVM') and not SaveConfigChecked();

[Code]
Function SaveConfigsChecked();
begin
 Result := SaveConfigsCheckBox.Checked;
end;

Где SaveConfigsCheckBox - ваш "чекбокс для сохранения конфига".

 

А страницу выбора компонентов XVM можно пропустить воспользовавшись уже приведённой выше функцией (или же можно обратиться к чекбоксу напрямую):

Function ShouldSkipPage(PageID: Integer): Boolean;
begin
 case PageID of
  XVMComponentsPage: SaveConfigsChecked();
 end;
end;
Edited by Kotyarko_O
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Спасибо большое! Все получилось и работает! 

Edited by wotsite

Share this post


Link to post

Short link
Share on other sites

всем привет есть вопрос. если выбран компанент то надо запустить программу которая в инностеап положена и запустить на завершении загрузки. не могу найти решении вопроса в интернете все мимо. может тут кто подскажет. спасибо.

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

[Run]
Filename: {app}\worldoftanks.exe; Description: Запустить игру; Flags: postinstall skipifsilent skipifdoesntexist waituntilidle; Check: FileExists(ExpandConstant('{app}\worldoftanks.exe'))

  • Upvote 1
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

Может так: "скрипты модов/ParamsRememberer.iss" ?

 

Подскажите пожалуйста вот у меня на второй страницы стоят моды и они идут как копмонент 1,... при установке модпака пользователь выбирает что-то, а потом при повторном запуске пака выбранное не сохраняется и приходится по новой вспоминать что было выбрано, как сделать чтобы выбор запоминался....???

вот как у меня сделано и что надо исправить:

фал модов:

-----------

Source: "моды\2\PMOD\battleGui_sixthSenseDuration\10\*"; DestDir: "{app}\res_mods\0.9.15.0.1"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: COMP1(ExpandConstant('{cm:CompAnother4}'));

Source: "моды\2\PMOD\battleGui_sixthSenseDuration\12\*"; DestDir: "{app}\res_mods\0.9.15.0.1"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: COMP1(ExpandConstant('{cm:CompAnother5}'));

---------------

файл компонентов-----------

AddRadioButton(CustomMessage('CompAnother4'), '', 2, False, True, nil);

AddRadioButton(CustomMessage('CompAnother5'), '', 2, True, True, nil);

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

Если можно, то покажите на моем примере так мне понятнее будет...

------------------

Это по паре строк... что нужно добавить или убрать??? копал уже что сам понимаю, но таких знаний еще нет и ничего не получается...

Как все же это реализовать, на первой и на странице таска все запоминается...???

Спасибо заранее!

Edited by Nowik1971

Share this post


Link to post

Short link
Share on other sites

 

 

AddRadioButton(CustomMessage('CompAnother4'), '', 2, False, True, nil);

AddRadioButton(CustomMessage('CompAnother5'), '', 2, True, True, nil);

По умолчанию второй запоминается

Нет, он не будет запоминаться. Здесь ему прямо указано быть отмеченным.

Можно вручную записывать всю информацию об отмеченных компонентах в реестр, затем считывать её оттуда, для восстановления. Пример.

Можно записывать всё прямо в деинсталлятор. В таком случае можно использовать подобную конструкцию, как и в примере выше, но заменить сами выполняющие функции (запись в реестр на запись в деинсталл, считывание из реестра на считывание из деинсталла).

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Спасибо за помощь, но подключить не получается ошибку выдает что не находит файл  File not found "скрипты модов/ParamsRememberer.is"...

Сохранил скрипт в папку по пути у себя и прописал в файле подключаемых скриптов вот так #include "скрипты модов/ParamsRememberer.iss

А  главном скрипте прописал

Procedure CurStepChanged(CurStep: TSetupStep);

var
ErrorCode: Integer;
begin
if CurStep = ssDone then
begin
If CheckBox1 then
begin
Exec(ExpandConstant('{app}\WoTLauncher.exe'), '', '', SW_SHOW, ewNoWait, ErrorCode)
end;

end;
//SearchComponents(CurStep);
CustomBackupChanged(CurStep); {бекап}
//CopyAdioChanged(CurStep); {копирование audio}
//CopyTextChanged(CurStep); {копирование text}
CreateLogModsChanged(CurStep); {создание лог файла модов}
SetInstallParams(CurStep); {Запоминание выбранных компонентов)
jumpModsFromNetworkChangeds(CurStep); {скачки модов из сети}
end;

//======================================================================\\

и ошибка... Где косячу не пойму?

Share this post


Link to post

Short link
Share on other sites
Может так: "скрипты модов/ParamsRememberer.iss" ?

 Прописано вот так:#include "скрипты модов/ParamsRememberer.iss в файле скриптов подключаемых, а ошибку именно выдает без одной буквы расширения... вот и не пойму что не так?

Установлен Инно версии 5.5.1.ее2u  все остальное -то работает...? но если подключаю этот скрипт то не компилет, т.к. почему. то его не видит с правильным расширением...

Edited by Nowik1971

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...