如何在.arc减压中显示完成百分比,已用时间和预计时间进度?我正在尝试使用此代码的一部分How to add .arc decompression to Inno Setup?(百分比)将其添加到Inno Setup - How to add multiple arc files to decompress?
我正在尝试将ISDone的代码用于我的脚本。 ISDone代码使用函数:
function ProgressCallback(OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;
begin
if OveralPct<=1000 then ISDoneProgressBar1.Position := OveralPct;
LabelPct1.Caption := IntToStr(OveralPct div 10)+'.'+chr(48 + OveralPct mod 10)+'%';
LabelCurrFileName.Caption:=ExpandConstant('{cm:ExtractedFile} ')+MinimizePathName(CurrentFile, LabelCurrFileName.Font, LabelCurrFileName.Width-ScaleX(100));
LabelTime1.Caption:=ExpandConstant('{cm:ElapsedTime} ')+TimeStr2;
LabelTime2.Caption:=ExpandConstant('{cm:RemainingTime} ')+TimeStr1;
LabelTime3.Caption:=ExpandConstant('{cm:AllElapsedTime}')+TimeStr3;
Result := ISDoneCancel;
end;
这是为了定义标签的位置:
procedure CreateControls;
begin
LabelTime1 := TLabel.Create(WizardForm);
with LabelTime1 do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Width := ISDoneProgressBar1.Width div 2;
Left := ScaleX(0);
Top := PBTop + ScaleY(35);
end;
LabelTime2 := TLabel.Create(WizardForm);
with LabelTime2 do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Width := LabelTime1.Width+ScaleX(40);
Left := ISDoneProgressBar1.Width div 2;
Top := LabelTime1.Top;
end;
LabelTime3 := TLabel.Create(WizardForm);
with LabelTime3 do begin
Parent := WizardForm.FinishedPage;
AutoSize := False;
Width := 300;
Left := 180;
Top := 200;
end;
end;
此代码是ISDone 0.6代码的一部分。
答案 0 :(得分:0)
我假设您需要freearc提取以及ISDone的时间标签功能?如果是这样,您不必同时使用ISDone代码和ISFreeArcExtract代码,因为ISDone已实现Freearc提取。您可以使用ISArcExract函数来解压缩.arc文件。这是函数定义
function ISArcExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath, ExtractedPath: AnsiString; DeleteInFile:boolean; Password, CfgFile, WorkPath: AnsiString; ExtractPCF: boolean ):boolean; external 'ISArcExtract@files:ISDone.dll stdcall delayload';
这就是你如何使用它。以下代码可以在脚本的 CurStepChanged 过程中找到。您可以添加多个包含多个弧文件的行和 PctOfTotal ,以表示特定弧文件在整体安装中将占用的百分比为100%。
if not ISArcExtract ( 0, 10, ExpandConstant('{src}\data.arc'), ExpandConstant('{app}\'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
此处data.arc将被提取为freearc存档,并将消耗10%的安装费用。
请注意,上述部分取自ISDone 0.6