如何修改jpackage生成的MSI安装对话框的显示文本?
问题
使用JDK 21版本的jpackage生成了jDiskMark-0.5.1.msi,执行脚本如下:
set VERSION=0.5.1 set JPKG_EXE="C:\Program Files\java\jdk-21\bin\jpackage" %JPKG_EXE% --type msi --input jdiskmark-v%VERSION% --main-jar jDiskMark.jar ^ --name jDiskMark-%VERSION% --app-version %VERSION% ^ --vendor "jdiskmark.net" --win-console --win-menu
运行该安装程序时,对话框中显示类似“2a243a02.msi”的随机文件名,与用户双击运行的jDiskMark-0.5.1.msi不符,易造成混淆。希望修改该显示内容(比如改为启动文件名,或参考Microsoft Orca显示“Microsoft Windows”),但尝试jpackage的--description选项无效,询问该字段名称及设置方法。
解决方案
这个显示的字段对应MSI安装包中的PackageName属性,以下是两种设置方法:
方法一:直接使用jpackage的--win-property参数
JDK 21的jpackage支持通过--win-property参数直接设置MSI的内部属性,只需在原有命令中添加指定PackageName的配置即可。修改后的脚本示例:
set VERSION=0.5.1 set JPKG_EXE="C:\Program Files\java\jdk-21\bin\jpackage" %JPKG_EXE% --type msi --input jdiskmark-v%VERSION% --main-jar jDiskMark.jar ^ --name jDiskMark-%VERSION% --app-version %VERSION% ^ --vendor "jdiskmark.net" --win-console --win-menu ^ --win-property PackageName=jDiskMark-0.5.1.msi
你可以将jDiskMark-0.5.1.msi替换为任意想要显示的文本,比如"jDiskMark 安装程序"。
方法二:使用MSI转换文件(.mst)
如果需要更复杂的MSI自定义,可通过转换文件实现:
- 先用原始jpackage命令生成MSI文件
- 使用Windows SDK中的Orca工具打开该MSI,找到Property表,修改
PackageName字段的值为目标文本 - 在Orca中导出转换文件(.mst格式)
- 在jpackage命令中添加
--win-msi-transform your-transform-file.mst参数,指定转换文件路径
重新生成MSI后,运行安装程序时,对话框就会显示你设置的PackageName内容,不再是随机文件名。
内容的提问来源于stack exchange,提问作者simgineer
相关产品推荐
相关产品推荐

