如何通过命令行设置install4j的compiler:sys.fullName并解决本地化失效问题
关于内置sys变量命令行覆盖不生效的问题
你理解的完全正确,install4j的规则就是:仅在General Settings->Compiler Variables中手动预定义的自定义编译器变量支持通过命令行-D参数覆盖,sys.fullName属于内置系统编译器变量,不支持直接通过命令行传参修改,必须使用中间自定义变量方案:
- 先在编译器变量面板新增自定义变量,比如
intermediate_full_name - 在Full Name配置项填入
${compiler:intermediate_full_name}引用该变量 - 编译时通过
-D intermediate_full_name=你的值传参即可生效
关于i18n占位符失效的问题
你遇到的本地化报错是因为:命令行传入的变量值中包含的${i18n:msgkey}不会被install4j编译器做二次解析,只会被当做普通字符串直接赋值给变量,因此运行时无法识别该i18n引用,就会提示消息未找到。
可通过以下方案解决:
- 方案1(推荐):将i18n引用写到项目配置中,不要通过命令行传参传入。如果前缀需要自定义,可以拆分变量:
Full Name配置:${compiler:custom_name_prefix} ${i18n:msgkey}
编译传参:-D custom_name_prefix=Custom Name
这种方式下i18n占位符是项目预定义的,编译器可以正常识别解析。 - 方案2:如果必须动态拼接i18n内容,可改用运行时变量处理:在安装程序启动阶段新增「设置安装变量」动作,动态读取传入的参数值和i18n消息拼接后赋值给Full Name对应的运行时变量。
另外v8.0.11存在自定义编译器变量解析的已知缺陷,如果上述方案测试不生效,可以升级到8.0分支的最新补丁版本即可解决,无需跨大版本升级。
内容的提问来源于stack exchange,提问作者Reto Höhener
相关产品推荐
相关产品推荐

