【追加ソフトなし】バッチファイルをEXEファイルに変換する

今回は追加ソフトなしでWindows標準搭載の「IExpress」を使ってバッチファイルをEXEファイルに変換してみたいと思います。

このソフトで何を行うか

まず初めに、タイトルでは「変換」と表現していますが、バッチファイルを機械語にコンパイルするわけではありません。

IExpressは一連のファイル(バッチファイル等)を圧縮して、自己解凍形式のパッケージを作成するソフトです。

つまり、バッチファイルをEXEファイルに変換するのではなく、バッチファイルをEXEファイルに格納し、解凍時にバッチファイルを実行するコマンドを実行するということです。

バッチファイルがバイナリ化されるわけではなく、そのままの状態で格納されるので、EXEファイルを解凍するとバッチファイルの中身は見ることができます

この方法はソースコードの秘匿には使えません。配布するバッチファイルに、パスワードやAPIキーなどの秘密情報を含めないでください。

バッチファイルを作成

まずはバッチファイルを作成します。
今回は「test.bat」というファイル名で作成しました。

@echo off
echo Hello World!
pause > nul

このバッチファイルは「Hello World!」と表示して、何かキーを押すと終了するというとても単純なものです。

バッチファイルをEXEファイルに変換

スタートメニューでiexpressを検索し、「管理者として実行」を選択している画面

まず、Windowsのスタートボタンを押して「iexpress」と検索し、管理者として実行を選択します。

Win + Rを押して、「ファイル名を指定して実行」からiexpressと入力し、Ctrl + Shiftを押しながらOKを押して実行することもできます。

IExpress Wizardの開始画面。Create new Self Extraction Directive fileが選択されている

「IExpress Wizard」が起動したら、Create new Self Extraction Directive fileを選択して次へを押します。

パッケージの動作の選択画面。Extract files and run an installation commandが選択されている

Extract files and run an installation commandを選択して次へを押します。

Extract files onlyを選択してしまうと、ただの圧縮ファイルになってしまうので注意してください。

パッケージタイトルの入力画面

パッケージのタイトルとして、好きなものを入力して次へを押します。

確認プロンプトの設定画面。No promptが選択されている

ユーザーにインストールの際に確認画面を表示するか聞かれるのでNo promptを選択し、次へを押します。

ライセンス表示の設定画面。Do not display a licenseが選択されている

ライセンスを表示するか聞かれるので、Do not display a licenseを選択し、次へを押します。

パッケージに含めるファイルの一覧画面。Addボタンでtest.batが追加されている

先ほど作成したバッチファイルを追加するために、Addを押し、ファイルを選択し、次へを押します。

この際、複数のバッチファイルやリソース等を追加することもできます。

Install Programの入力画面。バッチファイルを実行するコマンドを入力する

ここが、今回のポイントです。
Install Programには、バッチファイルを実行するコマンドを入力します。

cmd /c <バッチファイルの名前>

コマンドを入力したら、次へを押します。

ウィンドウ表示の設定画面。Default (recommended)が選択されている

どのように画面を表示するか聞かれるので、Default (recommended)を選択し、次へを押します。

終了メッセージの設定画面。No messageが選択されている

インストール終了時のメッセージを表示するか聞かれるので、No messageを選択し、次へを押します。

パッケージ名と保存先の指定画面

Browseからパッケージの名前と保存先を指定して、次へを押します。

再起動の設定画面。No restartが選択されている

インストール終了時にPCを再起動するか聞かれますが、バッチファイルを実行するだけなので、No restartを選択し、次へを押します。

SEDファイル保存の確認画面。Don't saveが選択されている

今までの情報を保存するか聞かれますが、今回は保存しないので、Don't saveを選択し、次へを押します。

パッケージ作成直前の確認画面

次へを押すと、パッケージの作成が始まります。

パッケージ作成が完了し、Done!と表示された画面

Done!と表示されたら、完了を押してIExpressを終了します。

Unable to open the Report fileと表示されたIExpressのエラーダイアログ

この際に、このようなエラーが出たら、管理者権限で実行されていない可能性があります。

IExpressを管理者権限で実行しなおし、上記の工程をもう一度行ってください。

保存先フォルダに作成されたTest.EXEと元のtest.bat

指定した場所にEXEファイルが作成されているので、実行してみます。

EXEファイルを実行し、コマンドプロンプトにHello World!と表示された画面

正常にバッチファイルが実行されていることが確認できました。

まとめ

このように、かなり簡単にバッチファイルをEXEファイルに変換することができました。

ただし、最初にも記載しましたが、バッチファイル自体はそのまま保存されています。

そのため、この方法はソースコードを見られないようにするために使うものではなく、あくまでバッチファイルをより配布しやすいEXEファイルに変換するために使うものだと思ってください。

最後まで読んでいただきありがとうございました。