Inno设置:选中后添加复选框和下载文件

时间:2017-11-03 06:11:02

标签: installer inno-setup

我想知道在完成安装之前如何添加复选框。该复选框将询问用户是否要下载并安装第二个系统。在接受所有脚本和安装步骤后,它应出现在屏幕上。检查设置时,应通过HTTP下载另一个安装程序,然后安装下载的应用程序。

1 个答案:

答案 0 :(得分:2)

您可以在安装页面(wpInstalling)之后创建自定义选项页面(CreateInputOptionPage)。

如果用户选择,则使用Inno Download Plugin来触发下载。

下载后,例如当"完成"页面(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;

Download options page

Download page

虽然在安装完成后,Inno Setup和Download Plugin都没有真正设计用于执行任何操作。例如,"取消" 按钮被隐藏,因此您无法取消下载。更糟糕的是,如果因任何原因导致下载失败,则无法退出安装程序。

它可能可以解决。

但您可以考虑使用标准工作流,其中收集所有用户选项并在安装之前下载依赖项。