後出しジャンケン日記

 この日の分のポストは、2009/10/23にアップしました。

  • アプリケーションフォルダにA.exe、B.dllを追加し、共に「Exclude」プロパティを「True」に
  • カスタム動作の「確定」及び「アンインストール」にA.exeを追加

としてみたところ、できあがったインストーラを実行するとカスタム動作の実行フェイズで
「このWindowsインストーラパッケージには問題があります。」
とメッセージが出てインストール処理がロールバックされます。

 この問題は、「カスタム動作」に指定したプログラムが別のDLLを参照する場合、DLLがExcludeがFALSE、つまりファイルとして展開されていないと、実行に失敗する、と言う話。

[インストールログファイルの作成]

コマンドプロンプトから、必要なオプションを指定してインストールファイルを実行します。

たとえば、Presentation ServerのMSIインストールファイルであるmps.msiを使ってPresentation Serverをインストールする場合、ログファイルを作成するには次のようにします。

  1. コマンドプロンプトを開きます。
  2. mps.msiが格納されているディレクトリに移動します。
  3. 次のコマンドを実行します。

msiexec /i mps.msi /L*v install.log

注:.msp形式のパッチ(Hotfix)をインストールする場合は、/iを/pに置き換えて、.msiファイルの代わりに.mspファイルの名前を指定します。

このコマンドを実行すると、インストール用の通常のGUI画面が表示されます。インストール中に情報を入力したりボタンをクリックしたりすると、実行ファイルと同じディレクトリにあるinstall.logファイルに情報が記録されます。

必要に応じて別のディレクトリを指定することもできます(例:msiexec /i mps.msi /L*v c:\logs\install.log)。

コマンドラインの各部の意味は以下のとおりです。

  • Msiexec.exeはMSIファイルをインストールするプログラムの名前、mps.msi はインストールするMSIパッケージの名前です。
  • /Lオプションには、ログファイルのパスと、ログに記録する情報のフラグを指定します。ワイルドカード(*)を指定すると、詳細オプション以外のすべての情報を記録します。
  • vを指定すると詳細オプションの情報もログに記録されます。