Inno setup Inno安装程序-如何在卸载程序中显示完成百分比、运行时间和估计时间进度?

Inno setup Inno安装程序-如何在卸载程序中显示完成百分比、运行时间和估计时间进度?,inno-setup,Inno Setup,我正在尝试使用以下代码: 但是我有问题,因为我也使用此代码安装程序。将这两段代码合并在一起: [代码] 函数设置计时器(hWnd:longword;nIDEvent,UERelease:longword; lpTimerFunc:LongWord):LongWord;外部的SetTimer@user32.dllstdcall'; 函数GetTickCount:DWORD; 外部的GetTickCount@kernel32.dllstdcall'; 变量 斯塔蒂克:德沃德; 卸载百分比标签

我正在尝试使用以下代码:


但是我有问题,因为我也使用此代码安装程序。

将这两段代码合并在一起:

[代码]
函数设置计时器(hWnd:longword;nIDEvent,UERelease:longword;
lpTimerFunc:LongWord):LongWord;外部的SetTimer@user32.dllstdcall';
函数GetTickCount:DWORD;
外部的GetTickCount@kernel32.dllstdcall';
变量
斯塔蒂克:德沃德;
卸载百分比标签:TNewStaticText;
卸载标签:TNewStaticText;
卸载RemainingLabel: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]);
结束;
过程CurUninstallStep已更改(CurUninstallStep:TUninstallStep);
开始
如果CurUninstallStep=usUninstall,则
开始
卸载starttick:=GetTickCount;
结束;
结束;
卸载TimerProc的过程(
h:LongWord;AMsg:LongWord;IdEvent:LongWord;dwTime:LongWord);
变量
科蒂克:德沃德;
进度:整数;
MaxProgress:整数;
开始
MaxProgress:=卸载ProgressForm.ProgressBar.Max;
CurProgress:=卸载ProgressForm.ProgressBar.Position;
如果MaxProgress>0,则
开始
CurTick:=GetTickCount;
卸载百分比标签。标题:=
格式('Done:%.2f%%',[(CurProgress*100.0)/MaxProgress]);
卸载LapsedLabel。标题:=
格式('已用时间:%s',[TicksToStr(CurTick-UninstallStartTick)];
如果CurProgress>0,则
开始
卸载RemainingLabel。标题:=
格式('剩余的:%s',[TicksToStr(
((CurTick-卸载Starttick)/CurProgress)*
(MaxProgress-CurProgress))];
结束;
结束;
结束;
过程初始化unInstallProgressForm();
开始
UninstallPercentLabel:=TNewStaticText.Create(UninstallProgressForm);
UninstallPercentLabel.Parent:=UninstallProgressForm.ProgressBar.Parent;
UninstallPercentLabel.Left:=UninstallProgressForm.ProgressBar.Left;
UninstallPercentLabel.Top:=UninstallProgressForm.ProgressBar.Top+
卸载ProgressForm.ProgressBar.Height+ScaleY(12);
UninstallElapsedLabel:=TNewStaticText.Create(UninstallProgressForm);
UninstallElapsedLabel.Parent:=UninstallProgressForm.ProgressBar.Parent;
UninstallElapsedLabel.Left:=UninstallPercentLabel.Left;
卸载eLapsedLabel。顶部:=
卸载百分比标签。顶部+卸载百分比标签。高度+刻度(4);
UninstallRemainingLabel:=TNewStaticText.Create(UninstallProgressForm);
UninstallRemainingLabel.Parent:=UninstallProgressForm.ProgressBar.Parent;
UninstallRemainingLabel.Left:=UninstallPercentLabel.Left;
卸载RemainingLabel。顶部:=
卸载eLapsedLabel.Top+卸载eLapsedLabel.Height+ScaleY(4);
SetTimer(0,0,100,CreateCallback(@UninstallTimerProc));{每100毫秒}
结束;
对于,您需要Inno设置6。如果您坚持使用Inno Setup 5,则可以使用库中的
WrapCallback
函数。请注意中所述的在卸载程序中使用扩展DLL的缺点


将这两段代码合并在一起:

[代码]
函数设置计时器(hWnd:longword;nIDEvent,UERelease:longword;
lpTimerFunc:LongWord):LongWord;外部的SetTimer@user32.dllstdcall';
函数GetTickCount:DWORD;
外部的GetTickCount@kernel32.dllstdcall';
变量
斯塔蒂克:德沃德;
卸载百分比标签:TNewStaticText;
卸载标签:TNewStaticText;
卸载RemainingLabel: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]);
结束;
过程CurUninstallStep已更改(CurUninstallStep:TUninstallStep);
开始
如果CurUninstallStep=usUninstall,则
开始
卸载starttick:=GetTickCount;
结束;
结束;
卸载TimerProc的过程(
h:LongWord;AMsg:LongWord;IdEvent:LongWord;dwTime:LongWord);
变量
科蒂克:德沃德;
进度:整数;
MaxProgress:整数;
开始
MaxProgress:=卸载ProgressForm.ProgressBar.Max;
CurProgress:=卸载ProgressForm.ProgressBar.Position;
如果MaxProgress>0,则
开始
CurTick:=GetTickCount;
卸载百分比标签。标题:=
格式('Done:%.2f%%',[(CurProgress*100.0)/MaxProgress]);
卸载LapsedLabel。标题:=
格式('已用时间:%s',[TicksToStr(CurTick-UninstallStartTick)];
如果CurProgress>0,则
开始
卸载RemainingLabel。标题:=
格式('剩余的:%s',[TicksToStr(
((CurTick-卸载Starttick)/CurProgress)*
(MaxProgress-CurProgress))];
结束;
结束;
结束;
过程初始化unInstallProgressForm();
开始
UninstallPercentLabel:=TNewStaticText.Create(UninstallProgressForm);
UninstallPercentLabel.Parent:=UninstallProgressForm.ProgressBar.Parent;
UninstallPercentLabel.Left:=UninstallProgressForm.ProgressBar.Left;
UninstallPercentLabel.Top:=UninstallProgressForm.ProgressBar.Top+
卸载ProgressForm.ProgressBar.Height+ScaleY(12);
UninstallElapsedLabel:=TNewStaticText.Create(UninstallProgressForm);
UninstallElapsedLabel.Parent:=UninstallProgressForm.ProgressBar.Parent;
UninstallElapsedLabel.Left:=UninstallPercentLabel.Left;
卸载eLapsedLabel。顶部:=
卸载百分比标签。顶部+卸载百分比标签。高度+刻度(4);
UninstallRemainingLabel:=TNewStaticText.Create(UninstallProgressForm);
UninstallRemainingLabel.Parent:=UninstallProgressForm.ProgressBar.Parent;
UninstallRemainingLabel.Left:=UninstallPercentLabel.L