変更履歴
Version 1.6.6(2024-12-16)
- アプリケーション ・ マニフェスト dpiAware=true、 dpiAwareness=system に修正しました。
Version 1.6.5(2022-07-18)
- Splash-Image で指定されたファイルがファイルシステム上に存在する場合、 それを優先的に使用するようにしました。
- Splash-Image をファイルから表示する場合、 実行ファイルからの相対パスとして扱うように修正しました。
- Java 18 で UseSharedSpaces が非推奨になったため、 UseSharedSpaces を指定しないように変更しました。
- LICENSE.txt の文字コードを Shift_JIS から UTF-8 に変更しました。
Version 1.6.4(2020-09-18)
- バージョン 1.6.3 で JDK/JRE の bin フォルダーを
java.library.path
に含めないように変更していましたが、 この変更を巻き戻し、 バージョン 1.6.2 以前と同じように JDK/JRE の bin フォルダーをjava.library.path
に含めるようにしました。これにより、 一部の環境で発生していた UnsatisfiedLinkError が解消します。
Version 1.6.3(2020-09-14)
- 拡張フラグ
SERVERVM
を指定した場合に bin/server/jvm.dll を見つけられないバグを修正しました。 - JavaVM の検索方法を指定するオプション
-l
を追加しました。 - 拡張フラグ SINGLE を指定した場合、 Mutex の新規作成ではなく所有権の獲得で二重起動を制御するようにしました。
Version 1.6.2(2020-07-15)
- 外部ライブラリ (JAR) をカスタム ・ システムクラスローダーでロードするように変更しました。従来はカスタムクラスローダーは EXE 内リソースからのクラスロードのみを行い、 外部ライブラリからのクラスロードは親クラスローダーに任せていました。この従来の方式では本体アプリのクラスと外部ライブラリに含まれるクラスのクラスローダーが異なり不都合が出るケースがありました。(たとえば、 logback では異なるクラスローダーを参照しないため設定ファイル logback.xml を見つけられないという問題がありました。) 今回の変更により、 logback 等の動作が改善します。
Version 1.6.1(2020-07-12)
- 実行ファイルのあるディレクトリーをカレントディレクトリーに設定する拡張フラグ
CD_APPDIR
を追加しました。この拡張フラグを指定することによって、 システムプロパティーuser.dir
が実行ファイルのあるディレクトリーで初期化されます。
Version 1.6.0(2020-05-18)
Unicode ビルドへ変更しました。
起動時の引数に Unicode 固有の文字が使用できるようになりました。Java 標準の java.exe、 javaw.exe は起動時引数に Unicode 固有の文字を使用することができませんが、 exewrap で生成した実行ファイルでは起動時引数に Unicode 固有の文字を使用することができます。
コンソールのコードページに合わせて自動的に出力文字コードが変わるようになりました。この機能は
NOENCODINGFIX
拡張フラグを指定することで無効にできます。メインクラスのロードに失敗したときに詳細メッセージとスタックトレースが表示されるようになりました。
拡張子.jar の関連付けをレジストリから参照して JavaVM を検出できるようになりました。
GUI アプリケーション既定のアイコンをデューク君に変更しました。
Version 1.5.0(2019-12-08)
今後の Java で Pack200 廃止が予定されているため、 exewrap の Pack200 圧縮機能を廃止しました。既存の Pack200 圧縮された実行ファイルは将来の Java 実行環境で実行できなくなる可能性があります。
exewrap 既定のログ出力機能で (アクセス拒否等の) 例外が発生しても抑制するようにしました。また、 アプリケーションディレクトリにログが出力できない場合、 java.io.tmpdir システムプロパティの場所にログを出力するようになりました。この場所は TMP 環境変数と同じ場所
C:\Users\username\AppData\Local\Temp
等になります。クラスのロード元を示す CONTEXT_PATH を URL エンコードするようにしました。これにより、 JavaFX の CSS やフォント指定の読み取りでパスに半角スペース等が含まれているとエラーになる問題が解消します。
プロセス開始時間を保持するシステムプロパティ
java.application.startup
を協定世界時 (UTC) に変更しました。
Version 1.4.2(2019-09-09)
- PATH 環境変数からの依存 DLL のロードに失敗するバグを修正しました。
Version 1.4.1(2019-07-16)
- ディスプレイ設定で拡大 (100%以外) が指定されていると表示がぼやけてしまう問題を修正しました。(マニフェストの dpiAware 指定が不足しており OS によってビットマップスケーリングされていました。)
Version 1.4.0(2019-07-08)
Java12 実行環境で
Archived non-system classes are disabled
という警告メッセージが表示される問題を改善しました。Java 実行環境を PATH 環境変数からも探索するようにしました。優先順位は以下の通りです。
- 実行ファイルと同じ場所に配置された jdk
- 実行ファイルと同じ場所に配置された jre
- JAVA_HOME で設定された場所
- レジストリーで指定された場所 (JDK/JRE インストーラーで設定される)
- PATH 環境変数で java.exe が実行可能であればその場所 ←NEW
Version 1.3.1(2019-02-02)
32 ビット OS で JRE が見つからないバグを修正しました。
クラスの重複判定に失敗するバグを修正しました。
Version 1.3.0(2018-11-15)
デスクトップ ・ ブリッジ UWP 化に対応しました。Java アプリを Microsoft ストアで配布できるようになりました。
Jar ファイル内のエントリーが重複している場合、 日付のもっとも新しいものだけを取り込むようにしました。
Version 1.2.6(2018-06-27)
ユーザーアカウント制御(UAC)の実行レベルを指定するオプション
-P
を追加しました。JRE 検索機能で JDK9 以降のディレクトリ構成に対応しました。(JDK9 は JDK8 までとはディレクトリ構成が変わっています。)
Version 1.2.5(2018-06-13)
- JRE 検索機能で
jdk
で始まるディレクトリも検出対象にするようにしました。
Version 1.2.4(2018-03-03)
JavaFX などの GUI アプリケーションで UI スレッドが開始する前にメインスレッドで例外が発生するとログファイルにスタックトレースが出力されないバグを修正しました。
JavaVM が見つからない場合のエラーメッセージの誤りを修正しました。
Version 1.2.3(2017-11-28)
- 実行時に VM オプションを変更するための VM オプション ・ ファイル参照機能を追加しました。
Version 1.2.2(2017-11-19)
- 32 ビット/64 ビット両方の JRE がインストールされている環境で 64 ビットプロセスを実行した場合に誤って 32 ビット JRE を検出してしまうバグを修正しました。このバグは Version 1.2.1 での Java9 対応した際に発生したバグであるため、 Version 1.2.0 以前ではこのバグは発生しません。
Version 1.2.1(2017-10-27)
- レジストリから Java9 のインストールパスを正しく検出できるようになりました。
Version 1.2.0(2017-10-19)
リフレクションを使わずに JavaVM 作成時にシステムクラスローダーを設定するようになりました。
ウィルス対策ソフトのウィルス誤検出対策としてリソース保持の構成を変更しました。
その他、 細かいバグ修正をおこなっています。
Version 1.1.9(2017-10-13)
Java 9 対応。
java.ext.dirs
が廃止されたので外部ライブラリをjava.class.path
で指定するように変更しました。Java 9 で不正なリフレクション操作が警告される (将来的には禁止される) ようになったのでシステム ・ クラスローダーの置き換えを廃止しました。
Version 1.1.8(2017-10-09)
- ターゲットバージョン指定の
minor
とbuild
の上位ビットが欠落するバグを修正しました。
Version 1.1.7(2017-09-19)
ロードされるクラスに
java.security.ProtectionDomain
を設定するようにしました。ターゲットバージョン指定が正しく機能しないバグを修正しました。たとえば、 Java 8u40 以上をターゲットにする場合は
-t 1.8.0.40
を指定します。
Version 1.1.6(2017-02-21)
出力ファイル名に拡張子が含まれていないとクラッシュするバグを修正しました。
実行ファイル名を VisualVM の表示名として設定するようにしました。
Version 1.1.5(2017-02-01)
Pack200 圧縮処理が復帰せずにフリーズしてしまうバグを修正しました。
出力ディレクトリが存在しない場合に再帰的にディレクトリを作成するようにしました。
Version 1.1.4(2017-01-26)
- ビルド環境を Windows Driver Kit 7.1 に変更しました。
Version 1.1.3(2016-03-15)
サービスアプリケーションを SCM 外から実行した場合にサービス開始 ・ 停止メッセージが出力されないようにしました。
サービスアプリケーションを SCM 外から実行した場合に適用される VM 引数を個別に設定できるようにしました。
Version 1.1.2(2016-01-03)
パッケージの
specTitle
,specVersion
,specVendor
,implTitle
,implVersion
,implVendor
をマニフェストファイルから設定するようにしました。プロセスの環境変数を設定するユーティリティークラス
exewrap.util.Environment
を追加しました。
Version 1.1.1(2015-07-28)
- スレッドのコンテキスト ・ クラスローダーが設定されない不具合を修正しました。
Version 1.1.0(2015-07-21)
このバージョンから対象 JRE のバージョンを 1.2 以上 から 1.5 以上 へ変更しました。
一部のウィルス対策ソフトウェアのヒューリスティック検出で
exewrap.exe
がウィルスとして誤検出されてしまう問題へ対処しました。JRE 縮小機能を実験的に追加しました。
メインクラスを指定するオプション
-M
を追加しました。JRE 縮小機能を使用するためのトレースログを出力するオプション
-T
を追加しました。アプリケーションと同じ場所にある JRE を検索しないようにする拡張フラグ
NOSIDEBYSIDE
を追加しました。スレッドでキャッチされない例外が発生しても無視してアプリケーション実行を継続する拡張フラグ
IGNORE_UNCAUGHT_EXCEPTION
を追加しました。
Version 1.0.3(2015-03-29)
jre
フォルダだけでなく jre で始まるフォルダも JRE 検索対象になりました。これにより、jre1.8.0_40
のようなバージョン付きフォルダが JRE 検索の対象になります。外部ライブラリディレクトリ(
lib
)のサブディレクトリも自動的に外部ライブラリディレクトリとして追加されるようになりました。複数の VM 引数を指定した場合にアプリケーションがクラッシュする不具合を修正しました。
Version 1.0.2(2015-01-15)
- オプション
-g
を付けて x64 アプリケーションを生成した場合にアプリケーションがクラッシュする不具合を修正しました。
Version 1.0.1(2015-01-11)
- サービス ・ アプリケーションのユーザー アカウント制御(UAC)による権限昇格に対応しました。
Version 1.0.0(2014-08-15)
C ランタイムをスタティックリンクからダイナミックリンクに変更しました。
引数バッファを破壊することがある不具合を修正しました。
Version 0.9.9(2014-08-03)
x64 アーキテクチャ (64-bit) の実行ファイルを生成できるようになりました。プログラムを 64 ビット JRE で実行することができます。
exewrap.exe のビルド環境を MinGW (GCC) から Visual Studio 2013 に変更しました。
Version 0.9.8(2014-07-31)
Windows サービスでイベントログに出力するための Logger を追加しました。標準出力、 標準エラー出力を使用せずに明示的なイベントログ出力が可能になります。
依存 JAR ライブラリのディレクトリを指定するためのオプション
-L
を追加しました。64 ビット Windows で Java 実行環境を正しく検出できない不具合を修正しました。(ただし、 exewrap はまだ 64 ビット JRE に対応していません。64 ビット Windows に 32 ビット JRE をインストールしておく必要があります。)
拡張フラグ
SHARE
を指定してプロセスを共有した場合に、GetJString
関数、GetShiftJIS
関数等で誤った JVM 環境(JNIEnv*
)が使われる不具合を修正しました。
Version 0.9.7(2014-07-21)
プロセス共有時の排他制御に関連する不具合を修正しました。
プロセス共有時のプロセス間通信の実装を DDE から共有メモリに変更しました。この変更に伴い拡張フラグ
DDE_CONNECT
の名前をSHARE
に変更しました。Client VM / Server VM を選択する拡張フラグを追加しました。
Pack200 アーカイブ形式を無効にするオプション
-2
を追加しました。EXE ファイルのバージョン情報に会社情報を埋め込むためのオプション
-C
を追加しました。EXE ファイルのバージョン情報に製品名を埋め込むためのオプション
-P
を追加しました。EXE ファイルのバージョン情報に製品バージョンを埋め込むためのオプション
-V
を追加しました。