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

安装程序运行时如何计算并设置建议的安装目录?

多版本安装包默认安装目录差异化配置方案

核心绕过逻辑

media wizard的静态配置字段不支持传入动态installer变量是预期行为,直接通过Installation location页面的前置激活脚本覆盖默认目录计算逻辑即可实现需求,操作步骤如下:

操作步骤

1. 确认编译器变量配置

你已有的生产/测试版区分编译器变量可直接复用,本文以IS_PROD_BUILD为例:生产版赋值为true,测试版赋值为false。

2. 覆盖默认安装目录逻辑

  • 打开Installer模块下的Screens & Actions界面,找到Installation location页面
  • 进入该页面的属性面板,找到Pre-activation script输入框,填入以下Groovy脚本:
if (compilerVariable.getBoolean("IS_PROD_BUILD")) {
    // 生产版默认路径为Program Files,需管理员权限
    context.setInstallationDir(new File(context.getVariable("sys.programFilesDir"), "你的应用名称"));
} else {
    // 测试版默认路径为用户主目录,无需管理员权限
    context.setInstallationDir(new File(context.getVariable("sys.userHome"), "你的应用名称"));
}
  • 回到media wizard配置页:取消勾选Custom base directory选项,Directory name字段可填任意占位值,脚本配置优先级高于media wizard的静态配置,不会被覆盖。

3. 配套权限配置

为匹配两类安装包的权限要求,可直接通过编译器变量控制权限申请逻辑:

  • 进入General Settings > Media Options,找到Request privileges下拉选项
  • 填入表达式:${IS_PROD_BUILD ? "admin" : "none"},即可实现生产版自动申请管理员权限、测试版不申请权限的效果。

注意事项

之前你在其他位置设置sys.installationDir不生效,是因为执行时机早于media wizard的默认目录计算逻辑,写在Installation location页面的Pre-activation script中会在页面加载前最后执行,完全覆盖默认计算结果。

内容的提问来源于stack exchange,提问作者Reto Höhener

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:54:02