我的安装程序使用Inno Setup创建的大小约为850 MB,包含约7000个文件和890个文件夹,未压缩大小为1.98 GB。
启动安装过程时,在Windows UAC对话框显示后,安装程序将在任务栏中显示一个空图标大约 45 秒,然后显示欢迎对话框。
我假设这发生在打开安装程序包装的过程中?仅使用虚拟文件条目运行安装程序会立即显示欢迎对话框。
在[Files]
部分中,我只指定一个相对文件夹:
Source: "{#Source}*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
"[Setup]
"部分中的压缩设置为:
Compression=lzma
SolidCompression=yes
在此期间,我是否可以显示一个对话框,为用户提供正在准备某些内容的视觉反馈?
要附加到此问题,请执行以下操作: 日志文件中 45 秒挂起之前的最后一个条目是:
Extracting temporary file: C:UsersMarkusAppDataLocalTempis-CBETM.tmplicense.rtf
我正在使用自定义许可证页面,在该页面上提取文件并将其加载为 RTFText:
procedure LicensePage_Create;
var
LicenseFileName: string;
LicenseFilePath: string;
LicenseText: AnsiString;
begin
LicensePage := CreateOutputMsgMemoPage(wpSelectDir, SetupMessage(msgWizardLicense), SetupMessage(msgLicenseLabel), SetupMessage(msgLicenseLabel3), '');
LicensePage.RichEditViewer.Height := WizardForm.LicenseMemo.Height;
LicenseFileName := 'license.rtf';
ExtractTemporaryFile(LicenseFileName);
LicenseFilePath := ExpandConstant('{tmp}license.rtf');
LoadStringFromFile(LicenseFilePath, LicenseText);
LicensePage.RichEditViewer.RTFText := LicenseText;
DeleteFile(LicenseFilePath);
LicensePage.OnActivate := @LicensePageActivate;
LicenseAcceptedRadio := CloneLicenseRadioButton(WizardForm.LicenseAcceptedRadio);
LicenseNotAcceptedRadio := CloneLicenseRadioButton(WizardForm.LicenseNotAcceptedRadio);
LicenseNotAcceptedRadio.Checked := True;
LicensePageID := LicensePage.ID;
end;
当你想使用SolidCompression
时(真的值得吗?(,你必须把安装程序启动所需的所有文件(如"许可证"文件(放在大文件之前。
否则,安装程序必须在启动时解压缩所有大文件。