Jump to content
Korean Random
EvilAlex

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

Recommended Posts

Можно ли сделать так, что бы после нажатия на клавишу(например "D") выполнялась определенная функция(например вывод сообщения)?

Такое умеет радиальное меню.

Сорь, тупанул... это же тема не модов, а установщиков.

Edited by Yusha

Share this post


Link to post

Short link
Share on other sites

Как сделать один файл для 

KMP\1\1
KMP\2\1

?

[Components]
Name: "KMP"; Description: "«Экипаж»"; Flags: disablenouninstallwarning;
Name: "KMP\1"; Description: "1.Уши"; Flags:  disablenouninstallwarning;
Name: "KMP\1\1"; Description: "Первый вариант ушей"; Flags: exclusive disablenouninstallwarning;
Name: "KMP\1\2"; Description: "Второй вариант ушей"; Flags: exclusive disablenouninstallwarning;
Name: "KMP\1\3"; Description: "Третий вариант ушей"; Flags: exclusive disablenouninstallwarning;
Name: "KMP\2"; Description: "2.Казарма"; Flags:  disablenouninstallwarning;
Name: "KMP\2\1"; Description: "Первый вариант казармы"; Flags: exclusive disablenouninstallwarning;
Name: "KMP\2\2"; Description: "Второй вариант казармы"; Flags: exclusive disablenouninstallwarning;
Name: "KMP\2\3"; Description: "Третий вариант казармы"; Flags: exclusive disablenouninstallwarning; 

Share this post


Link to post

Short link
Share on other sites

, это ты так заказ сел выполнять? :heh:

Components: KMP\1\1 or KMP\2\1;

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

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

, это ты так заказ сел выполнять? :heh:

Components: KMP\1\1 or KMP\2\1;

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

