【发布时间】:2020-02-25 18:33:40
【问题描述】:
我有一个脚本(为简洁起见只是一个简化的摘录)来构建和打包我的应用程序,但它归结为生成 WiX 安装程序:
jpackage \
--type msi \
--dest "$(cygpath -w "${base[build:dist]}")" \
--name "${appDisplayName}" \
--app-version "${version}" \
--app-image "$(cygpath -w "${base[build:app]}")" \
--license-file "$(cygpath -w resources/app/legal/LICENSE)" \
--vendor "${vendor}" \
--verbose \
--temp 'W:\_tmp_' \
--win-shortcut;
它因神秘而失败:Command [light.exe, (...)] in (...) exited with 94 code。我发现这是关于未解决的引用,尤其是对快捷图标的引用:...\config\bundle.wxf(10) : error LGHT0094 : Unresolved reference to symbol 'Icon:icon1798580986' in section 'Fragment:'。
当我检查生成的 WiX XML 时,我发现:
<?xml version="1.0" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Fragment>
...
<DirectoryRef Id="DesktopFolder">
<Component Win64="yes" Id="cshortcut9906e12cdacb303ebb5e48c888cf6949" Guid="{9906e12c-dacb-303e-bb5e-48c888cf6949}">
...
<Shortcut Id="shortcut9906e12cdacb303ebb5e48c888cf6949" Name="..." WorkingDirectory="INSTALLDIR" Advertise="no" IconIndex="0" Target="[#filed2065cdc42e13
55f8bdbbefc93d540f3]" Icon="icon1798580986"></Shortcut>
</Component>
</DirectoryRef>
...
</Wix>
确实有这个“icon1798580986”值,它没有告诉我任何东西,甚至 WiX 也在这里丢失了(在阅读了这个 https://stackoverflow.com/a/21019152/2024692 之后,我检查并确认我确实在 WiX bin 文件夹中有 WixUIExtension.dll )。
当我删除 --win-shortcut 选项时,会生成 MSI 安装程序,但不幸的是桌面上没有快捷方式图标(该应用程序具有正确的图标,因为我使用 --icon 开关和 @ 生成了应用程序图像987654330@ 指向 a.o. 应用程序图标)。
您可能已经猜到,这是从 Cygwin 调用的,所以有时它需要修改路径,尤其是当调用 Windows 可执行文件时(因此有这些 cygpath 东西)。
好吧,我无法找到任何建设性的方法来简单地让我的 Java 应用程序包含 jpackage(来自 JDK-14/15 EA 都没有成功)在安装后具有漂亮的快捷方式图标。有谁知道如何解决这个问题?提前致谢。
【问题讨论】:
-
您找到合并图标的解决方案了吗?我刚刚放弃了创建桌面快捷方式。
-
@DavidCian 不幸的是还没有。我希望运行 postinstall 脚本(可以通过批处理脚本创建快捷方式),但似乎 postinstall 可以在 macOS 和 Linux 上运行,但不能在 Windows 上运行(至少我无法在 Windows 上运行它)。另一方面,如果您设法在 Windows 上运行安装后脚本,那么我会很乐意分享代码(但我想,您会通过自己的方式立即弄清楚)。