0

私はTopshelfを3年間使用していますが、単純なユースケースでのみ使用しています。新しいジョブを開始し、Topshelfの使用を提案しましたが、InstallerクラスのRollbackメソッドをオーバーライドします。たとえば、「httpdeleteurlacl...」を呼び出すために使用します。

TopshelfはBeforeRollbackまたはAfterRollbackを公開しません。プルリクエストの送信には反対ではありませんが、ロールバック機能が必要かどうかを事前に知りたいですか?また、Topshelfを使用してこれを処理する方法はすでにあるのでしょうか。

4

2 に答える 2

1

TopShelfに関しては、サービスを作成するための優れたパターンがある可能性があります(わかりません、使用したことはありません)が、展開でカスタムアクションを使用している場合は、Windowsの方法でボートを見逃しています。インストーラーは動作するように設計されています。MSIの観点からは最適ではない主題について書かれたものがたくさんあるので、私は彼らを責めません。

私はこれについて6年前に最初に書いた:

MSIと.NET

問題は、MSIの基盤となるネイティブ機能を公開しなかったVisualStudio展開プロジェクトから始まりました。代わりに、より脆弱なソリューションで車輪の再発明を促進するインストーラークラスのカスタムアクションを作成しました。MSIは、プロセス外の命令型コードを挿入することではなく、宣言型プログラミングに関するものです。

サービスを処理するためのよりクリーンな方法は、次の場所にあります。

WindowsインストーラーXMLを使用したInstallShieldの拡張-Windowsサービス

コンセプトは、サービスをマージモジュールとしてカプセル化し、InstallShieldに追加することです。Visual Studio展開プロジェクトに追加することも、純粋なWiXにリファクタリングすることもできます。

netshコマンドについても同じことが言えます。このカスタムコードをすべて用意して、すべてのサービス戦略を正しく行う必要はありません。代わりに、WiXの組み込みのFirewallException Element(Firewall Extension)を使用して(これもカプセル化して他のツールで使用できます)、ハードワークを実行させます。

これが面白くても達成できないように思われる場合は、私を叩いてください。お見せします。誰かがわざわざ本を書き直すまで、私は一度に1人の開発者を説得する必要があります。

于 2013-01-11T14:19:40.627 に答える
0

したがって、私がやったことは、BeforeRollbackイベントとAfterRollbackイベントを、公開されている他のインストーラーイベントと一緒にTopshelfのパブリックインターフェイスに表示することでした。私は開発者にプルリクエストを送信しましたが、開発者がそれを受け入れるまで、ここで私の更新を含むソースを見つけることができます:https ://github.com/developmentalmadness/Topshelf

于 2013-01-14T23:51:58.157 に答える