gpt4 book ai didi

installation - 如何操作 Inno Setup Run 部分的进度条?

转载 作者:行者123 更新时间:2023-12-02 11:26:33 25 4
gpt4 key购买 nike

类似于这个问题:
How to set the progress bar value in the [Run] section of the Inno Setup install script?

当 Inno Setup 到达[Run]部分时,进度条显示为 100%,并停在该位置。

我在此运行部分中安装了许多文件,我希望在安装每个程序时重新启动进度栏并控制它。

状态消息很容易更改(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 来报告其进度。
有关示例,请参阅:

<小时/>

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

[Run]
FileName: "process1"; BeforeInstall: SetProgress(0); AfterInstall: SetProgress(33)
FileName: "process2"; AfterInstall: SetProgress(66)
FileName: "process3"; AfterInstall: SetProgress(100)

[Code]

procedure SetProgress(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;

enter image description here

即使在 Windows XP 上也可以工作,尽管不再在 Microsoft 官方文档中列出。在 Windows XP SP3 上测试。

enter image description here

关于installation - 如何操作 Inno Setup Run 部分的进度条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34336466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com