2009/04/02

BATをExeに変換(iexpress.exe)

PortableApps.comのランチャを作るときに,
バッチファイルで一行ですむのに,
わざわざスクリプトを書くのはめんどくさい.
Batは↓の感じで書けば, USBメモリとかのドライブレターが
接続する度に変わる場合でも動く.

start %~d0%~p0\App\AppName\app.exe

これを, exeに変換するのに, Windows標準で付いている
iexpress.exeを使う方法がある.

しかし, iexpressで変換(正確には自動コマンド実行付きの圧縮)したexeでは
上のスクリプトは動かない.

まず, 圧縮を解凍すると, 解凍先がテンポラリディレクトリになり, そこが
カレントディレクトリとなる.
そのため, %~d0(BATファイルのあるディスクのドライブレター)と%~p0(同パス)を
展開すると, テンポラリディレクトリを指すようになってしまう.

2つめに, BATをiexpressでexeにすると, command.comでBATファイルが
起動されるため, "start"コマンドが使えなくなる.
よって, 文法的に正しくするには, "start"を省き
%~d0%~p0\App\AppName\app.exe
と書かなければいけない.

もしくは, ファイルの拡張子をcmdにすると, cmd.exeで実行されるため,
先のコマンドのままでも文法的に正しくなる.
(iexpressでのexe作成時に, 実行するコマンド名が自動的に選択されなく
なるので, 手入力する必要有り)

ということで, PortableApps.comのランチャの作成は失敗.

0 件のコメント: