以下是一个使用 Inno Setup 创建多版本选择的安装页面的示例代码:

[Setup]
AppName=My Application
AppVersion=1.0
DefaultDirName={pf}\My Application

[Files]
Source: "FileA.exe"; DestDir: "{app}"; Components: Version1
Source: "FileB.exe"; DestDir: "{app}"; Components: Version2
Source: "FileC.exe"; DestDir: "{app}"; Components: Version3
Source: "FileD.exe"; DestDir: "{app}"

[Components]
Name: Version1; Description: "Version 1"
Name: Version2; Description: "Version 2"
Name: Version3; Description: "Version 3"

[Code]
var
  VersionPage: TInputOptionWizardPage;

procedure InitializeWizard;
begin
  VersionPage := CreateInputOptionPage(wpWelcome, 'Select Version', 'Select the version you want to install.', 'Please choose a version:', True, False);
  VersionPage.Add('Version 1');
  VersionPage.Add('Version 2');
  VersionPage.Add('Version 3');
  VersionPage.Values[0] := True; // Set the default selection
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  Result := True;
  if CurPageID = VersionPage.ID then
  begin
    if VersionPage.Values[0] then
    begin
      // Version 1 selected
      { Perform actions specific to Version 1 }
      MsgBox('Version 1 selected', mbInformation, MB_OK);
      { Copy files with Components value set to Version1 }
      if not FileCopy(ExpandConstant('{src}\FileA.exe'), ExpandConstant('{app}\FileA.exe'), False) then
        MsgBox('Failed to copy FileA.exe', mbError, MB_OK);
    end
    else if VersionPage.Values[1] then
    begin
      // Version 2 selected
      { Perform actions specific to Version 2 }
      MsgBox('Version 2 selected', mbInformation, MB_OK);
      { Copy files with Components value set to Version2 }
      if not FileCopy(ExpandConstant('{src}\FileB.exe'), ExpandConstant('{app}\FileB.exe'), False) then
        MsgBox('Failed to copy FileB.exe', mbError, MB_OK);
    end
    else if VersionPage.Values[2] then
    begin
      // Version 3 selected
      { Perform actions specific to Version 3 }
      MsgBox('Version 3 selected', mbInformation, MB_OK);
      { Copy files with Components value set to Version3 }
      if not FileCopy(ExpandConstant('{src}\FileC.exe'), ExpandConstant('{app}\FileC.exe'), False) then
        MsgBox('Failed to copy FileC.exe', mbError, MB_OK);
    end;
  end;
end;

这个示例代码创建了一个多选版本的安装页面 VersionPage,用户可以选择要安装的版本。根据用户选择的版本,根据 Components 的值将相应的文件复制到指定位置。

请注意,示例代码中的文件 FileA.exeFileB.exeFileC.exe 已经在 [Files] 部分定义,并分别使用了 ComponentsVersion1Version2Version3。这些文件将根据用户选择的版本进行复制。

另外,示例代码还使用了 FileCopy 函数来复制文件。你可以根据自己的需求自定义更多的操作,比如创建文件夹、创建注册表项等。

请根据你的实际需求进行适当的修改和扩展

Inno setup重新写一个多版本选择的安装页面如果选择的版本名称与文件的Components的值一致将文件筛选出并复制到指定位置此安装包里面有多个文件并且有些文件无Components差别

原文地址: http://www.cveoy.top/t/topic/hWMi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录