Kur*_*rai 8 installer inno-setup pascalscript progress-bar
与此问题类似:
如何在Inno Setup安装脚本的[Run]部分设置进度条值?
当Inno Setup进入该[Run]部分时,进度条显示为100%并停在此位置.
我在本Run节中安装了许多文件,我希望重新启动进度条并控制它,因为它会安装每个程序.
状态消息很容易改变(StatusMsg),但我失去了一些进展.你能帮帮我吗?
例:
[Run]
Filename: "msiexec.exe"; Parameters: "/i ""msxml.msi"" /quiet"; \
StatusMsg: "MSXML..."; Flags: runascurrentuser
Filename: "msiexec.exe"; Parameters: "/i ""capicom_dc_sdk.msi"" /quiet"; \
StatusMsg: "CAPICOM..."; Flags: runascurrentuser
Run Code Online (Sandbox Code Playgroud)
由于我想在安装过程中控制进度条,我不知道该怎么做.我想也许在使用BeforeInstall参数,创建一个代码,通过执行类似WizardForm.ProgressGauge.Position = 0;和在AfterInstall参数中相反的方式将进度条设置为0 WizardForm.ProgressGauge.Position = 100;,但是在安装过程中如何更改?
谢谢.
Mar*_*ryl 12
更新进度条相当困难,而另一个进程正在运行.
我没有看到它的努力点,因为你不太可能告诉子安装程序的进度,所以你不知道要更新进度条的内容.
除特殊情况外,子安装程序提供API以报告其进度.
有关示例,请参阅:
要根据已完成的子安装程序的数量更新进度条,您可以执行以下操作:
[Run]
FileName: "process1"; BeforeInstall: UpdateProgress(0); AfterInstall: UpdateProgress(33)
FileName: "process2"; AfterInstall: UpdateProgress(66)
FileName: "process3"; AfterInstall: UpdateProgress(100)
[Code]
procedure UpdateProgress(Position: Integer);
begin
WizardForm.ProgressGauge.Position := Position * WizardForm.ProgressGauge.Max div 100;
end;
Run Code Online (Sandbox Code Playgroud)
要划分安装文件的部分进度范围,将其余部分划分为运行子安装程序,请参阅
Inno设置 - 防止从设置进度条中提取文件到100%
另一种选择是使用"选取框"(=无限)进度条样式.
请参阅进度条控件样式.
[Run]
FileName: "process1"; BeforeInstall: SetMarqueeProgress(True)
FileName: "process2"
FileName: "process3"; AfterInstall: SetMarqueeProgress(False)
[Code]
procedure SetMarqueeProgress(Marquee: Boolean);
begin
if Marquee then
begin
WizardForm.ProgressGauge.Style := npbstMarquee;
end
else
begin
WizardForm.ProgressGauge.Style := npbstNormal;
end;
end;
Run Code Online (Sandbox Code Playgroud)
尽管没有在官方Microsoft文档中列出,但即使在Windows XP上也能正常工作.在Windows XP SP3上测试.
| 归档时间: |
|
| 查看次数: |
4848 次 |
| 最近记录: |