Installation Inno设置-阻止将进度条设置为100%提取文件

Installation Inno设置-阻止将进度条设置为100%提取文件,installation,inno-setup,pascalscript,Installation,Inno Setup,Pascalscript,在Inno SetupwpInstalling页面中,如何防止在[文件]部分中定义的文件的初始提取将进度条设置为(几乎)100% 我的安装脚本主要包括从“[Run]”部分安装大量第三方安装文件。示例如下: [Run] Filename: "{tmp}\vcredist_x86-2010-sp1.exe"; Parameters: "/q /norestart"; Check: InstallVCRedist; BeforeInstall: UpdateProgress(10, 'Instal

在Inno Setup
wpInstalling
页面中,如何防止在
[文件]
部分中定义的文件的初始提取将进度条设置为(几乎)100%

我的安装脚本主要包括从“[Run]”部分安装大量第三方安装文件。示例如下:

[Run]
Filename: "{tmp}\vcredist_x86-2010-sp1.exe"; Parameters: "/q /norestart"; Check: InstallVCRedist;  BeforeInstall: UpdateProgress(10, 'Installing Microsoft Visual C++ 2010 x86 Redistributable - 10.0.40219...');
Filename: "{tmp}\openfire_3_8_1.exe"; Check: InstallOpenFire; BeforeInstall: UpdateProgress(25, 'Installing OpenFire 3.8.1...');
Filename: "{tmp}\postgresql-8.4.16-2-windows.exe"; Parameters: "--mode unattended --unattendedmodeui none --datadir ""{commonappdata}\PostgreSQL\8.4\data"" --install_runtimes 0"; Check: InstallPostgreSQL;  BeforeInstall: UpdateProgress(35, 'Installing PostgreSQL 8.4...'); AfterInstall: UpdateProgress(50, 'Setting up database...');
安装这些第三方组件的时间比安装的任何其他部分都要长(到目前为止),但不幸的是,在最初提取这些文件期间,进度条从0%变为接近100%。然后,我可以使用以下步骤将进度条重置为我选择的数量:

procedure UpdateProgress(位置:整数;状态消息:字符串);
开始
WizardForm.StatusLabel.Caption:=StatusMsg;
WizardForm.ProgressGauge.Position:=位置*WizardForm.ProgressGauge.Max div 100;
结束;
然而,理想情况下,我更希望初始提取从0-10%(大约)开始,因为这将更接近实际发生的情况


是否存在捕获文件提取进度的事件,或者是否有防止或阻止文件提取更新进度条的方法?

您必须增加
向导form.ProgressGauge.Max

但不幸的是,Inno设置设置初始最大值后没有发生任何事件

但是,您可以滥用第一个安装的文件的名称

然后在
[Run]
部分中,使用
AfterInstall
来推进条形图

这扩展了我对这个问题的回答

[代码]
程序SetProgressMax(比率:整数);
开始
WizardForm.ProgressGauge.Max:=WizardForm.ProgressGauge.Max*比率;
结束;
过程更新进程(位置:整数);
开始
WizardForm.ProgressGauge.Position:=位置*WizardForm.ProgressGauge.Max div 100;
结束;

谢谢你,马丁。这很有魅力。先生,你是个圣人和学者。我一直喜欢捷克人,现在更是如此。有一个标记。
[Files]
Source: "vcredist_x86-2010-sp1.exe"; DestDir: "{tmp}"; BeforeInstall: SetProgressMax(10)
Source: "openfire_3_8_1.exe"; DestDir: "{tmp}"; 

[Run]
Filename: "{tmp}\vcredist_x86-2010-sp1.exe"; AfterInstall: UpdateProgress(55);
Filename: "{tmp}\openfire_3_8_1.exe"; AfterInstall: UpdateProgress(100);