C:\>exewrap.exe SwingSet2.jarできあがった SwingSet2.exe をダブルクリックして実行すると、SwingSet2 が起動します。 ただ、実行時にコンソールウィンドウが表示されてしまって邪魔です。 オプション -g を指定すると、コンソールアプリケーションではなくウィンドウアプリケーションとして EXE ファイルが作成されます。
C:\>exewrap.exe -g SwingSet2.jarこれでコンソールウィンドウが表示されなくなりました。 exewrap には、他にも便利なオプションが備わっています。詳細はオプション一覧を確認してください。
public static void start(String[] args) public static void stop()これらのメソッドは、Windows のサービスコントロールマネージャ(SCM)によって呼び出されます。 start メソッドはサービスを開始したときに、stop メソッドはサービスを停止したときに呼び出されます。 開発者は、stop() メソッドが呼び出されたあと、start メソッドが終了するようコードを書かなければなりません。 たとえば、start メソッドを無限ループで設計してしまうのは問題です。実装例 ServiceSample.java を参考にしてください。
C:\>exewrap.exe -s ServiceSample.jar C:\>ServiceSample.exe -installサービス実行時の引数を指定する場合は、-install に続いて記述してください。 サービス実行時の引数は、start メソッドの引数 String[] args として渡されます。
C:\>ServiceSample.exe -install foo barインストール時にサービスの構成を指定することもできます。サービス構成オプションは -install よりも前に記述します。 たとえば、サービスの実行アカウントを指定する場合は次のように指定します。サービス構成オプションの詳細は サービス構成オプションを確認してください。
C:\>ServiceSample.exe -u Administrator -p mypassword -installサービスをアンインストールする場合の例をあげます。 サービスのアンインストールは、サービスを停止してから行ってください。 また、イベントビューアが開いている状態では、正しくサービスをアンインストールすることができないので注意してください。
C:\>ServiceSample.exe -removeサービスアプリケーションには以下の特徴があります。
exewrap で作成されたアプリケーションは、アプリケーションファイル(EXE)のあるディレクトリに、 lib ディレクトリが存在する場合、lib ディレクトリを自動的に拡張ディレクトリ(java.ext.dirs)に追加します。 JDBC ドライバなどの外部ライブラリは、アプリケーションファイル(EXE)と同じところに lib ディレクトリを作成し、そのディレクトリ内に配置することができます。
lib ディレクトリには PATH も通されるため、DLL を配置することもできます。
※ lib ディレクトリ内のライブラリファイル(JAR)が既定の拡張ディレクトリにコピーされるわけではありません。
※ PATH が通るのは実行プロセスのみです。環境変数 PATH には影響を与えません。
| システムプロパティ | 説明 |
|---|---|
| java.application.path | アプリケーションファイルのパスを保持しています。 |
| java.application.name | アプリケーションファイル名を保持しています。 |
| java.application.version | アプリケーションのバージョンを保持しています。 |
たとえば、アプリケーションの完全なパスを取得するために次のコードが使用できます。
System.getProperty("java.application.path") + "\\"
+ System.getProperty("java.application.name")
たとえば、作成したアプリケーションを MyApp.exe とした場合、同じディレクトリに MyApp.policy を配置することで、セキュリティマネージャが有効になります。これは VM引数 -Djava.security.manager -Djava.security.policy=MyApp.policy が指定されたのと同じ意味を持ちます。
jre ディレクトリが存在しない場合は、環境変数 JAVA_HOME を Java 実行環境として使用します。 環境変数 JAVA_HOME も定義されていない場合は、レジストリを参照してシステムにインストールされている JRE を検索します。
| オプション | 説明 |
|---|---|
| -g | ウィンドウ(GUI)アプリケーションを作成します。 |
| -s | サービスアプリケーションを作成します。 |
| -t <target-version> | プログラムの実行に必要なJava実行環境のバージョンを指定します。 値は内部バージョンで指定してください。つまり、Java 5.0、Java 6.0 はそれぞれ、1.5、1.6 と指定する必要があります。 1.5以上を指定すると、Pack200アーカイブ形式が使用され出力ファイルサイズが小さくなります。 |
| -e <ext-flags> | 拡張フラグを指定します。詳細は拡張フラグ一覧を確認してください。 |
| -a <vm-args> | アプリケーション実行時の VM 引数を指定します。 |
| -i <icon-file> | EXE ファイルに指定したアイコンを埋め込みます。 |
| -v <version> | EXE ファイルにバージョン情報を埋め込みます。 バージョン指定の書式は、メジャーバージョン、マイナーバージョン、リビジョン、ビルドナンバーをピリオドで区切って指定します。 リビジョンやビルドナンバーを省略することもできます。 ビルドナンバーを省略して EXE ファイルを既存のファイルに上書き作成した場合、自動的にビルドナンバーが +1 されます。 |
| -d <description> | EXE ファイルに説明情報を埋め込みます。説明にはアプリケーション名やアプリケーションの機能を記述します。 サービスアプリケーションの場合にはサービスの説明としてコントロールパネルのサービスにも表示されます。 説明文に半角スペースを含める場合は、説明全体をダブルクォーテーションで囲む必要があります(コマンドプロンプトの場合)。 ant から exewrap を呼び出す場合は、ダブルクォーテーションではなくシングルクォーテーションを使用します。 |
| -c <copyright> | EXE ファイルに著作権表示を埋め込みます。 オプション -d と同様に、ダブルクォーテーションやシングルクォーテーションが必要になることがあります。 |
| -j <jar-file> | 変換元となる実行可能 JAR ファイルを指定します。 JAR ファイルはマニフェストファイルでメインクラスが指定された実行可能形式でなければなりません。 オプション -j を省略した場合、最後の引数を JAR ファイルと見なします。 |
| -o <exe-file> | 変換先となる EXE ファイルを指定します。ファイルがすでに存在している場合、上書きされます。 オプション -o を省略した場合、変換元 JAR ファイルの拡張子を exe に置き換えた名前でファイルが作成されます。 |
C:\>exewrap.exe -g -e SINGLE;DDE_CONNECT test.jar
| 拡張フラグ | 説明 |
|---|---|
| SINGLE | アプリケーションの二重起動を禁止します。既にアプリケーションが起動している状態で、 新たにアプリケーションを起動しようとした場合、新たに起動しようとしたアプリケーションは何もせずに終了します。 |
| DDE_CONNECT | アプリケーションの二重起動を禁止します。すでにアプリケーションが起動している状態で、 新たにアプリケーションを起動しようとした場合、新たに起動しようとしたアプリケーションから既に起動しているアプリケーションへ 通知がおこなわれ、既に起動しているアプリケーションの main メソッドが再度実行されます。 main メソッドに渡される引数には、新たに起動しようとしたアプリケーションのコマンドライン引数が設定されます。 新たに起動しようとしたアプリケーションは終了します。 この機能を使用すると、二重起動を試みたときに起動済みのアプリケーションを最前面に表示したり、 ひとつの Java VM を共有してアプリケーション画面を複数起動することができます。 |
| NOLOG | アプリケーションのログ出力機能を無効にします。 ウィンドウアプリケーションでは、標準出力、標準エラー出力がログファイルに出力されなくなります。 サービスアプリケーションでは、標準出力、標準エラー出力がイベントログに出力されなくなります。 |
| インストール時 | 説明 |
|---|---|
| -n <display-name> | サービスの表示名を指定します。 |
| -i | デスクトップとの対話をサービスに許可します。 |
| -m | スタートアップの種類を「手動」にします。このオプションを指定しない場合、スタートアップの種類は「自動」になります。 |
| -d <dependencies> | サービスの依存関係を指定します。たとえばサービスアプリケーションがイベントログサービスを必要としている場合は、 -d Eventlog としてイベントログサービスに依存させます。 複数のサービスに依存する場合は、サービス名をセミコロン ; で区切ります。 |
| -u <username> | サービスアプリケーションの実行アカウントを指定します。通常のユーザーアカウントのほかにビルトインシステムアカウントとして、 NT AUTHORITY\System、NT AUTHORITY\LocalService、NT AUTHORITY\NetworkServiceが指定できます。 |
| -p <password> | サービスアプリケーション実行アカウントのパスワードを指定します。 ビルトインシステムアカウントを使用する場合は、パスワードを指定する必要はありません。 |
| -s | サービスをインストールした後に、ただちにサービスを開始します。 |
| アンインストール時 | 説明 |
|---|---|
| -s | サービスをアンインストールする前に、サービスを停止します。 |