本文介紹了如何從jpackage+wix向Windows APP添加快捷方式?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我得到了一個腳本(為簡潔起見,只是一個簡化的摘錄)來構建和打包我的應用程序,但它歸結起來就是用以下命令生成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
。我發現的內容是關于未解析的引用,特別是對快捷方式圖標的引用:...configundle.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后,我檢查并確認我確實有WixUIExtension.dll
在Wixbin
文件夾中)。
當我刪除--win-shortcut
選項時,會生成MSI安裝程序,但不幸的是桌面上沒有快捷方式圖標(應用程序有合適的圖標,因此,正如我使用--icon
開關和--resource-dir
指向A.O.生成的應用程序圖像一樣。應用程序圖標)。
正如您可能猜到的,這是從Cygwin調用的,所以有時它需要擺弄路徑,特別是在調用Windows可執行文件時(因此這些cygpath
內容)。
嗯,我找不到任何有建設性的方法,如何簡單地讓我的Java應用程序(來自JDK-14/15EA,但都沒有成功)打包的jpackage
在安裝后擁有漂亮的快捷方式圖標。有人知道怎么解決這個問題嗎?提前謝謝。
推薦答案
使用Gradle插件更容易
您需要設置正確的圖標文件路徑并具有有效的.ico文件。我是這樣做的:
jlink {
options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages']
launcher {
name = 'PDF Decorator'
jvmArgs = ['-Djdk.gtk.version=2'] // required due to a bug in Java: https://github.com/javafxports/openjdk-jfx/issues/175
}
jpackage {
installerOptions = [
'--description', project.description,
'--copyright', 'Copyrigth 2015-2019 WALCZAK.IT'
]
installerType = project.findProperty('installerType') // we will pass this from the command line (example: -PinstallerType=msi)
if (installerType == 'msi') {
imageOptions += ['--icon', 'src/main/resources/pdfdecorator/gui/icon.ico']
installerOptions += [
'--win-per-user-install', '--win-dir-chooser',
'--win-menu', '--win-shortcut'
]
}
if (installerType == 'pkg') {
imageOptions += ['--icon', 'src/main/resources/pdfdecorator/gui/icon.icns']
}
if (installerType in ['deb', 'rpm']) {
imageOptions += ['--icon', 'src/main/resources/pdfdecorator/gui/icon_256x256.png']
installerOptions += [
'--linux-menu-group', 'Office',
'--linux-shortcut'
]
}
if (installerType == 'deb') {
installerOptions += [
'--linux-deb-maintainer', 'office@walczak.it'
]
}
if (installerType == 'rpm') {
installerOptions += [
'--linux-rpm-license-type', 'GPLv3'
]
}
}
}
這里有一篇文章,介紹如何使用OpenJDK 11和使用OpenJDK 14和jpackage構建僅用于構建安裝程序/包的應用程序鏡像:https://walczak.it/blog/distributing-javafx-desktop-applications-without-requiring-jvm-using-jlink-and-jpackage
這篇關于如何從jpackage+wix向Windows APP添加快捷方式?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,