CD エージェントで jpackage タスクを実行すると問題が発生します。次のエラーが表示されます。
light.exe : error LGHT0217 : Error executing ICE action 'ICE01'. The most common cause of this kind of ICE failure is an incorrectly registered scripting engine. See http://wixtoolset.org/documentation/error217/ for details and how to solve this problem. The following string format was not expected by the external UI message logger: "The Windows Installer Service could not be accessed. This can occur if the Windows Installer is not correctly installed. Contact your support personnel for assistance.".
私はいくつかの調査を行いましたが、基本的に問題は次の方法で解決できます。
- エージェントのユーザーに管理者権限を追加する
- 環境変数のサイズを確認します (一部の人にとっては、サイズが 32KB を超える環境変数を使用すると同様のエラーが発生します)
- ICE検証の抑制
私の場合、この解決策はそれぞれ無関係であるか、問題があります。
- CD で管理者ユーザーを使用できません
- 環境変数は 32KB (10KB) 未満です
- jpackage を使用して ICE 検証を抑制する方法が見つかりません - -sval を light.exe に渡すか、wixproj ファイルのプロパティを指定することで実行できることはわかっていますが、light.exe パラメータを jpackage に入力する方法がわかりません (可能な場合) --resource-dir で渡された wixproj ファイルは変更されていないようです。
明確にするために、私のローカル環境では完全に正常に動作しています。
したがって、おそらく私の問題は、jpackage レベルから ICE 検証を抑制することができるかどうかという問題に要約できます。
私はgradleにbadass-runtime-pluginを使用しており、javafx + spring bootアプリケーションのインストーラーを構築しようとしています。ここに私のbuild.gradel
関連部分があります:
runtime {
modules = ['java.management', 'java.naming', 'java.instrument', 'java.sql', 'jdk.unsupported', 'jdk.security.jgss', 'java.desktop', 'java.logging', 'jdk.jfr', 'java.xml', 'java.scripting', 'jdk.crypto.cryptoki']
options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages']
launcher {
noConsole = false
}
jpackage {
mainClass = 'org.springframework.boot.loader.JarLauncher'
imageOptions += ['--icon', "src/main/resources/graphics/icon.ico"]
imageOptions += ['--win-console']
installerOptions += ['--resource-dir', "src/main/resources"]
installerOptions += ['--vendor', 'XYZ']
installerOptions += ['--type', 'msi']
installerOptions += ['--verbose']
installerOptions += ['--resource-dir', "src/main/resources/wix"]
installerOptions += ['--win-per-user-install', '--win-dir-chooser', '--win-menu', '--win-shortcut']
}
}