Inno Setup:添加复选框并在选中时下载文件

问题描述 投票:0回答:1

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

installation inno-setup
1个回答
4
投票

您可以在安装页面 (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;

Download options page

Download page


尽管 Inno Setup 和 Download Plugin 的设计目的并不是在安装完成后执行任何操作。例如,“取消”按钮被隐藏,因此您无法取消下载。更糟糕的是,如果由于某种原因下载失败,您将无法退出安装程序。

也许可以解决。

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

© www.soinside.com 2019 - 2024. All rights reserved.