ここしばらくインストーラーであれやこれややってて、最終的にInstallerクラスで処理することで、なんとか形になりました。
Installerクラスを書いていて、最初に戸惑ったのがデバッグ。どうやってデバッグしていいのかわからない。(通常のDLLと同じようにデバッグしようとしてもインストーラーだと、うまく動かない。)
またまた、あれやこれや調べたら、単純にデバッグを開始したい箇所で、以下のメソッドを呼んで上げればOKということがわかる。
System.Diagnostics.Debugger.Launch();
で、実際にデバッグしてみた例。
以下、ソースコードの抜粋です。はじめにInstallメソッドにLaunch()を書いておきます。
public override void Install(System.Collections.IDictionary stateSaver)
{
base.Install(stateSaver);
System.Diagnostics.Debugger.Launch(); // .net 4.0
//System.Diagnostics.Debugger.Break(); // .net 3.5?
//System.Windows.Forms.MessageBox.Show(“Install”);
// 環境変数「path」を編集
string currentPath;
currentPath = System.Environment.GetEnvironmentVariable(“path”, System.EnvironmentVariableTarget.User);
インストールの作業中にこのメソッドが呼ばれると、次のような画面が表示されます。
これがインストーラーのメインのダイアログの影に表示されたりして、ちょっと判りにくのと、なんだかエラーが表示されているようで気持ちが悪いです。
それはともかく。ここで、「はい」を選択すると、続いてデバッガーの選択ダイアログが表示されます。
ここも「はい」を選べば別プロセスでVS2010が起動して、デバッグできるようになります。