нет, просто мне самому не удобно файлы подставлять, не привык я в справку смотреть, моя беда:( 

заказы это вообще не моя идея  :ok:

Edited by ♫♫♫Dark_Knight_MiX♫♫♫

Share this post


Link to post

Short link
Share on other sites

всем привет.

Если данный вопрос подымался, то меня хватило до 25 страницы.

Подскажите как уменьшить вес инсталлятора?

Какие методы для этого существуют?

Хотелось бы побольше примеров.

Share this post


Link to post

Short link
Share on other sites

всем привет.

Если данный вопрос подымался, то меня хватило до 25 страницы.

Подскажите как уменьшить вес инсталлятора?

Какие методы для этого существуют?

Хотелось бы побольше примеров.

koQU1J6mAUE.jpg

Share this post


Link to post

Short link
Share on other sites

@Djonny_tankist, зависит от содержимого.
Есть данные, которые при максимальном или минимальном сжатии почти не теряют объём.
Впрочем, пример выше уже приведён.

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites
//====={ Сжатие сетапа }=====\\
InternalCompressLevel=ultra64
Compression=lzma2/ultra64
SolidCompression=true
Source: "C:\Users\Boss\Desktop\мод пак\Звуковое оповещение о засвете\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\S\S;
Name: KMP\S\S; Description: Звуковое оповещение о засвете.;

Интересует звук, как сжать или что то другое 

И вес получается почти 600 Мб...

Что не так?

 

А что используют мододелы? У них весит мод-пак около 150 Мб. а распаковывает около 700 Мб.

Edited by Djonny_tankist

Share this post


Link to post

Short link
Share on other sites

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

  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

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

Конечно спасибо за подсказку.Но я первый раз сел за эту прогу, и не имею навыков программирования и кодописания. :bzz:  

  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

Конечно спасибо за подсказку.Но я первый раз сел за эту прогу, и не имею навыков программирования и кодописания. :bzz:  

Source: "{app}\res\audio\*"; DestDir: "{app}\res_mods\{#Patch}\audio\"; Flags: external recursesubdirs skipifsourcedoesntexist; 
Edited by ♫♫♫Dark_Knight_MiX♫♫♫

Share this post


Link to post

Short link
Share on other sites
Source: "{app}\res\audio\*"; DestDir: "{app}\res_mods\{#Patch}\audio\"; Flags: external recursesubdirs skipifsourcedoesntexist; 

Вот что мне выкинуло:

post-24015-0-99298700-1425927769_thumb.jpg

что это означает? Заранее спс.

Edited by Djonny_tankist

Share this post


Link to post

Short link
Share on other sites

Вот что мне выкинуло:

attachicon.gif2.jpg

attachicon.gif1.jpg

что это означает? Заранее спс.

#define Patch               "0.9.6"
[Setup]
DefaultDirName={code:WotDirNameRU}
[Code]
function WotDirNameRU(S:String): String; // ключь для основного клиента  {1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1
var                                 
  InsPath: String;
  er: boolean;
  myFile:String;
begin
  Result:=ExpandConstant('C:\Games\World_of_Tanks\'); //если ключа нет то будем ставить сюда
  er := RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', InsPath);
  if er and (InsPath<>'') then //если ключ существует и там что-то записано
  begin
    Result := InsPath;
  end;
end;
//""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""//
function WotDirNameCT(S:String): String; // ключь для тестового клиента {1EAC1D02-C6AC-4FA6-9A44-96258C37C812CT}_is1
var                                
  InsPath: String;
  er: boolean;
  myFile:String;
begin
  Result:=ExpandConstant('C:\Games\World_of_Tanks_CT\'); //если ключа нет то будем ставить сюда
  er := RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812CT}_is1', 'InstallLocation', InsPath);
  if er and (InsPath<>'') then //если ключ существует и там что-то записано
  begin
    Result := InsPath;
  end;
end;
Edited by ♫♫♫Dark_Knight_MiX♫♫♫

Share this post


Link to post

Short link
Share on other sites

Всю эту нерациональщину:

[Code]
function WotDirNameRU(S:String): String; // ключь для основного клиента  {1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1
var                                 
  InsPath: String;
  er: boolean;
  myFile:String;
begin
  Result:=ExpandConstant('C:\Games\World_of_Tanks\'); //если ключа нет то будем ставить сюда
  er := RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', InsPath);
  if er and (InsPath<>'') then //если ключ существует и там что-то записано
  begin
    Result := InsPath;
  end;
end;
//""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""//
function WotDirNameCT(S:String): String; // ключь для тестового клиента {1EAC1D02-C6AC-4FA6-9A44-96258C37C812CT}_is1
var                                
  InsPath: String;
  er: boolean;
  myFile:String;
begin
  Result:=ExpandConstant('C:\Games\World_of_Tanks_CT\'); //если ключа нет то будем ставить сюда
  er := RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812CT}_is1', 'InstallLocation', InsPath);
  if er and (InsPath<>'') then //если ключ существует и там что-то записано
  begin
    Result := InsPath;
  end;
end;

Можно заменить на:

#define ClientRU "{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1"
;#define ClientCT "{1EAC1D02-C6AC-4FA6-9A44-96258C37C812CT}_is1"

[Setup]
DefaultDirName={code:WotDirName}

[Code]
Function WotDirName(S: String): String;
var                                 
 InsPath: String;
 er: boolean;
 myFile:String;
begin
 Result:=ExpandConstant('C:\Games\World_of_Tanks\');
  #ifdef ClientRU
 er := RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{#ClientRU}', 'InstallLocation', InsPath);
  #elif ClientCT
 er := RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{#ClientCT}', 'InstallLocation', InsPath);
  #endif
 if er and (InsPath<>'') then
 begin
  Result := InsPath;
 end;
end;
Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

что это означает? Заранее спс.

Переведи и ты поймёшь... :an:

Share this post


Link to post

Short link
Share on other sites

mpmp, поверь ты мне: скина хватает и для одного окна установки, для деинсталлятора его прикручивать нет никакого смысла. Это как мёртвому припарка.

 
#ifdef UNICODE
    #define A "U"
#else
    #define A "A"
#endif

[Setup]
AppName=ISSkin Example
AppVersion=1.0.0.0
DefaultDirName={pf}\ISSkin

[Files]
Source: "Embedded\ISSkinEx{#A}.dll"; DestDir: "{tmp}"; Flags: dontcopy;
Source: "Embedded\Skin.cjstyles"; DestDir: "{tmp}"; Flags: dontcopy;

[~~~~~~~~~~~если ты хоть что-то соображаешь, то поймёшь что надо с этим делать~~~~~~~~~~~Code~~~~~~~~~~~если ты хоть что-то соображаешь, то поймёшь что надо с этим делать~~~~~~~~~~~]
procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskinex{#A}.dll stdcall';
procedure UnloadSkin(); external 'UnloadSkin@files:isskinex{#A}.dll stdcall';
function ShowWindow(hWnd: Integer; uType: Integer): Integer; external '[email protected] stdcall';

function InitializeSetup(): Boolean;
begin
  ExtractTemporaryFile('Skin.cjstyles');
  LoadSkin(ExpandConstant('{tmp}\Skin.cjstyles'), 'NormalBlack.ini');
  Result:=True;
end;

procedure DeinitializeSetup();
begin
  ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
  UnloadSkin();
end;

 

Я сейчас понял, именно то, что ты послал меня.facepalmic.gif

Было неудобно то спросить еще раз и еще раз ...

Теперь получиться отличный дизайнерский установщик.

Еще раз спасибо.

Edited by mpmp

Share this post


Link to post

Short link
Share on other sites

Уважаемые, бился неделю над озвучкой компонента (у меня Анси).  

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

Автор кода, как и для Юникода, все тот же: Shegorat (земной ему поклон с кисточкой и огромная благодарность!)

[setup]
AppName=My Program
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
ComponentsListTVStyle=true

[Files]
Source: sounds\*; flags: dontcopy;

[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[Components]
Name: sound; Description: Звук выстрела; Types: full;
Name: sound\snd1; Description: "Тихий"; Flags: exclusive;
Name: sound\snd2; Description: "Громкий"; Flags: exclusive;


const
LB_ITEMFROMPOINT = $01A9;
Phrase = '(прослушать)';

type
TComponentSound = record
SoundName: String;
Index: Integer;
end;
TSize = record
cx: Longint;
cy: Longint;
end;
ABC = record
abcA: Integer;
abcB: UINT;
abcC: Integer;
end;
HDC = Longword;
HGDIOBJ = Longword;

var
iSound: array of TComponentSound;
sndCompOldProc: TNotifyEvent;

function GetCursorPos(var lpPoint: TPoint): BOOL; external '[email protected] stdcall';
function MapWindowPoints(hWndFrom, hWndTo: HWND; var lpPoints: TPoint; cPoints: UINT): Integer; external '[email protected] stdcall';

function GetTextExtentPoint32(DC: HDC; lpString: String; Len: Integer; var lpSize: TSize): Boolean; external '[email protected] stdcall';
function GetClientDC(hWnd: HWND): HDC; external '[email protected] stdcall';
function ReleaseClientDC(hWnd: HWND; hDC: HDC): Integer; external '[email protected] stdcall';
function SelectObject(DC: HDC; p2: HGDIOBJ): HGDIOBJ; external '[email protected] stdcall';
function GetCharABCWidths(DC: HDC; uFirstChar, uLastChar: UINT; var lpAbc: ABC): Boolean; external '[email protected] stdcall';

function sndPlaySound(lpszSoundName: String; fuSound: UINT): BOOL; external '[email protected] stdcall';

function GetTextWidth(aFont: TFont; Text: String): Integer;
var
DC: HDC;
aSize: TSize;
OldObj: Longword;
abc1, abc2: ABC;
begin
if Text='' then Exit;
DC:= GetClientDC(0);
try
OldObj:= SelectObject(DC, aFont.Handle);
GetTextExtentPoint32(DC, Text, Length(Text), aSize);
Result:= aSize.cx;
if (Length(Text)<>1)and(fsItalic in aFont.Style) then begin
GetCharABCWidths(DC, Ord(Text[1]), Ord(Text[1]), abc1);
GetCharABCWidths(DC, Ord(Text[Length(text)]), Ord(Text[Length(text)]), abc2);
if abc1.abcA<0 then Result:= Result-abc1.abcA;
if abc2.abcC<0 then Result:= Result-abc2.abcC
end;
finally
SelectObject(DC, OldObj);
ReleaseClientDC(0, DC);
end;
end;

procedure PlaySound(Sender: TObject);
var
x, o, n, lParam, i, f, ids, w1, w2, x1, x2: Integer;
p: TPoint;
sp, s: String;
fnt: TFont;
begin
GetCursorPos(p);
MapWindowPoints(0, WizardForm.ComponentsList.Handle, p, 1);

lParam:= p.x or (p.y shl 16);
i:= SendMessage(WizardForm.ComponentsList.Handle, LB_ITEMFROMPOINT, 0, lParam);
if ((i shr 16) = 1) or ((i and $FFFF) < 0) then Exit;

ids:= i and $FFFF;

o:= WizardForm.ComponentsList.Offset;
n:= WizardForm.ComponentsList.ItemLevel[ids];
if (WizardForm.ComponentsList.TreeViewStyle) then
x:= ScaleX((1 + o) + ((13 + o * 2)*(n + 1)) + (14 + o * 2))
else
x:= ScaleX((13 + o * 2)*(n + 1));

sp:= ' '+Phrase;

f:= -1;
for i:= 0 to GetArrayLength(iSound)-1 do begin
if (ids = iSound[i].Index) then begin
f:= i;
Break;
end;
end;

if (f < 0) then Exit;

s:= WizardForm.ComponentsList.ItemCaption[ids];
if (Pos(Phrase, s) <= 0) then Exit;

fnt:= WizardForm.ComponentsList.Font;
fnt.Style:= WizardForm.ComponentsList.ItemFontStyle[i];

w1:= GetTextWidth(fnt, Trim(s));
w2:= GetTextWidth(fnt, sp);

x2:= w1 + x;
x1:= x2 - w2;

if (p.x >= (x1 - 1)) and (p.x <= (x2 + 1)) then begin
if FileExists(iSound[f].SoundName) then
sndPlaySound(iSound[f].SoundName, 0);
end;

if (sndCompOldProc <> nil) then
sndCompOldProc(Sender);
end;

procedure AddItemSound(AIndex: Integer; AFilename: String);
var
i: Integer;
begin
i:= GetArrayLength(iSound);
SetArrayLength(iSound, i+1);
iSound[i].Index:= AIndex-1;
iSound[i].SoundName:= ExpandConstant(AFilename);
WizardForm.ComponentsList.ItemCaption[AIndex-1]:= WizardForm.ComponentsList.ItemCaption[AIndex-1] + ' '+Phrase;
end;

procedure InitializeWizard();
begin
WizardForm.TypesCombo.Visible:=False;
WizardForm.ComponentsList.Height := ScaleY(181) - WizardForm.TypesCombo.Top;
WizardForm.ComponentsList.Top := WizardForm.TypesCombo.Top;
WizardForm.ComponentsList.Width := ScaleX(417);
sndCompOldProc:= WizardForm.ComponentsList.OnClick;
WizardForm.ComponentsList.OnClick:= @PlaySound;

ExtractTemporaryFile('1.wav');
ExtractTemporaryFile('2.wav');
AddItemSound(2, '{tmp}\1.wav');
AddItemSound(3, '{tmp}\2.wav');
end;

Share this post


Link to post

Short link
Share on other sites

Не хочет очистить кэш, где проблема:
 

[Code]
var
  BackupPage: TWizardPage;
  DeleteRadioButton, NoneRadioButton: TNewRadioButton;
  NewCheckBox1: TNewCheckBox;

function BackupCheck(): Boolean;
var
  BackupDescLabel, DeleteDescLabel, NewCheckBoxLabel, NoneDescLabel: TLabel;

begin
  BackupPage:=CreateCustomPage(wpSelectDir, '', '');
  BackupDescLabel:=TLabel.Create(WizardForm);
  BackupDescLabel.Parent:=BackupPage.Surface;
  BackupDescLabel.Left:=30;  //==== Настройки на текста над бутоните за изтриване на старите модове: ляво-дясно и горе-долу
  BackupDescLabel.Top:=20;
  BackupDescLabel.Width:=BackupPage.SurfaceWidth;
  BackupDescLabel.Height:=90;
  BackupDescLabel.AutoSize:=False;
  BackupDescLabel.Wordwrap:=True;
  BackupDescLabel.Caption:='За да бъдат избегнати проблеми със съвместимостта и конфликти между различните модове (модификации), '#13'се препоръчва да бъдат изтрити текущите ви модове(модификации) от вашия игрови клиент.' #13#13 'Изберете една от двете опции:'#13'Да бъде изчистена от текущите ви модове, съдържанието на папката "res_mods\{#GameVersion}", или'#13'Да не се изтрива нищо от съдържанието й.';

  DeleteRadioButton:=TNewRadioButton.Create(WizardForm);
  DeleteRadioButton.Parent:=BackupPage.Surface;
  DeleteRadioButton.Checked:=False;
  DeleteRadioButton.Left:=100;   //==== местене на изтриващия бутон
  DeleteRadioButton.Top:=140;
  DeleteRadioButton.Width:=BackupPage.SurfaceWidth;
  DeleteRadioButton.Font.Style:=[fsBold];
  DeleteRadioButton.Font.Size:=9;
  DeleteRadioButton.Caption:='Изтрий текущите модове (модификации)' //==== Текст на бутона за триене ====\\
  DeleteDescLabel:=TLabel.Create(WizardForm);
  DeleteDescLabel.Parent:=BackupPage.Surface;
  DeleteDescLabel.Left:=100; //==== местене в ляво-дясно на текста под изтриващия бутон
  DeleteDescLabel.Top:=DeleteRadioButton.Top + DeleteRadioButton.Height + 4;
  DeleteDescLabel.Width:=BackupPage.SurfaceWidth;
  DeleteDescLabel.Height:=40;
  DeleteDescLabel.AutoSize:=False;
  DeleteDescLabel.Wordwrap:=True;
  DeleteDescLabel.Caption:='Инсталатора ще изтрие съдържанието на папката с текущите модове.';

  NoneRadioButton:=TNewRadioButton.Create(WizardForm);
  NoneRadioButton.Parent:=BackupPage.Surface;
  NoneRadioButton.Checked:=False;
  NoneRadioButton.Left:=100;  //==== местене на неизтриващия бутон
  NoneRadioButton.Top:=200;
  NoneRadioButton.Width:=BackupPage.SurfaceWidth;
  NoneRadioButton.Font.Style:=[fsBold];
  NoneRadioButton.Font.Size:=9;
  NoneRadioButton.Caption:='Не изтривай текущите модове (модификации)' //==== Текст на неизтриващия бутон ====\\
  NoneDescLabel:=TLabel.Create(WizardForm);
  NoneDescLabel.Parent:=BackupPage.Surface;
  NoneDescLabel.Left:=100;  //==== местене в ляво-дясно на текста под неизтриващия бутон
  NoneDescLabel.Top:=NoneRadioButton.Top + NoneRadioButton.Height + 4;
  NoneDescLabel.Width:=BackupPage.SurfaceWidth;
  NoneDescLabel.Height:=40;
  NoneDescLabel.AutoSize:=False;
  NoneDescLabel.Wordwrap:=True;
  NoneDescLabel.Caption:='Инсталаторът ще остави всичко както е, без да трие текущите ви модове.';

  NewCheckBox1:=TNewCheckBox.Create(WizardForm);
  NewCheckBox1.Parent:=BackupPage.Surface;
  NewCheckBox1.Checked:=False;
  NewCheckBox1.Left:=100;   //==== местене на изтриващия бутон
  NewCheckBox1.Top:=240;
  NewCheckBox1.Width:=BackupPage.SurfaceWidth;
  NewCheckBox1.Font.Style:=[fsBold];
  NewCheckBox1.Font.Size:=9;
  NewCheckBox1.Caption:='Опит за летене' //==== Текст на бутона за триене ====\\
  NewCheckBoxLabel:=TLabel.Create(WizardForm);
  NewCheckBoxLabel.Parent:=BackupPage.Surface;
  NewCheckBoxLabel.Left:=100; //==== местене в ляво-дясно на текста под изтриващия бутон
  NewCheckBoxLabel.Top:=NewCheckBox1.Top + NewCheckBox1.Height + 4;
  NewCheckBoxLabel.Width:=BackupPage.SurfaceWidth;
  NewCheckBoxLabel.Height:=40;
  NewCheckBoxLabel.AutoSize:=False;
  NewCheckBoxLabel.Wordwrap:=True;
  NewCheckBoxLabel.Caption:='Втори опит за летене'
end;

function BackupCheck_1(): Boolean;
begin
  If DeleteRadioButton.Checked then
begin
  WizardForm.ProgressGauge.Hide;
  WizardForm.StatusLabel.Caption:='Изтриване на файловете...';
  DelTree(ExpandConstant('{app}\res_mods'), True, True, True);
  CreateDir(ExpandConstant('{app}\res_mods'));
  CreateDir(ExpandConstant('{app}\res_mods\{#GameVersion}'));
  WizardForm.ProgressGauge.Show;
  WizardForm.StatusLabel.Caption:=SetupMessage(msgStatusExtractFiles);
end;
end;

function ClearCacheCreate(): Boolean;
begin
  If NewCheckBox1.Checked then
begin
  WizardForm.ProgressGauge.Hide;
  WizardForm.StatusLabel.Caption:='Трием кеша...';
  DelTree(ExpandConstant('{userappdata}\Roaming\wargaming.net\WorldOfTanks\account_caches'), True, True, True);
  DelTree(ExpandConstant('{userappdata}\Roaming\wargaming.net\WorldOfTanks\battle_results'), True, True, True);
  DelTree(ExpandConstant('{userappdata}\Roaming\wargaming.net\WorldOfTanks\custom_data'), True, True, True);
  DelTree(ExpandConstant('{userappdata}\Roaming\wargaming.net\WorldOfTanks\dossier_cache'), True, True, True);
  DelTree(ExpandConstant('{userappdata}\Roaming\wargaming.net\WorldOfTanks\messenger_cache'), True, True, True);
  DelTree(ExpandConstant('{userappdata}\Roaming\wargaming.net\WorldOfTanks\tutorial_cache'), True, True, True);
  DelTree(ExpandConstant('{userappdata}\Roaming\wargaming.net\WorldOfTanks\xvm'), True, True, True);
  WizardForm.ProgressGauge.Show;
  WizardForm.StatusLabel.Caption:=SetupMessage(msgStatusExtractFiles);
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  If CurStep=ssInstall then
begin
  BackupCheck_1();
  ClearCacheCreate();
end;
end;

procedure InitializeWizard();
begin
  BackupCheck();
end;

Edited by mpmp

Share this post


Link to post

Short link
Share on other sites

 

 

Не хочет очистить кэш, где проблема
Нигде. Должен очищать.
А если так:
  DelTree(ExpandConstant('{userappdata}') + '\Roaming\wargaming.net\WorldOfTanks\account_caches', True, True, True);
  DelTree(ExpandConstant('{userappdata}') + '\Roaming\wargaming.net\WorldOfTanks\battle_results', True, True, True);
и т.д.

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