You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修复Inno Setup中Revit版本关联安装路径缺失年份的问题

问题原因

你的Inno Setup脚本中,DefaultDirName绑定的GetInstallPath函数会在安装程序启动初期就执行,此时用户还未选择Revit版本,SelectedVersion为空字符串,导致最终路径缺失年份后缀。而原有的CurPageChanged逻辑仅在用户切换到版本选择页时赋值,此时安装路径已经初始化完成,不会自动更新。

解决方案

通过调整事件逻辑,确保用户选择版本后主动更新安装路径,同时设置合理的初始默认版本:

[Setup]
AppName=AedasHomesAddin
AppVersion=1.0
DefaultDirName={code:GetInstallPath}
DefaultGroupName=AedasHomesAddin
OutputDir=Output
OutputBaseFilename=AedasHomesAddinSetup
Compression=lzma
SolidCompression=yes
DisableDirPage=yes

[Code]
var
  SelectedVersion: String;
  Page: TInputOptionWizardPage;

function GetInstallPath(Param: String): String;
begin
  // 根据选中年份构建安装路径
  Result := ExpandConstant('{commonappdata}\Autodesk\Revit\Addins\' + SelectedVersion);
end;

procedure InitializeWizard;
begin
  // 创建版本选择自定义页面
  Page := CreateInputOptionPage(wpWelcome, 'Select Revit Version', 'Choose the Revit version to install:', 'Select the version:', True, False);
  Page.Add('Revit 2019');
  Page.Add('Revit 2020');
  Page.Add('Revit 2021');
  Page.Add('Revit 2022');
  Page.Add('Revit 2023');
  Page.Add('Revit 2024');

  // 设置默认版本,避免初始路径缺失年份
  SelectedVersion := '2023';
  Page.SelectedValueIndex := 4; // 默认选中2023选项
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  Result := True;
  // 用户在版本选择页点击下一步时,更新选中版本并同步安装路径
  if CurPageID = Page.ID then
  begin
    case Page.SelectedValueIndex of
      0: SelectedVersion := '2019';
      1: SelectedVersion := '2020';
      2: SelectedVersion := '2021';
      3: SelectedVersion := '2022';
      4: SelectedVersion := '2023';
      5: SelectedVersion := '2024';
    end;
    // 手动更新安装路径控件的值
    WizardForm.DirEdit.Text := GetInstallPath('');
  end;
end;

// 用户返回版本选择页时,自动选中之前选择的版本
procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = Page.ID then
  begin
    case SelectedVersion of
      '2019': Page.SelectedValueIndex := 0;
      '2020': Page.SelectedValueIndex := 1;
      '2021': Page.SelectedValueIndex := 2;
      '2022': Page.SelectedValueIndex := 3;
      '2023': Page.SelectedValueIndex := 4;
      '2024': Page.SelectedValueIndex := 5;
    end;
  end;
end;


[Files]
Source: "C:\Users\jmore\Documentos\Programacion REVIT\C# Jorge\AedasHomesAddin\bin\Debug\AedasHomesAddin.dll"; DestDir: "{code:GetInstallPath}"
Source: "C:\Users\jmore\Documentos\Programacion REVIT\C# Jorge\AedasHomesAddin\bin\Debug\AedasManifest.addin"; DestDir: "{code:GetInstallPath}"
Source: "C:\Users\jmore\Documentos\Programacion REVIT\C# Jorge\AedasHomesAddin\img\AedasHomes.png"; DestDir: "{code:GetInstallPath}"
修改说明
  1. 初始默认版本:在InitializeWizard中设置默认版本并选中对应选项,确保安装程序启动时路径就包含年份,避免初始路径异常。
  2. NextButtonClick事件:替换原CurPageChanged的赋值逻辑,在用户确认选择(点击下一步)时才更新版本号,并手动修改安装路径控件的显示值,确保路径同步更新。
  3. 返回页同步:添加返回版本选择页时的选中状态恢复逻辑,提升用户操作体验。

内容的提问来源于stack exchange,提问作者M0nchit0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 12:30:56