安装程序 – Inno Setup:如何操作Run部分的进度条?
与此问题类似:
How to set the progress bar value in the [Run] section of the Inno Setup install script? 当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 由于我想在安装过程中控制进度条,我不知道该怎么做.我想也许可以使用BeforeInstall参数,创建一个代码,通过执行类似WizardForm.ProgressGauge.Position = 0的操作将进度条设置为0;并且在AfterInstall参数中,相反,WizardForm.ProgressGauge.Position = 100;,但是在安装过程中如何更改? 谢谢. 解决方法
更新进度条相当困难,而另一个进程正在运行.
我没有看到一个努力点,因为你不太可能告诉子安装程序的进度,所以你不知道要更新进度条的内容. 除特殊情况外,子安装程序提供API以报告其进度. > Inno Setup Get progress from .NET Framework 4.5 (or higher) installer to update progress bar position或 要根据已完成的子安装程序的数量更新进度条,您可以执行以下操作: [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; 要划分安装文件的部分进度范围,将其余部分划分为运行子安装程序,请参阅 另一种选择是使用“选取框”(=无限)进度条样式. 见Progress bar control styles. [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; 即使在Windows XP上也可以使用,尽管不再列在官方的Microsoft文档中.在Windows XP SP3上测试. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |