Kotyarko_O 1,906 #196154 Posted June 27, 2014 такой мне не подходит... Чем же? Ведь даётся полноценный выбор.. Quote Share this post Link to post Short link Share on other sites
ventura69 34 #196161 Posted June 27, 2014 Чем же? Ведь даётся полноценный выбор.. Ну, не совсем полноценный. Надо еще дописать восстановление сборки. При этом еще включить проверку наличия сохраненной сборки, чтобы не затирать случайно существующую. Quote Share this post Link to post Short link Share on other sites
Mr_KeyN 21 #196164 Posted June 27, 2014 дело в том что удаление модов и резервное копирование у меня сделано отдельно, поэтому мне нужен код отдельной кнопки на очистку кэша... Quote Share this post Link to post Short link Share on other sites
ventura69 34 #196168 Posted June 27, 2014 дело в том что удаление модов и резервное копирование у меня сделано отдельно, поэтому мне нужен код отдельной кнопки на очистку кэша... Так выкиньте все ненужное. Оставьте только одно это окошко с галкой. Я специально очистку кэш прописал на чекед с дефолтным умолчанием :-) А окошечко отличается от кнопки и привлекает внимание. Сразу в глаза будет бросаться. :-) Quote Share this post Link to post Short link Share on other sites
AtotIK 580 #196169 Posted June 27, 2014 (edited) 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 June 27, 2014 by AtotIK Quote Share this post Link to post Short link Share on other sites
ventura69 34 #196213 Posted June 27, 2014 (edited) Чем же? Ведь даётся полноценный выбор.. А вот теперь полноценный выбор. Дописал туда восстановление сохраненной сборки. Если сохраненка присутствует, то папка res_mods будет перезатерта и восстановлена сохраненка. Если сохранения не было, то шаг пропускается, чтобы не уродовать текущую сборку. Так же добавил {#Patch} для универсальности. Вот как-то так получилось :-) claerkash-1.rar P.S. Правда, тут же родилась идея: а зачем хранить в клиенте все данные апдейтов клиента? Имело бы смысл за одно в очистку клиента воткнуть и очистку папки Updates? У меня она сейчас разрослась до 8 Гб. Edited June 27, 2014 by ventura69 Quote Share this post Link to post Short link Share on other sites
AtotIK 580 #196223 Posted June 27, 2014 ventura69, восстановление нужно делать при деинсталляции. Сейчас этот пункт как мертвому припарка, нужно оптимизировать всё. Как пример: инсталлятор ищет в папке бэкап, потом предлагает его восстановить. После восстановления инсталлятор закрывается. Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #196224 Posted June 27, 2014 (edited) Дописал туда восстановление сохраненной сборки. Если сохраненка присутствует, то папка res_mods будет перезатерта и восстановлена сохраненка. Ну, в таком случае, если выбран данный пункт - логично будет пропустить шаги выбора устанавливаемых компонентов и страницу со списком всех выбранных. А вообще, лучше вписать функцию восстановления резервной копии в деинсталлятор (лично я так и сделал). Edited June 27, 2014 by Kotyarko_O Quote Share this post Link to post Short link Share on other sites
ventura69 34 #196232 Posted June 27, 2014 (edited) Позвольте с вами обоими несколько не согласиться, уважаемые. Я хочу попробовать новую сборку, но при этом не потерять свою (вдруг новая не понравится). Потому, после выбора дирректории установки модов (папки с игрой), выбираю галку "сохранить свою сборку". После иду на окно выбора модов и выбираю нужные. Что происходит? Инсталлятор переименовывает мою папку res_mods в res_mods_old и создает пустую папку res_mods/0.9.1 (это на случай склероза, или отвлекли игрока: мама позвала кушать. Закрыл инсталлятор, убежал, потом забыл, что хотел сделать, вошел в игру, а она говорит, что "фиг тебе!"). После устанавливает моды, отмеченные по галочкам. Поиграли... Не понравилось. Запускаем инсталлятор и выбираем на этот раз "восстановить сборку". Инсталлятор удаляет папку res_mods, переименовывает папку res_mods_old в res_mods и игрок получает свою прежнюю сборку. Если сохранения не было, то ничего и не произойдет - инсталлятор просто перепрыгнет этот шаг. Хотя окошечек с предупреждениями стоит и добавить (спасибо, что подкинули идею!!!) Чем плохо? Или что-то недопонял? P.S. Надо бы, действительно, при выборе восстановки сборки сделать сразу выход из установщика. Как - пока не придумал. :-) Edited June 27, 2014 by ventura69 Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #196240 Posted June 27, 2014 (edited) Поиграли... Не понравилось. Запускаем инсталлятор и выбираем на этот раз "восстановить сборку". Инсталлятор удаляет папку res_mods, переименовывает папку res_mods_old в res_mods и игрок получает свою прежнюю сборку. Получает, если при этом, на странице выбора компонентов, ничего не выберет. Вот о чём я и говорю, что при выборе этого чекбокса желательно просто заблокировать страницы с выбором компонентов - в таком случае можно избежать вытекающих непоняток, типа: "выбрал восстановить сборку, а оно мне ещё моды поверх установило". Edited June 27, 2014 by Kotyarko_O Quote Share this post Link to post Short link Share on other sites
ventura69 34 #196243 Posted June 27, 2014 Получает, если при этом, на странице выбора компонентов, ничего не выберет. Вот о чём я и говорю, что при выборе этого чекбокса желательно просто заблокировать страницы с выбором компонентов - в таком случае можно избежать вытекающих непоняток, типа: "выбрал восстановить сборку, а оно мне ещё моды поверх установило". Дадада! Это сейчас и пытаюсь сделать. Уже понял. :-) Уважаемые, да ну вообще бред получается... Не менял ни чего (только в блоке восстановления вписал 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) вдруг перестал брать. Может кто откомментировать сие чудо? Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #196259 Posted June 27, 2014 Отрабатывает только первую строку ( DelTree), а вторую (ForceDirectories) вдруг перестал брать. Может кто откомментировать сие чудо? Странно, в конструкции ошибок нет.А если ForceDirectories заменить на: CreateDir(ExpandConstant('{app}\res_mods')); CreateDir(ExpandConstant('{app}\res_mods\{#Patch}')); Quote Share this post Link to post Short link Share on other sites
ventura69 34 #196513 Posted June 28, 2014 Kotyarko_O, решил проблему просто - откатил на предыдущую версию (которую выкладывал ранее). Сличил оба файла - одинаковые... Но все работает на старой версии и не мурмулит на новой. Или чудеса, или глаз замылился :-) А вопрос с выходам и допокнами буду решать. Спасибо за идею. Если получится - выложу для всеобщего пользования. Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #196520 Posted June 28, 2014 А вопрос с выходам и допокнами буду решать. Эт что за вопрос? Quote Share this post Link to post Short link Share on other sites
Andrew_Dark 8 #196531 Posted June 28, 2014 Мужики, у меня 120к закачек, поздравьте:) Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #196537 Posted June 28, 2014 Мужики, у меня 120к закачек, поздравьте:) Круто, поздравляю. А откуда? Quote Share this post Link to post Short link Share on other sites
Andrew_Dark 8 #196546 Posted June 28, 2014 С сайта рес модс ру Quote Share this post Link to post Short link Share on other sites
ventura69 34 #196640 Posted June 29, 2014 Эт что за вопрос? Это у меня башка снова болела, не то написал. Вопрос с выходом из установщика при выборе восстановления сборки и дополнительными окнами предупреждений. Это буду решать.:-) Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #196643 Posted June 29, 2014 Вопрос с выходом из установщика при выборе восстановления сборки и дополнительными окнами предупреждений. Это буду решать.:-) Возникнут вопросы - спрашивай) Quote Share this post Link to post Short link Share on other sites
ventura69 34 #196846 Posted June 30, 2014 Уважаемые, кто может подсказать: в чем дефект конструкции? Перепробовал кучу вариантов, но результат один и тот же: не работает. function BackupCheck_5(): Boolean;beginIf LoadRadioButton.Checked then //проверяем, отмечен ли чекбоксbeginif DirExists ('{app}\res_mods_old') = True then //проверяем наличие файла res_mods_old. Если он присутствует, то выполняем действия нижеbeginDelTree(ExpandConstant('{app}\res_mods'), True, True, True); //удаляем папку res_modsRenameFile(ExpandConstant('{app}\res_mods_old'), ExpandConstant('{app}\res_mods')); //переименовываем res_mods_old в res_modsend;end;end; А в таком варианте все гуд. Но здесь и ломаться нечему - банальная перетасовка папок: function BackupCheck_5(): Boolean;beginIf LoadRadioButton.Checked then beginDelTree(ExpandConstant('{app}\res_mods'), True, True, True); RenameFile(ExpandConstant('{app}\res_mods_old'), ExpandConstant('{app}\res_mods')); end;end; Это я пытался защиту от "дурака" сделать, но что-то не клеится. Quote Share this post Link to post Short link Share on other sites