1

カスタム アクションとして実行する次のメソッドを使用してインストーラー クラスをセットアップしました。

public Installer1()
{
    InitializeComponent();

    #if DEBUG
        Debugger.Launch(); //enables debugging
    #endif
}


protected override void OnBeforeInstall(IDictionary savedState)
{
    base.OnBeforeInstall(savedState);

    ModifyConfig();
}


public override void Install(System.Collections.IDictionary stateSaver)
{
    base.Install(stateSaver);

    if (targetSite == null) throw new InstallException("IIS site name not specified");
    else
    {
        //CreateApplicationPool();
        //CreateWebsite();
        //AssignAppPool();
    }
}

この時点では単に ModifyConfig() をテストしようとしていたので、インストール メソッドで行われることのほとんどをコメントアウトしました。インストーラーを実行すると、デバッガーが期待どおりに起動します。ただし、コードを 1 行ずつ移動すると、OnBeforeInstall メソッドは完全にスキップされ、Install メソッドに直接ジャンプします。それを続行しても、OnBeforeInstall にヒットすることはありません。

このメソッドは Intall の後に追加されましたが、Install の前に自動的にこれがヒットすると思っていました。私は何が欠けていますか?

4

2 に答える 2

0

public Installer1() {...} をコメントアウトしてから、OnBeforeInstall メソッドを起動しました。それで、それは修正されましたが、理由はわかりません。誰かが私が知りたいと思う理由を知っているなら。

于 2014-09-15T15:49:06.230 に答える