安装程序启动时间长 - 在 wpWelcome 之前添加对话框?
Long installer startup time - add dialog before wpWelcome?
我使用 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:\Users\Markus\AppData\Local\Temp\is-CBETM.tmp\license.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
时(真的值得吗?),你必须把安装程序启动所需的所有文件(比如"license"文件)在大文件之前。
否则安装程序必须在启动时解压缩所有大文件。
我使用 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:\Users\Markus\AppData\Local\Temp\is-CBETM.tmp\license.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
时(真的值得吗?),你必须把安装程序启动所需的所有文件(比如"license"文件)在大文件之前。
否则安装程序必须在启动时解压缩所有大文件。