Installerクラスのデバッグ

ここしばらくインストーラーであれやこれややってて、最終的に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が起動して、デバッグできるようになります。