調査 #24
完了Javaネイティブパッケージの作り方(Windows MSI形式)
100%
説明
Javaプログラムは、対象OSのインストーラ形式を作成しインストールすることができる。
そこで、Windows用のMSI形式でネイティブインストーラを作成しインストールするための環境、設定、制約を報告書にまとめる。
ファイル
projectmenu_package-1.png (29.3 KB) projectmenu_package-1.png | 高橋 徹, 2015/02/23 08:23 | ||
project_property-1.png (38.7 KB) project_property-1.png | 高橋 徹, 2015/02/23 08:30 |
高橋 徹 さんが約10年前に更新
- ファイル projectmenu_package-1.png projectmenu_package-1.png を追加
- 題名 を JavaFXネイティブパッケージの作り方 から JavaFXネイティブパッケージの作り方(Windows MSI形式) に変更
- 説明 を更新 (差分)
- 期日 を 2014/12/31 から 2015/03/07 に変更
- ステータス を 新規 から 進行中 に変更
- 進捗率 を 0 から 50 に変更
高橋 徹 さんが約10年前に更新
問題点¶
共通のアプリケーション・プロパティで、タイトルに日本語を入れたところ、ネイティブインストーラのビルドがエラーとなった。
Running [T:\Temp\iconswap6859677669244157418.exe, T:\Temp\fxbundler2242458562529610924\windows\アナログ時計SVG版.ico, T:\Temp\fxbundler2242458562529610924\images\win-msi.image\アナログ時計SVG版\アナログ時計SVG版.exe] Generated product GUID: aac5e4bf-6b14-4b8d-9cf9-6c160d2b1298 Preparing MSI config: C:\Users\torutk\Documents\AnalogClockSvg\dist\bundles\アナログ時計SVG版-0.1.0.msi Running [C:\Program Files (x86)\WiX Toolset v3.9\bin\candle.exe, -nologo, T:\Temp\fxbundler2242458562529610924\windows\アナログ時計SVG版.wxs, -ext, WixUtilExtension, -out, T:\Temp\fxbundler2242458562529610924\tmp\アナログ時計SVG版.wixobj] in T:\Temp\fxbundler2242458562529610924\images\win-msi.image\アナログ時計SVG版 Exec failed with code 104 command [[C:\Program Files (x86)\WiX Toolset v3.9\bin\candle.exe, -nologo, T:\Temp\fxbundler2242458562529610924\windows\アナログ時計SVG版.wxs, -ext, WixUtilExtension, -out, T:\Temp\fxbundler2242458562529610924\tmp\アナログ時計SVG版.wixobj] in T:\Temp\fxbundler2242458562529610924\images\win-msi.image\アナログ時計SVG版 Exiting C:\Users\torutk\Documents\AnalogClockSvg\build.xml. Exiting C:\Users\torutk\Documents\AnalogClockSvg\build.xml. Exiting C:\Users\torutk\Documents\AnalogClockSvg\build.xml. C:\Users\torutk\Documents\AnalogClockSvg\nbproject\jfx-impl.xml:3415: The following error occurred while executing this line: C:\Users\torutk\Documents\AnalogClockSvg\nbproject\jfx-impl.xml:3438: The following error occurred while executing this line: C:\Users\torutk\Documents\AnalogClockSvg\nbproject\jfx-impl.xml:1465: The following error occurred while executing this line: C:\Users\torutk\Documents\AnalogClockSvg\nbproject\jfx-impl.xml:3093: The following error occurred while executing this line: C:\Users\torutk\Documents\AnalogClockSvg\nbproject\jfx-impl.xml:2055: エラー: バンドラ"MSI Installer" (msi)がバンドルの生成に失敗しました。 at com.sun.javafx.tools.ant.DeployFXTask.execute(DeployFXTask.java:291) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at jdk.nashorn.internal.scripts.Script$29$\^eval\_.:program(<eval>:405) at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:636) at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:229) at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:387) at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:437) at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:401) at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:397) at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:152) at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.tools.ant.util.ReflectUtil.invoke(ReflectUtil.java:108) at org.apache.tools.ant.util.ReflectWrapper.invoke(ReflectWrapper.java:81) at org.apache.tools.ant.util.optional.JavaxScriptRunner.evaluateScript(JavaxScriptRunner.java:103) at org.apache.tools.ant.util.optional.JavaxScriptRunner.executeScript(JavaxScriptRunner.java:67) at org.apache.tools.ant.taskdefs.optional.Script.execute(Script.java:52) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:396) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.Target.execute(Target.java:435) at org.apache.tools.ant.Target.performTasks(Target.java:456) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393) at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38) at org.apache.tools.ant.Project.executeTargets(Project.java:1248) at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441) at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.Target.execute(Target.java:435) at org.apache.tools.ant.Target.performTasks(Target.java:456) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393) at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38) at org.apache.tools.ant.Project.executeTargets(Project.java:1248) at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441) at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.Target.execute(Target.java:435) at org.apache.tools.ant.Target.performTasks(Target.java:456) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393) at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38) at org.apache.tools.ant.Project.executeTargets(Project.java:1248) at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441) at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.Target.execute(Target.java:435) at org.apache.tools.ant.Target.performTasks(Target.java:456) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393) at org.apache.tools.ant.Project.executeTarget(Project.java:1364) at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) at org.apache.tools.ant.Project.executeTargets(Project.java:1248) at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:286) at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:555) at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:153) Caused by: com.sun.javafx.tools.packager.PackagerException: エラー: バンドラ"MSI Installer" (msi)がバンドルの生成に失敗しました。 at com.sun.javafx.tools.packager.PackagerLib.generateNativeBundles(PackagerLib.java:508) at com.sun.javafx.tools.packager.PackagerLib.generateDeploymentPackages(PackagerLib.java:471) at com.sun.javafx.tools.ant.DeployFXTask.execute(DeployFXTask.java:285) ... 92 more ビルド失敗(合計時間: 3秒)
高橋 徹 さんが約10年前に更新
エラーメッセージから、失敗しているのは、WiX toolsetのcandle.exeコマンド呼び出し
簡略化すると次のコマンドラインオプションを与えてcandle.exeが実行されている。
candle.exe -nologo path\to\アナログ時計SVG版.wxs -ext WixUtilExtension -out path\to\アナログ時計SVG版.wixobj
共通のアプリケーションプロパティの設定の日本語を順次英語に戻してみた。
試行# | 結果 | タイトル | ベンダー | 説明 | ホームページ | スプラッシュ画面 | 実装バージョン |
---|---|---|---|---|---|---|---|
1 | NG | 英語 | 日本語 | 日本語 | 空 | 空 | 0.1.0 |
2 | NG | 英語 | 英語 | 日本語 | 空 | 空 | 0.1.0 |
3 | OK | 英語 | 英語 | 英語 | 空 | 空 | 0.1.0 |
4 | NG | 英語 | 日本語 | 英語 | 空 | 空 | 0.1.0 |
5 | NG | 日本語 | 英語 | 英語 | 空 | 空 | 0.1.0 |
高橋 徹 さんが約10年前に更新
JDKのjavapackagerをコマンドラインで呼び出しその振る舞いを把握する。
まず、バッチファイルを作成した。
javapackager -deploy -native msi ^ -v ^ -outdir dist -outfile AnalogClockSvg ^ -srcdir dist -srcfiles AnalogClockSvg.jar ^ -appclass analogclocksvg.AnalogClockSvg ^ -name "AnalogClockSVG" ^ -BappVersion=0.1.1 ^ -Bruntime=C:/java/jdk1.8.0_31/jre ^ -title "Analog Clock with SVG" ^ -vendor Takahashi ^ -description "Analog Clock on desktop"
実行結果
自身へのjarのコピーをスキップします: AnalogClockSvg.jar 次にあるベースJDKを使用: C:\java\jdk1.8.0_31\jre Running [C:\java\jdk1.8.0_31\jre\bin\java, -version] Running [C:\Program Files (x86)\WiX Toolset v3.9\bin\candle.exe, /?] Detected [C:\Program Files (x86)\WiX Toolset v3.9\bin\candle.exe] version [3.9] Running [C:\Program Files (x86)\WiX Toolset v3.9\bin\light.exe, /?] Detected [C:\Program Files (x86)\WiX Toolset v3.9\bin\light.exe] version [3.9]WiX 3.6 detected. Enabling advanced cleanup action. Using default package resource [application icon] (add package/windows/AnalogClockSVG.ico to the class path to customize) Running [R:\Temp\iconswap2461017857659480161.exe, R:\Temp\fxbundler1096613707257883437\windows\AnalogClockSVG.ico, R:\Temp\fxbundler1096613707257883437\images\win-msi.image\AnalogClockSVG\AnalogClockSVG.exe] Icon File Name: R:\Temp\fxbundler1096613707257883437\windows\AnalogClockSVG.ico Executable File Name: R:\Temp\fxbundler1096613707257883437\images\win-msi.image\AnalogClockSVG\AnalogClockSVG.exe Config files are saved to R:\Temp\fxbundler1096613707257883437\windows. Use them to customize package. Generated product GUID: 09fc6432-e964-4317-8425-f90f21def720 Using default package resource [WiX config file] (add package/windows/AnalogClockSVG.wxs to the class path to customize) Using default package resource [script to run after application image is populated] (add package/windows/AnalogClockSVG-post-image.wsf to the class path to customize) Preparing MSI config: C:\work\AnalogClock\AnalogClockSvg\dist\bundles\AnalogClockSVG-0.1.1.msi Running [C:\Program Files (x86)\WiX Toolset v3.9\bin\candle.exe, -nologo, R:\Temp\fxbundler1096613707257883437\windows\AnalogClockSVG.wxs, -ext, WixUtilExtension, -out, R:\Temp\fxbundler1096613707257883437\tmp\AnalogClockSVG.wixobj] in R:\Temp\fxbundler1096613707257883437\images\win-msi.image\AnalogClockSVG AnalogClockSVG.wxs Generating MSI: C:\work\AnalogClock\AnalogClockSvg\dist\bundles\AnalogClockSVG-0.1.1.msi Running [C:\Program Files (x86)\WiX Toolset v3.9\bin\light.exe, -nologo, -spdb, -sice:60, R:\Temp\fxbundler1096613707257883437\tmp\AnalogClockSVG.wixobj, -ext, WixUtilExtension, -out, C:\work\AnalogClock\AnalogClockSvg\dist\bundles\AnalogClockSVG-0.1.1.msi] in R:\Temp\fxbundler1096613707257883437\images\win-msi.image\AnalogClockSVG R:\Temp\fxbundler1096613707257883437\windows\AnalogClockSVG.wxs(43) : warning LGHT1076 : ICE36: Icon Bloat. Icon DesktopIcon.exe is not used in the Class, Shortcut, or ProgID table and also not used for ARPPRODUCTICON property. R:\Temp\fxbundler1096613707257883437\windows\bundle.wxi(6) : warning LGHT1076 : ICE57: Component 'comp0' has both per-user and per-machine data with an HKCU Registry KeyPath. R:\Temp\fxbundler1096613707257883437\windows\bundle.wxi(314) : warning LGHT1076 : ICE60: The file FileId142 is not a Font, and its version is not a companion file reference. It should have a language specified in the Language column. R:\Temp\fxbundler1096613707257883437\windows\bundle.wxi(316) : warning LGHT1076 : ICE60: The file FileId143 is not a Font, and its version is not a companion file reference. It should have a language specified in the Language column. R:\Temp\fxbundler1096613707257883437\windows\bundle.wxi(318) : warning LGHT1076 : ICE60: The file FileId144 is not a Font, and its version is not a companion file reference. It should have a language specified in the Language column. R:\Temp\fxbundler1096613707257883437\windows\bundle.wxi(320) : warning LGHT1076 : ICE60: The file FileId145 is not a Font, and its version is not a companion file reference. It should have a language specified in the Language column. R:\Temp\fxbundler1096613707257883437\windows\bundle.wxi(322) : warning LGHT1076 : ICE60: The file FileId146 is not a Font, and its version is not a companion file reference. It should have a language specified in the Language column. R:\Temp\fxbundler1096613707257883437\windows\bundle.wxi(324) : warning LGHT1076 : ICE60: The file FileId147 is not a Font, and its version is not a companion file reference. It should have a language specified in the Language column. R:\Temp\fxbundler1096613707257883437\windows\bundle.wxi(326) : warning LGHT1076 : ICE60: The file FileId148 is not a Font, and its version is not a companion file reference. It should have a language specified in the Language column. R:\Temp\fxbundler1096613707257883437\windows\bundle.wxi(328) : warning LGHT1076 : ICE60: The file FileId149 is not a Font, and its version is not a companion file reference. It should have a language specified in the Language column. Config files are saved to R:\Temp\fxbundler1096613707257883437\windows. Use them to customize package.
高橋 徹 さんがほぼ9年前に更新
javapackagerのオプションと生成されるMSIファイルのプロパティを調査
- createmsi.ps1
javapackager -deploy -native msi -v ` -outdir dist -outfile OutFile ` -srcdir dist -srcfiles AnalogClockSvg.jar ` -appclass analogclocksvg.AnalogClockSvg ` -name NameOption ` -BappVersion="0.1.2" ` -title "Title Option" ` -vendor Vendor ` -description "Description Option"
- 生成されたMSIファイル名
NameOption-0.1.2.msi
- MSIファイルのプロパティ > 詳細
- タイトル
Installation Database
- 件名
Description Option
- コメント
None
- 作成者
Vendor
- タイトル
- インストールディレクトリ
C:\Program Files\NameOption
- 実行ファイル名
C:\Program Files\NameOption\NameOption.exe
- スタートメニュー
すべてのプログラム > Vendor > NameOption - コントロールパネル > プログラムのアンインストールまたは変更
- 名前
NameOption
- 発行元
Vendor
- バージョン
0.1.2
- 名前
高橋 徹 さんがほぼ9年前に更新
javapackagerのオプションと生成されるMSIファイルのプロパティを調査(2)
先の指定から-nameオプションを削除した場合
javapackager -deploy -native msi -v ` -outdir dist -outfile OutFile ` -srcdir dist -srcfiles AnalogClockSvg.jar ` -appclass analogclocksvg.AnalogClockSvg ` -BappVersion="0.1.3" ` -title "Title Option" ` -vendor Vendor ` -description "Description Option"
- 生成されたMSIファイル名
AnalogClockSvg-0.1.3.msi
- MSIファイルのプロパティ > 詳細
- タイトル
Installation Database
- 件名
Description Option
- コメント
None
- 作成者
Vendor
- タイトル
- インストールディレクトリ
C:\Program Files\AnalogClockSvg
- 実行ファイル名
C:\Program Files\AnalogClockSvg.exe
- スタートメニュー
すべてのプログラム > Vendor > AnalogClockSvg
- コントロールパネル > プログラムのアンインストールまたは変更
- 名前
AnalogClockSvg
- 発行元
Vendor
- バージョン
0.1.3
- 名前
高橋 徹 さんがほぼ9年前に更新
javapackagerのオプションと生成されるMSIファイルのプロパティを調査(4)
別なプログラムで、アプリケーション実行クラス名がMainとなるもので実験。
javapackager -deploy -native msi -v ` -outdir dist -outfile OutFile ` -srcdir dist -srcfiles Canvas.jar ` -appclass canvas.Main ` -BappVersion="0.1.0" ` -title "Title Option" ` -vendor Vendor ` -description "Description Option"
Main-0.1.0.msi
C:\Program Files\Main
C:\Program Files\Main\Main.exe
すべてのプログラム > Vendor > Main
コントロールパネル: Main Vendor 0.1.0
高橋 徹 さんがほぼ9年前に更新
javapackagerで作成したインストーラーは、アップグレード対応できない。
バージョン番号を増分してインストーラを生成しても、古いバージョンのアプリケーションがインストールされた状態で新しいバージョンのインストーラを実行すると、古いバージョンはそのままに新しいバージョンがインストールされてしまいます。
これは、WiX ToolsetでUpgradeCodeのIDがバージョン間で一致しないためです。
一致させるためには、何らかの形でUpgradeCodeを指定する必要があります。
javapackagerコマンドや、antのjfx-deployタスクのオプションを見る限り、UpgradeCodeに関する指定は見当たりません。
そこで、javapackagerのソースコードを調べてみます。
-Bwin.msi.upgradeUUID="2126e41e-9bb9-4f22-81e3-539049b46086"
<Product Id="ebaf8ad5-fb0a-4b78-8613-d16f74cc8930" Name="JarManifestViewer" Language="1033" Version="1.0" Manufacturer="Torutk" UpgradeCode="2126e41e-9bb9-4f22-81e3-539049b46086">
ただし、これだけではアップグレード対応にはなりません。
これでしょうか? OpenJFXのjfxpackagerのソースコードです。
http://hg.openjdk.java.net/openjfx/9-dev/rt/file/5749594ab756/modules/fxpackager/src/main/java/com/oracle/tools/packager/windows/WinMsiBundler.java
132行目に次のコードがありました。
public static final BundlerParamInfo<UUID> UPGRADE_UUID = new WindowsBundlerParam<>(
I18N.getString("param.upgrade-uuid.name"),
I18N.getString("param.upgrade-uuid.description"),
"win.msi.upgradeUUID",
UUID.class,
params -> UUID.randomUUID(), // TODO check to see if identifier is a valid UUID during default
(s, p) -> UUID.fromString(s));
そこで、試しにjavapackagerコマンドのオプション -Bwin.msi.upgradeUUIDを指定してみたところ、一時生成されるwxsファイルの中身に指定したUUIDが記述されているのが確認できました。
ただし、これだけではアップグレード対応になりません。
補足
OpenJFXのソースを見回すと、WXSファイルのテンプレートは次にありました。
テンプレートには<MajorUpgrade>要素がないのでアップグレード対応ができないので、テンプレートをいじって対応することにします。
template.wxs にMajorUpgrade要素を追加します。
<Package Description="APPLICATION_DESCRIPTION" Comments="None"
InstallerVersion="200" Compressed="yes"
InstallScope="INSTALL_SCOPE" Platform="PLATFORM"/>
+ <MajorUpgrade DowngradeErrorMessage="Already new [ProductName] insatlled. Stopping to install." />
<Media Id="1" Cabinet="simple.cab" EmbedCab="yes" />
これを、javapackagerを実行するカレントディレクトリ下のpackage\windows\<名前>.wxs として保存します。
すると、javapackagerがテンプレートとしてこのファイルを使用するので、生成されるインストーラーファイルはメジャーアップグレードが可能となります。
高橋 徹 さんがほぼ9年前に更新
32bit版インストーラ(MSI)を作る方法を模索
Windows 7 64bit OS上で、JDK 8u92 32bit版のjavapackagerを実行してみたところ、
- インストールされたexeファイル(AnalogClock.exe)は64bit版
- インストールされたdllファイルは32bit版(msvcp120.dllほか)
と、不整合が発生した。
-Bwin.64Bit=false
を指定し、JDK 8u92 32bit版javapackager実行
これはOK
環境変数JAVA_HOMEはなくてもよいが、定義している場合はjavapackagerコマンドのJDKと同じ場所を指定することが必要。