Delphi   发布时间:2022-04-10  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了安装程序 – 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

由于我想在@R_846_9382@控制进度条,我不知道该怎么做.我想也许可以使用BeforeInstall参数,创建一个代码,通过执行类似WizardForm.ProgressGauge.Position = 0的操作将进度条设置为0;并且在AfterInstall参数中,相反,WizardForm.ProgressGauge.Position = 100;,但是在@R_846_9382@如何更改?

谢谢.

解决方法

更新进度条相当困难,而另一个进程正在运行.

我没有看到一个努力点,因为你不太可能告诉子安装程序的进度,所以你不知道要更新进度条的内容.

除特殊情况外,子安装程序提供API以报告其进度.
有关示例,请参阅:

> Inno Setup Get progress from .NET Framework 4.5 (or higher) installer to update progress bar position
> Inno Setup – Make Inno Setup Installer report its installation progress status to master installer.

要根据已完成的子安装程序的数量更新进度条,您可以执行以下操作:

[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;

要划分安装文件的部分进度范围,将其余部分划分为运行子安装程序,请参阅
Inno Setup – Prevent extraction of files from setting progress bar to 100%

另一种选择是使用“选取框”(=无限)进度条样式.

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上测试.

大佬总结

以上是大佬教程为你收集整理的安装程序 – Inno Setup:如何操作Run部分的进度条?全部内容,希望文章能够帮你解决安装程序 – Inno Setup:如何操作Run部分的进度条?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。