Jump to content
Korean Random
EvilAlex

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

Recommended Posts

Всем привет, кто подскажет что прописать что бы перед установкой модов очищался кэш игры ????

Share this post


Link to post

Short link
Share on other sites

Всем привет, кто подскажет что прописать что бы перед установкой модов очищался кэш игры ????

[InstallDelete]

//Очистка кеша
Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\account_caches
Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\battle_results
Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\custom_data
Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\dossier_cache
Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\tutorial_cache
Edited by Yusha

Share this post


Link to post

Short link
Share on other sites

О чем это? 

 Я так понял, что имеются ввиду настройки игры и т.д.

Share this post


Link to post

Short link
Share on other sites

 Я так понял, что имеются ввиду настройки игры и т.д.

Обычно настройки игры просят оставить.

Такой вот скрипт, если я правильно понял:

Set fso = CreateObject("Scripting.FileSystemObject")

Set WshShell = CreateObject("WScript.Shell")

Set strFolder = fso.GetFolder(WshShell.ExpandEnvironmentStrings("%APPDATA%"))

TempGameFolder = (strFolder & "\" & "Wargaming.net" & "\" & "WorldOfTanks")

Set objFSO=Createobject("Scripting.Filesystemobject")

Set objFolder=objFSO.GetFolder(TempGameFolder)

Set objFiles=objFolder.Files

For Each objFile In objFiles

If objFile.Name <> "preferences.xml" Then

objFSO.DeleteFile TempGameFolder & "\" & objFile.Name, True

End if

Next

For Each objSubFolder In objFolder.SubFolders

objFSO.DeleteFolder TempGameFolder & "\" & objSubFolder.Name

Next

MsgBox TempGameFolder & chr(13) & oFolder & chr(13) & TempSysFolder & chr(13) & chr(13) & chr(13) & " ----- ОЧИЩЕНО -----"

Edited by ventura69

Share this post


Link to post

Short link
Share on other sites
Обычно настройки игры просят оставить.

Просто если это действительно настройки игры, то вариант, предложенный @Yusha, будет делать это автоматом. Я, как пользователь, не хочу, чтобы мои настройки сбивались. По-этому, лучше это осуществить чекбоксом (где-то на странице с бекапом).

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

Просто если это действительно настройки игры, то вариант, предложенный @Yusha, будет делать это автоматом. Я, как пользователь, не хочу, чтобы мои настройки сбивались. По-этому, лучше это осуществить чекбоксом (где-то на странице с бекапом).

Тогда встречный вопрос. Опять туплю. Я всегда чистил кеш скриптом, который выложил. Сейчас попытался прикрутить от Yusha кусок кода.

Создал блок, вставил такое:

var

Quick: TCheckBox;

 

function MakeQuick: Boolean;

begin

If Quick.Checked then

begin

 

 

//Очистка кеша

Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\account_caches

Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\battle_results

Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\custom_data

Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\dossier_cache

Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\tutorial_cache

Checked := True;

end else begin

Checked := False;

end;

end;

 

procedure InitializeWizard3;

begin

Quick := TCheckBox.Create(WizardForm);

with Quick do

begin

Parent := WizardForm.SelectDirPage;

Caption := Очистить кеш?';

Left := ScaleX(0);

// Left := WizardForm.DirEdit.Top + 100;

Top := WizardForm.DirEdit.Top + 117;

Width := ScaleX(300);

Height := ScaleY(15);

TabOrder := 0;

Checked := False;

end;

end;

Появилось окошко, в нем можно ставить галочку (до тех пор, пока не вписал реакцию на появившуюся галочку), но начало ругаться "Identifier expected" на строке 12, колонка 1. То есть на Type. Что ему не нравится, что я упустил?

 

p.s. Вот чего не понимаю, так это подленьких минусов! К чему это? Форум создан для общения и помощи. На вопрос и просьбу о помощи какой-то придурок с раздутым самомнением ставит минус... И к чему это сделано? Я много не умею, но стремлюсь узнать... На минус плевать, а вот от отношения такого всякое желание отбивается... :-(

Edited by ventura69
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

@ventura69, а с какого ты вот это:

//Очистка кеша
Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\account_caches
Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\battle_results
Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\custom_data
Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\dossier_cache
Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\tutorial_cache

вписал в секцию Code?

 

Просмотри внимательнее сообщение Юши. Всё это нужно вписывать в отдельную секцию [installDelete].

Если тебе нужно сделать через секцию Code, с чекбоксом - то нужно делать по-другому, и конструкция не будет даже похожа не эту (кроме путей).

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

@ventura69, а с какого ты вот это: вписал в секцию Code?

 

Просмотри внимательнее сообщение Юши. Всё это нужно вписывать в отдельную секцию [installDelete].

Если тебе нужно сделать через секцию Code, с чекбоксом - то нужно делать по-другому, и конструкция не будет даже похожа не эту (кроме путей).

Потому как я балбес невнимательный! Спасибо. Пошел снова штудировать справку.

Уважаемые, а такой вариант? Не могу понять, почему не реагирует на галку в окошке.

var

Quick: TCheckBox;

 

function MakeQuick: Boolean;

begin

Result:=Quick.Checked;

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);

end;

 

procedure InitializeWizard3;

begin

Quick := TCheckBox.Create(WizardForm);

with Quick do

begin

Parent := WizardForm.SelectDirPage;

Caption := 'Очистка кеш';

Left := ScaleX(0);

// Left := WizardForm.DirEdit.Top + 100;

Top := WizardForm.DirEdit.Top + 117;

Width := ScaleX(300);

Height := ScaleY(15);

TabOrder := 0;

Checked := False;

end;

end;

Share this post


Link to post

Short link
Share on other sites

@ventura69,

function MakeQuick: Boolean;
begin
 if Quick.Checked:=True 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);
