Yusha 8 #256588 Posted March 6, 2015 (edited) Можно ли сделать так, что бы после нажатия на клавишу(например "D") выполнялась определенная функция(например вывод сообщения)? Такое умеет радиальное меню. Сорь, тупанул... это же тема не модов, а установщиков. Edited March 6, 2015 by Yusha Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #257026 Posted March 8, 2015 Как сделать один файл для 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; Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #257027 Posted March 8, 2015 (edited) , это ты так заказ сел выполнять? Components: KMP\1\1 or KMP\2\1; з.ы. говорить о том, что это можно было узнать в справке, я думаю, бесполезно? Edited March 8, 2015 by Kotyarko_O Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #257029 Posted March 8, 2015 (edited) , это ты так заказ сел выполнять? Components: KMP\1\1 or KMP\2\1; з.ы. говорить о том, что это можно было узнать в справке, я думаю, бесполезно? нет, просто мне самому не удобно файлы подставлять, не привык я в справку смотреть, моя беда:( заказы это вообще не моя идея Edited March 8, 2015 by ♫♫♫Dark_Knight_MiX♫♫♫ Quote Share this post Link to post Short link Share on other sites
AtotIK 580 #257033 Posted March 8, 2015 Цирк, просто цирк. 1 Quote Share this post Link to post Short link Share on other sites
Djonny| 1 #257258 Posted March 9, 2015 всем привет. Если данный вопрос подымался, то меня хватило до 25 страницы. Подскажите как уменьшить вес инсталлятора? Какие методы для этого существуют? Хотелось бы побольше примеров. Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #257259 Posted March 9, 2015 всем привет. Если данный вопрос подымался, то меня хватило до 25 страницы. Подскажите как уменьшить вес инсталлятора? Какие методы для этого существуют? Хотелось бы побольше примеров. Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #257260 Posted March 9, 2015 (edited) @Djonny_tankist, зависит от содержимого.Есть данные, которые при максимальном или минимальном сжатии почти не теряют объём.Впрочем, пример выше уже приведён. Edited March 9, 2015 by Kotyarko_O Quote Share this post Link to post Short link Share on other sites
Djonny| 1 #257271 Posted March 9, 2015 (edited) //====={ Сжатие сетапа }=====\\ 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 March 9, 2015 by Djonny_tankist Quote Share this post Link to post Short link Share on other sites
AtotIK 580 #257274 Posted March 9, 2015 Все копируют необходимые данные из клиента. Эти папки каждый патч меняются, их проще копировать из первоисточника и не иметь с этим проблем. Неужели логически нельзя подумать? 1 Quote Share this post Link to post Short link Share on other sites
Djonny| 1 #257276 Posted March 9, 2015 Все копируют необходимые данные из клиента. Эти папки каждый патч меняются, их проще копировать из первоисточника и не иметь с этим проблем. Неужели логически нельзя подумать? Конечно спасибо за подсказку.Но я первый раз сел за эту прогу, и не имею навыков программирования и кодописания. 1 Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #257277 Posted March 9, 2015 (edited) Конечно спасибо за подсказку.Но я первый раз сел за эту прогу, и не имею навыков программирования и кодописания. Source: "{app}\res\audio\*"; DestDir: "{app}\res_mods\{#Patch}\audio\"; Flags: external recursesubdirs skipifsourcedoesntexist; Edited March 9, 2015 by ♫♫♫Dark_Knight_MiX♫♫♫ Quote Share this post Link to post Short link Share on other sites
Djonny| 1 #257280 Posted March 9, 2015 (edited) Source: "{app}\res\audio\*"; DestDir: "{app}\res_mods\{#Patch}\audio\"; Flags: external recursesubdirs skipifsourcedoesntexist; Вот что мне выкинуло: что это означает? Заранее спс. Edited March 9, 2015 by Djonny_tankist Quote Share this post Link to post Short link Share on other sites
Ekspoint 2,122 #257282 Posted March 9, 2015 (edited) Вот что мне выкинуло: 2.jpg 1.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 March 9, 2015 by ♫♫♫Dark_Knight_MiX♫♫♫ Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #257292 Posted March 9, 2015 (edited) Всю эту нерациональщину: [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 March 9, 2015 by Kotyarko_O Quote Share this post Link to post Short link Share on other sites
AtotIK 580 #257300 Posted March 9, 2015 что это означает? Заранее спс. Переведи и ты поймёшь... Quote Share this post Link to post Short link Share on other sites
mpmp 2 #257375 Posted March 10, 2015 (edited) 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; Я сейчас понял, именно то, что ты послал меня. Было неудобно то спросить еще раз и еще раз ... Теперь получиться отличный дизайнерский установщик. Еще раз спасибо. Edited March 11, 2015 by mpmp Quote Share this post Link to post Short link Share on other sites
ventura69 34 #257560 Posted March 11, 2015 Уважаемые, бился неделю над озвучкой компонента (у меня Анси). Для желающих выкладываю код озвучки компонента под Анси. Все визуальные отличия: вместо значка ноты - надпись "прослушать". Все работает на ура. Автор кода, как и для Юникода, все тот же: Shegorat (земной ему поклон с кисточкой и огромная благодарность!) [setup]AppName=My ProgramAppVerName=My Program 1.5DefaultDirName={pf}\My ProgramDefaultGroupName=My ProgramComponentsListTVStyle=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; constLB_ITEMFROMPOINT = $01A9;Phrase = '(прослушать)';typeTComponentSound = recordSoundName: String;Index: Integer;end;TSize = recordcx: Longint;cy: Longint;end;ABC = recordabcA: Integer;abcB: UINT;abcC: Integer;end;HDC = Longword;HGDIOBJ = Longword;variSound: 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;varDC: HDC;aSize: TSize;OldObj: Longword;abc1, abc2: ABC;beginif Text='' then Exit;DC:= GetClientDC(0);tryOldObj:= SelectObject(DC, aFont.Handle);GetTextExtentPoint32(DC, Text, Length(Text), aSize);Result:= aSize.cx;if (Length(Text)<>1)and(fsItalic in aFont.Style) then beginGetCharABCWidths(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.abcCend;finallySelectObject(DC, OldObj);ReleaseClientDC(0, DC);end;end;procedure PlaySound(Sender: TObject);varx, o, n, lParam, i, f, ids, w1, w2, x1, x2: Integer;p: TPoint;sp, s: String;fnt: TFont;beginGetCursorPos(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) thenx:= ScaleX((1 + o) + ((13 + o * 2)*(n + 1)) + (14 + o * 2))elsex:= ScaleX((13 + o * 2)*(n + 1));sp:= ' '+Phrase;f:= -1;for i:= 0 to GetArrayLength(iSound)-1 do beginif (ids = iSound[i].Index) then beginf:= 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 beginif FileExists(iSound[f].SoundName) thensndPlaySound(iSound[f].SoundName, 0);end;if (sndCompOldProc <> nil) thensndCompOldProc(Sender);end;procedure AddItemSound(AIndex: Integer; AFilename: String);vari: Integer;begini:= 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();beginWizardForm.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; Quote Share this post Link to post Short link Share on other sites
mpmp 2 #257699 Posted March 12, 2015 (edited) Не хочет очистить кэш, где проблема: [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 March 12, 2015 by mpmp Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #257706 Posted March 12, 2015 Не хочет очистить кэш, где проблема Нигде. Должен очищать.А если так: DelTree(ExpandConstant('{userappdata}') + '\Roaming\wargaming.net\WorldOfTanks\account_caches', True, True, True); DelTree(ExpandConstant('{userappdata}') + '\Roaming\wargaming.net\WorldOfTanks\battle_results', True, True, True); и т.д. Quote Share this post Link to post Short link Share on other sites