if not ISArcExtract ( 0, 50, ExpandConstant('{src}\data-1.bin'), ExpandConstant('{app}'), 'Eng', false, '', '', ExpandConstant('{app}\Eng'), notPCFonFLY {PCFonFLY}) then break;
if not ISArcExtract ( 1, 50, ExpandConstant('{src}\data-1.bin'), ExpandConstant('{app}'), 'Rus', false, '', '', ExpandConstant('{app}\Rus'), notPCFonFLY {PCFonFLY}) then break;
ну ты сам подумай, у тебя в архиве две папки. при распаковке данного архива сначала происходит чтение всех данных, а потом распаковка нужных тебе данных, соответственно если у тебя в архиве одна папка, то архив быстрее распакуется, нежели чем две папки. так что либо забей на скорость, либо пакуй отдельно.Приветствую всех! Заранее извиняюсь, если вдруг не в ту тему задаю свой вопрос...
Уважаемые, подскажите пожалуйста как грамотно реализовать следующее:
Использую ISDone... Есть две папки - Eng и Rus.. в папке Eng - оригинальная игра на английском языке а в папке Rus только русифицированные файлы. Я запаковал эти две папки FreeArc'ом в один архив - Data-1.bin. При выборе пользователем английской версии, распаковывается папка Eng из архива. При выборе русской - папки Eng и Rus.Делаю так:
Проблема в том, что распаковка происходит гораздо дольше нежели если б я использовал отдельный архив для папки Rus... Но мне хочется что б был только один архив и инсталлятор все что нужно брал из него... Может можно както по другому это сделать?? Как боллее грамотно это можно реализовать, посоветуйте пожалуйста?Код:if not ISArcExtract ( 0, 50, ExpandConstant('{src}\data-1.bin'), ExpandConstant('{app}'), 'Eng', false, '', '', ExpandConstant('{app}\Eng'), notPCFonFLY {PCFonFLY}) then break; if not ISArcExtract ( 1, 50, ExpandConstant('{src}\data-1.bin'), ExpandConstant('{app}'), 'Rus', false, '', '', ExpandConstant('{app}\Rus'), notPCFonFLY {PCFonFLY}) then break;
а что помешало тебе упаковать игру отдельно,а файлы локализации отдельно.в папке Eng - оригинальная игра на английском языке а в папке Rus только русифицированные файлы.
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data-1.bin'), ExpandConstant('{app}'), 'Eng', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
if not ISArcExtract ( 1, 0, ExpandConstant('{src}\data-1.bin'), ExpandConstant('{app}'), 'Rus', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
думаю придется так и сделать.. просто я хотел что б все в одном архиве было..а что помешало тебе упаковать игру отдельно,а файлы локализации отдельно.
Тобишь архив с файлами локализации станет меньше следовательно распаковка будет быстрее
function MakeDesktopIcon: Boolean;
begin
Result:=DesktopIcon.Checked;
end;
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
if CurPageID = wpReady then
begin
if DesktopIcon.Checked = true then
begin
WizardForm.ReadyMemo.Lines.Add('Создание ярлыка:');
WizardForm.ReadyMemo.Lines.Add('На рабочем столе');
end;
end;
function RenameFile(const OldName, NewName: string): Boolean;Народ, подскажите, как через Inno Setup переименовать расширение файлов во всех папках\подпапках?
var
DesktopIcon: TCheckBox;
procedure InitializeWizard();
begin
DesktopIcon:= TCheckBox.Create(WizardForm);
with DesktopIcon do begin
Parent:= WizardForm.SelectProgramGroupPage;
Checked:= True;
Top:= ScaleY(120);
Width:= ScaleX(320);
Caption := 'Создать ярлык на рабочем столе';
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpReady:
begin
if DesktopIcon.Checked then begin
WizardForm.ReadyMemo.Lines.Add('');
WizardForm.ReadyMemo.Lines.Add('Дополнительные задачи:');
WizardForm.ReadyMemo.Lines.Add(' '+'Создать ярлык на рабочем столе');
end;
end;
end;
end;[/SOURCE][/SPOILER]
Дополнительные задачи:
Дополнительное ПО:
Установить Java
Дополнительные задачи:
Создать ярлык на рабочем столе
function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[B][[/B]Code]
function RenameFiles(const Path, Mask, NewExt: string; IncludeSubDir: boolean): integer;
(*
Path - полный путь до папки, в которой нужно переименовывать файлы;
Mask - маска, по которой переименовывать файлы (*.txt - в таком виде);
NewExt - новое расширение для файлов (.mp3 - в таком виде);
IncludeSubDir - переименовывать в подпапках);
Возвращает количество переименованных файлов;
*)
var
fResult: boolean;
fRec: TFindRec;
begin
Result := 0;
Path := AddBackslash(RemoveBackslash(Path));
fResult := FindFirst(Path + Mask, fRec);
while fResult do begin
if RenameFile(Path + fRec.Name, ChangeFileExt(Path + fRec.Name, NewExt)) then
Result := Result + 1;
fResult := FindNext(fRec);
end;
FindClose(fRec);
if not IncludeSubDir then
Exit;
fResult := FindFirst(Path + '*.*', fRec);
while fResult do begin
if (fRec.Name <> '.') and (fRec.Name <> '..') then
Result := Result + RenameFiles(Path + fRec.Name + '\', Mask, NewExt, true);
fResult := FindNext(fRec);
end;
FindClose(fRec);
end;
procedure InitializeWizard;
begin
WizardForm.Caption := IntToStr(RenameFiles(ExpandConstant('{src}'), '*.txt', '.mp3', true));
end;