Inno setup 如何显示完成百分比、经过的时间和估计的时间进度?

Inno setup 如何显示完成百分比、经过的时间和估计的时间进度?,inno-setup,Inno Setup,我想显示安装过程的完成百分比、运行时间和估计时间值。有没有办法添加在下面的屏幕截图中标记的文本标签 在Inno Setup 5.5.4引入事件方法之前,实现此功能并不容易。但现在,有了此事件,您可以编写如下脚本: 特别感谢您提出的修复回滚过程中隐藏标签的想法 [设置] AppName=我的程序 AppVersion=1.5 DefaultDirName={pf}\My程序 [档案] 资料来源:“MyProg.exe”;DestDir:“{app}” 资料来源:“MyProg.chm”;DestD

我想显示安装过程的完成百分比、运行时间和估计时间值。有没有办法添加在下面的屏幕截图中标记的文本标签


在Inno Setup 5.5.4引入事件方法之前,实现此功能并不容易。但现在,有了此事件,您可以编写如下脚本:

特别感谢您提出的修复回滚过程中隐藏标签的想法

[设置]
AppName=我的程序
AppVersion=1.5
DefaultDirName={pf}\My程序
[档案]
资料来源:“MyProg.exe”;DestDir:“{app}”
资料来源:“MyProg.chm”;DestDir:“{app}”
资料来源:“Readme.txt”;DestDir:“{app}”
[守则]
函数GetTickCount:DWORD;
外部的GetTickCount@kernel32.dllstdcall';
变量
斯塔蒂克:德沃德;
百分比标签:TNewStaticText;
ElapsedLabel:TNewStaticText;
剩余标签:TNewStaticText;
函数TicksToStr(值:DWORD):字符串;
变量
I:德沃德;
小时、分钟、秒:整数;
开始
I:=值div 1000;
秒:=I模60;
I:=I div 60;
分钟数:=I模60;
I:=I div 60;
小时数:=I mod 24;
结果:=格式('%.2d:%.2d:%.2d:%.2d',[h,min,s]);
结束;
程序初始化;
开始
PercentLabel:=TNewStaticText.Create(WizardForm);
PercentLabel.Parent:=WizardForm.ProgressGauge.Parent;
PercentLabel.Left:=0;
PercentLabel.Top:=WizardForm.ProgressGauge.Top+
WizardForm.ProgressGauge.Height+12;
ElapsedLabel:=TNewStaticText.Create(WizardForm);
ElapsedLabel.Parent:=WizardForm.ProgressGauge.Parent;
ElapsedLabel.左:=0;
ElapsedLabel.Top:=PercentLabel.Top+PercentLabel.Height+4;
RemainingLabel:=TNewStaticText.Create(WizardForm);
RemainingLabel.Parent:=WizardForm.ProgressGauge.Parent;
剩余标签。左:=0;
RemainingLabel.Top:=ElapsedLabel.Top+ElapsedLabel.Height+4;
结束;
过程CurPageChanged(CurPageID:Integer);
开始
如果CurPageID=wpp,则
StartTick:=GetTickCount;
结束;
过程取消按钮单击(CurPageID:Integer;var Cancel,Confirm:Boolean);
开始
如果CurPageID=wpp,则
开始
取消:=假;
如果ExitSetupMsgBox,则
开始
取消:=真;
确认:=假;
PercentLabel.Visible:=False;
ElapsedLabel.Visible:=False;
RemainingLabel.Visible:=False;
结束;
结束;
结束;
过程curinstalprogresschanged(CurProgress,MaxProgress:Integer);
变量
科蒂克:德沃德;
开始
CurTick:=GetTickCount;
百分比标签。标题:=
格式('Done:%.2f%%',[(CurProgress*100.0)/MaxProgress]);
ElapsedLabel。标题:=
格式('已用时间:%s',[TicksToStr(CurTick-StartTick)];
如果CurProgress>0,则
开始
RemainingLabel。标题:=
格式('剩余的:%s',[TicksToStr(
((CurTick-StartTick)/CurProgress)*(MaxProgress-CurProgress)));
结束;
结束;

@user1662035,是的,这是我当时的想法。但我会尝试看一些更精确的东西。无论如何,您可以使用现成的函数来显示退出确认对话框。但是,这条消息与“是否要退出安装程序”不同吗。目前我手头没有Inno设置来检查…到目前为止,可以使用内置的,而不是使用
InnoCallback.dll中的外部
WrapTimerProc
。有关示例,请参见。