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が起動して、デバッグできるようになります。

コメント

このブログの人気の投稿

TabError: inconsistent use of tabs and spaces in indentation

マクロを含んだ.XLSがExcel2010で開けない

using ディレクティブまたはアセンブリ参照が不足しています。