Jump to content
Korean Random
EvilAlex

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

Recommended Posts

такой мне не подходит...

 Чем же? Ведь даётся полноценный выбор..

Share this post


Link to post

Short link
Share on other sites

 Чем же? Ведь даётся полноценный выбор..

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

Share this post


Link to post

Short link
Share on other sites

дело в том что удаление модов и резервное копирование у меня сделано отдельно, поэтому мне нужен код отдельной кнопки на очистку кэша...

Share this post


Link to post

Short link
Share on other sites

дело в том что удаление модов и резервное копирование у меня сделано отдельно, поэтому мне нужен код отдельной кнопки на очистку кэша...

Так выкиньте все ненужное. Оставьте только одно это окошко с галкой. Я специально очистку кэш прописал на чекед с дефолтным умолчанием :-) А окошечко отличается от кнопки и привлекает внимание. Сразу в глаза будет бросаться. :-)

Share this post


Link to post

Short link
Share on other sites

Mr_KeyN, как-то так:

 

var
  ClearCache: TCheckBox;

function ClearCacheCheck(): Boolean;
begin
  if ClearCache.Checked then
begin
    DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\account_caches'), True, True, True);
    DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\battle_results'), True, True, True);
    DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\custom_data'), True, True, True);
    DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\dossier_cache'), True, True, True);
    DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\tutorial_cache'), True, True, True);
    DeleteFile(ExpandConstant('{app}\python.log'));
    DeleteFile(ExpandConstant('{app}\xvm.log'));
end;
end;

function ClearCacheCreate(): Boolean;
begin
  ClearCache:=TCheckBox.Create(WizardForm);
  ClearCache.SetBounds(28, 128, WizardForm.RunList.Width, 20)
  ClearCache.Checked:=True;
  ClearCache.Caption:=' Очистить игровой кэш';
  ClearCache.Parent:=WizardForm.SelectDirPage;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  If CurStep=ssDone then
begin
  ClearCacheCheck();
end;
end;

procedure InitializeWizard();
begin
  ClearCacheCreate();
end;
З.Ы. Честно, не читал предыдущей страницы. Набросал за 5 минут по последнему посту. В любом случае этот вариант можно впихнуть в любое место. Edited by AtotIK

Share this post


Link to post

Short link
Share on other sites

 Чем же? Ведь даётся полноценный выбор..

А вот теперь полноценный выбор. Дописал туда восстановление сохраненной сборки. Если сохраненка присутствует, то папка res_mods будет перезатерта и восстановлена сохраненка. Если сохранения не было, то шаг пропускается, чтобы не уродовать текущую сборку. Так же добавил {#Patch} для универсальности.

Вот как-то так получилось :-)

post-11632-0-48069700-1403884311_thumb.jpg

claerkash-1.rar

P.S. Правда, тут же родилась идея: а зачем хранить в клиенте все данные апдейтов клиента? Имело бы смысл за одно в очистку клиента воткнуть и очистку папки Updates? У меня она сейчас разрослась до 8 Гб.

Edited by ventura69

Share this post


Link to post

Short link
Share on other sites
ventura69, восстановление нужно делать при деинсталляции. Сейчас этот пункт как мертвому припарка, нужно оптимизировать всё. Как пример: инсталлятор ищет в папке бэкап, потом предлагает его восстановить. После восстановления инсталлятор закрывается.

Share this post


Link to post

Short link
Share on other sites
Дописал туда восстановление сохраненной сборки. Если сохраненка присутствует, то папка res_mods будет перезатерта и восстановлена сохраненка.

Ну, в таком случае, если выбран данный пункт - логично будет пропустить шаги выбора устанавливаемых компонентов и страницу со списком всех выбранных.

 А вообще, лучше вписать функцию восстановления резервной копии в деинсталлятор (лично я так и сделал).

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

Позвольте с вами обоими несколько не согласиться, уважаемые. Я хочу попробовать новую сборку, но при этом не потерять свою (вдруг новая не понравится). Потому, после выбора дирректории установки модов (папки с игрой), выбираю галку "сохранить свою сборку". После иду на окно выбора модов и выбираю нужные. Что происходит? Инсталлятор переименовывает мою папку res_mods в res_mods_old и создает пустую папку res_mods/0.9.1 (это на случай склероза, или отвлекли игрока: мама позвала кушать. Закрыл инсталлятор, убежал, потом забыл, что хотел сделать, вошел в игру, а она говорит, что "фиг тебе!"). После устанавливает моды, отмеченные по галочкам. Поиграли... Не понравилось. Запускаем инсталлятор и выбираем на этот раз "восстановить сборку". Инсталлятор удаляет папку res_mods, переименовывает папку res_mods_old в res_mods и игрок получает свою прежнюю сборку. Если сохранения не было, то ничего и не произойдет - инсталлятор просто перепрыгнет этот шаг. Хотя окошечек с предупреждениями стоит и добавить (спасибо, что подкинули идею!!!)

