DAC で バッチ ファイルを使うには
今回は、Desktop App Converter(DAC) に指定するインストーラをバッチ ファイルにする方法を説明します。以前から、試して見ようと考えていましたが、なかなか作業ができていなかったものになります。最初に、変換するためのインストーラとして、以下のようなフォルダ構造があると仮定します。
- C:\Work\BAT フォルダ : 変換の作業フォルダー
- C:\Work\BAT\Input フォルダ : インストーラなどを配置するフォルダ
MyApp.exe : 実行ファイル
Install.bat : インストール用のバッチ ファイル
Install.bat には、次のような内容を記述しています。
mkdir "%ProgramFiles%\MyApp"
xcopy ".\*" "%ProgramFiles%\MyApp" /S /E
exit 0
xcopy コマンドのソースに「.\*」のように、カレントからの相対パスを記述しているのが重要な点になります。
この準備ができたら、DAC を管理者権限で起動して、次のように入力します。
cd C:\Work\BAT
DesktopAppConverter.exe -Installer ".\Input\Install.bat" -Destination "."
-AppInstallPath "C:\Program Files\MyApp"
-AppExecutable "C:\Program Files\MyApp\MyApp.exe"
-PackageName "myapp" -Publisher "CN=myapp" -Version "0.0.0.1" -Vervos
パラメータが長いので折り返していますが、カレントを変更して、DACのコマンドをワン ライナーで入力します。このコマンドでの特徴は次のようになります。
- -Installer に バッチ ファイルを指定しています。
- -InstallerArguments は省略しています。この理由は、バッチ ファイルで引数を処理していないからです。
- -InstallerValidExitCodes は省略しています。この理由は、バッチ ファイルの最後で「exit 0」としてリターン コードを0(ゼロ)にしているからです。
- -AppInstallPath は、アプリケーションのインストール先のフォルダをフルパスで指定します。
- -AppExecutable は、アプリケーションの実行ファイルをフルパスで 指定します。
こうすることで、正常に変換を行うことができるようになります。
この時の注意事項は、インストール用のバッチ ファイルの xcopy コマンドのソース パスの記述方法になります。最初は、「.\Input\*」のように記述していました。この記述で実行すると、うまく実行はできるのですが、実行結果として「MyApp.exe が見つかりません」という警告が表示されて、出力先の「myapp\PackageFile フォルダ」内に、MyApp.exe が出力されていませんでした。この原因を調べていくと、次のようなことが判明しました。
- インストール用のコンテナのインスタンス内の「C:\shared\installer」フォルダ内に、-Installer で指定したファイルがコピーされるということ。
つまり、この例では「Installer.bat」を配置したフォルダである「C:\Work\BAT\Input」フォルダ内のファイルが再帰的にコピーされる。 - 「C:\shared\installer\Install.bat」 は、「C:\shared\installer」をカレントにして呼び出されるということ。
つまり、「.\Input」では、パスが間違っていて、ファイルがコピーされないということです。
結論から言えば、インストール用のバッチ ファイルは、バッチ ファイルを配置した場所をカレント フォルダとして呼び出されるので、このことを前提にパスを記述しないといけないということです。このように手順を踏めば、バッチ ファイルを使ってもアプリを変換することが可能になるわけです。