我想知道如何在完成安装之前添加复选框。该复选框将询问用户是否要下载并安装第二个系统。接受所有脚本和安装步骤后,它应该出现在屏幕上。选中后,安装程序应通过 HTTP 下载另一个安装程序,然后安装下载的应用程序。
您可以在安装页面 (CreateInputOptionPage
) 之后创建自定义选项页面 (
wpInstalling
)。
并使用 Inno Setup 6.1 内置支持下载或 Inno Download Plugin 来触发下载(如果用户选择这样做)。
下面的代码使用Inno Download Plugin,但现在您应该使用Inno Setup内置的下载支持。请参阅 在 Inno Setup 中从 Internet 安装文件。
下载后,例如当显示“正在完成”页面 (
wpFinished
) 时,执行下载的应用程序。
[Code]
#include "idp.iss"
var
DownloadOptionPage: TInputOptionWizardPage;
procedure InitializeWizard();
begin
DownloadOptionPage :=
CreateInputOptionPage(wpInstalling,
'Additional download',
'Select what additional components do you want to download and install.',
'', False, False);
DownloadOptionPage.Add('Something');
idpDownloadAfter(DownloadOptionPage.ID);
end;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
if CurPageID = DownloadOptionPage.ID then
begin
if DownloadOptionPage.Values[0] then
begin
idpAddFile(
'https://www.example.com/something.exe',
ExpandConstant('{tmp}\something.exe'));
end;
end;
end;
procedure CurPageChanged(CurPageID: Integer);
var
FileName: string;
ResultCode: Integer;
begin
if CurPageID = wpFinished then
begin
FileName := ExpandConstant('{tmp}\something.exe');
if FileExists(FileName) then
begin
if not Exec(FileName, '', '', SW_SHOW, ewNoWait, ResultCode) then
begin
MsgBox(Format('Error executing %s', [FileName]), mbError, MB_OK);
end;
end;
end;
end;
尽管 Inno Setup 和 Download Plugin 的设计目的并不是在安装完成后执行任何操作。例如,“取消”按钮被隐藏,因此您无法取消下载。更糟糕的是,如果由于某种原因下载失败,您将无法退出安装程序。
也许可以解决。
但是您可以考虑使用标准工作流程,在安装之前收集所有用户选项并下载依赖项。