2009-10-14 小ネタそのほかもろもろ(2009/10/14分の日記)*1 IT 日記をずいぶん休んでいますが、それなりに元気にやってます。 [IT][開発]MSI小ネタ カスタム動作に指定したアセンブリ(自作のインストールスクリプト)などに、MSIデータベースが保持するパラメータを引数として渡すことが出来る。 方法は、追加した[カスタム動作]のプロパティ、Arguments属性に、MSIの内部パラメータに該当するマクロを指定すればよい。 たとえば、インストールターゲットであれば、[TARGETDIR]を指定すればよい。*1 関連 カスタム動作エディタの使い方 .NET Tips C#, VB.NET, Visual Studio http://dobon.net/vb/dotnet/deployment/customaction.html 注:EXEファイルをそのまま実行する場合は、InstallerClassプロパティをFalseにする必要があります。 .NETが必要となると、どうしても環境依存になることが多く、結果としてインストールスクリプトにマネージコード(C#とか)を使うのが難しくなる。 というわけで、VBスクリプトにするか、VC++にするかのどっちかに落ち着いたわけです。*2 *1:どうしてこんなことをわざわざメモしたかというと、MSIのインストール実行中は、MSIデータベースがどうもロックされているっぽく、Query系APIが失敗したから。 *2:最初は、バッチにしようと思ったのですが、VS2008のMSIビルダーはバッチを使わせてくれませんでした。