end;
end;

а так?

Edited by Kotyarko_O

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

 Я так понял, что имеются ввиду настройки игры и т.д.

Короче, ничего не понял. Зачем нужно удаление кэша? чем это помогает?

Share this post


Link to post

Short link
Share on other sites

Короче, ничего не понял. Зачем нужно удаление кэша? чем это помогает?

 

Присоединяюсь к вопросу.

Share this post


Link to post

Short link
Share on other sites

Короче, ничего не понял. Зачем нужно удаление кэша? чем это помогает?

 

Присоединяюсь к вопросу.

Была проблема в свое время: вис у народа клиент, помогала очистка кэш. Точно уже не помню, было это пару патчей назад. И сейчас часто спрашивают, как его чистить. Зачем - не помню.

По поводу решения моего вопроса. Плюнул я на создание окна с галочкой по очистке кэша и вот такое решение получилось... Комплексное. Вспомнил кое-что из Делфи.

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

Если кому надо - пользуйтесь на здоровье :-)

claerkash.rar

Ну и скрин для наглядности:

post-11632-0-78370100-1403806170_thumb.jpg

Share this post


Link to post

Short link
Share on other sites

@ventura69, вот это я и предлагал сделать)

 

 

 

Из минусов: привязан к версии клиента 0.9.1
Решение:

1) Прописываешь, где-то в начале скрипта (вне всяких секций типа [setup], [Files] и т.д.) директиву, типа:

#define Patch "0.9.1"

2) В коде, где нужно подставить эту версию, вписываешь {#Patch}. В итоге, возвращаемое значение от вписанной директивы будет такое, какое ты прописал в 1-м шаге.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Решение:

1) Прописываешь, где-то в начале скрипта (вне всяких секций типа [setup], [Files] и т.д.) директиву, типа:

#define Patch "0.9.1"

2) В коде, где нужно подставить эту версию, вписываешь {#Patch}. В итоге, возвращаемое значение от вписанной директивы будет такое, какое ты прописал в 1-м шаге.

Принял к сведению, вписал, проверил. Работает. Спасибо!!!

Edited by ventura69

Share this post


Link to post

Short link
Share on other sites

Просто если это действительно настройки игры, то вариант, предложенный @Yusha, будет делать это автоматом. Я, как пользователь, не хочу, чтобы мои настройки сбивались. По-этому, лучше это осуществить чекбоксом (где-то на странице с бекапом).

Я дал решение в соответствии с формулировкой вопроса... у меня самого записано вот так:

[InstallDelete]
//Очистка кеша и логов
Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\account_caches; Check: IsAdditionalTaskChecked('ClearCacheTask')
Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\battle_results; Check: IsAdditionalTaskChecked('ClearCacheTask')
Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\custom_data; Check: IsAdditionalTaskChecked('ClearCacheTask')
Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\dossier_cache; Check: IsAdditionalTaskChecked('ClearCacheTask')
Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\tutorial_cache; Check: IsAdditionalTaskChecked('ClearCacheTask')
Type: files; Name: {app}\python.log; Check: IsAdditionalTaskChecked('ClearCacheTask')
Type: files; Name: {app}\xvm.log; Check: IsAdditionalTaskChecked('ClearCacheTask')

Соответственно для этого всего еще прописан код.

 

 

Короче, ничего не понял. Зачем нужно удаление кэша? чем это помогает?

Данная процедура рекомендована при выходе нового обновления.

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

Edited by Yusha

Share this post


Link to post

Short link
Share on other sites

 

 

Я дал решение в соответствии с формулировкой вопроса... у меня самого записано вот так: [installDelete] //Очистка кеша и логов Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\account_caches; Check: IsAdditionalTaskChecked('ClearCacheTask') Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\battle_results; Check: IsAdditionalTaskChecked('ClearCacheTask') Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\custom_data; Check: IsAdditionalTaskChecked('ClearCacheTask') Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\dossier_cache; Check: IsAdditionalTaskChecked('ClearCacheTask') Type: filesandordirs; Name: {userappdata}\wargaming.net\WorldOfTanks\tutorial_cache; Check: IsAdditionalTaskChecked('ClearCacheTask') Type: files; Name: {app}\python.log; Check: IsAdditionalTaskChecked('ClearCacheTask') Type: files; Name: {app}\xvm.log; Check: IsAdditionalTaskChecked('ClearCacheTask') Соответственно для этого всего еще прописан код.

 

Если можно ещё и код на возможность выбора.....очищать или нет...

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

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