Inno Setup如何将弹窗选择的安装目录应用到[Files]段的DestDir配置
你不需要手动替换[Files]段里的{app}常量,Inno Setup 中{app}本身就会自动指向最终生效的安装目录,你通过DefaultDirName={code:ChooseDir}设置的路径会直接作为{app}的取值。
你当前的代码只需要修正一处问题:Pascal 脚本中返回的路径如果包含{autopf}这类内置运行期常量,不会自动解析,需要调用ExpandConstant方法手动展开常量,修正后的函数代码如下:
function ChooseDir(Param: string): String; var FinalDir: String; begin case MsgBox('是否为桌面安装?'#13#10'选否则为Centurion OS仪器安装', mbConfirmation, MB_YESNO) of IDYES: FinalDir := ExpandConstant('{autopf}\{#MyAppName}'); IDNO: FinalDir := 'C:\Encon Evolution\{#MyAppName}'; end; Result := FinalDir; end;
你原有的[Files]段配置完全不需要改动,{app}\Encon会自动拼接成你弹窗选择的对应目录下的Encon子路径。
额外可选优化:如果不需要用户手动修改安装目录,避免选择的场景和实际安装目录不符,可以在[Setup]段添加配置:
DisableDirPage=yes
这样安装过程会跳过目录选择页,直接用你弹窗返回的路径作为安装目录。
内容的提问来源于stack exchange,提问作者IVOR_MECTIN
相关产品推荐
相关产品推荐