Чем плохо? Или что-то недопонял?

P.S. Надо бы, действительно, при выборе восстановки сборки сделать сразу выход из установщика. Как - пока не придумал. :-)

Edited by ventura69

Share this post


Link to post

Short link
Share on other sites
Поиграли... Не понравилось. Запускаем инсталлятор и выбираем на этот раз "восстановить сборку". Инсталлятор удаляет папку res_mods, переименовывает папку res_mods_old в res_mods и игрок получает свою прежнюю сборку.

Получает, если при этом, на странице выбора компонентов, ничего не выберет. Вот о чём я и говорю, что при выборе этого чекбокса желательно просто заблокировать страницы с выбором компонентов - в таком случае можно избежать вытекающих непоняток, типа: "выбрал восстановить сборку, а оно мне ещё моды поверх установило".

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

Получает, если при этом, на странице выбора компонентов, ничего не выберет. Вот о чём я и говорю, что при выборе этого чекбокса желательно просто заблокировать страницы с выбором компонентов - в таком случае можно избежать вытекающих непоняток, типа: "выбрал восстановить сборку, а оно мне ещё моды поверх установило".

Дадада! Это сейчас и пытаюсь сделать. Уже понял. :-)

Уважаемые, да ну вообще бред получается... Не менял ни чего (только в блоке восстановления вписал Exit, потом удалил и сохранился). Вот код:

function BackupCheck_2(): Boolean;

begin

If DeleteRadioButton.Checked then

begin

DelTree(ExpandConstant('{app}\res_mods'), True, True, True);

ForceDirectories(ExpandConstant('{app}\res_mods\{#Patch}'));

end;

end;

Отрабатывает только первую строку ( DelTree), а вторую (ForceDirectories) вдруг перестал брать. Может кто откомментировать сие чудо?

Share this post


Link to post

Short link
Share on other sites

 

 

Отрабатывает только первую строку ( DelTree), а вторую (ForceDirectories) вдруг перестал брать. Может кто откомментировать сие чудо?
Странно, в конструкции ошибок нет.

А если ForceDirectories заменить на:

CreateDir(ExpandConstant('{app}\res_mods'));
CreateDir(ExpandConstant('{app}\res_mods\{#Patch}'));

Share this post


Link to post

Short link
Share on other sites

Kotyarko_O, решил проблему просто - откатил на предыдущую версию (которую выкладывал ранее). Сличил оба файла - одинаковые... Но все работает на старой версии и не мурмулит на новой. Или чудеса, или глаз замылился :-)

А вопрос с выходам и допокнами буду решать. Спасибо за идею. Если получится - выложу для всеобщего пользования.

Share this post


Link to post

Short link
Share on other sites

 

 

А вопрос с выходам и допокнами буду решать.
Эт что за вопрос?

Share this post


Link to post

Short link
Share on other sites

Мужики, у меня 120к закачек, поздравьте:)

Круто, поздравляю. А откуда?

Share this post


Link to post

Short link
Share on other sites

Эт что за вопрос?

Это у меня башка снова болела, не то написал. Вопрос с выходом из установщика при выборе восстановления сборки и дополнительными окнами предупреждений. Это буду решать.:-)

Share this post


Link to post

Short link
Share on other sites

 

 

Вопрос с выходом из установщика при выборе восстановления сборки и дополнительными окнами предупреждений. Это буду решать.:-)
Возникнут вопросы - спрашивай)

Share this post


Link to post

Short link
Share on other sites

Уважаемые, кто может подсказать: в чем дефект конструкции? Перепробовал кучу вариантов, но результат один и тот же: не работает.

function BackupCheck_5(): Boolean;
begin
If LoadRadioButton.Checked then                  //проверяем, отмечен ли чекбокс
begin
if DirExists ('{app}\res_mods_old') = True then           //проверяем наличие файла res_mods_old. Если он присутствует, то выполняем действия ниже
begin
DelTree(ExpandConstant('{app}\res_mods'), True, True, True);                     //удаляем папку res_mods
RenameFile(ExpandConstant('{app}\res_mods_old'), ExpandConstant('{app}\res_mods'));      //переименовываем res_mods_old в res_mods
end;
end;
end;

А в таком варианте все гуд. Но здесь и ломаться нечему - банальная перетасовка папок:

function BackupCheck_5(): Boolean;
begin
If LoadRadioButton.Checked then                         
begin
DelTree(ExpandConstant('{app}\res_mods'), True, True, True);                 
RenameFile(ExpandConstant('{app}\res_mods_old'), ExpandConstant('{app}\res_mods'));     
end;
end;

Это я пытался защиту от "дурака" сделать, но что-то не клеится.

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...