既存のアプリケーション用のプラグイン(実際にはプラグインを生成するビジュアルスタジオテンプレートウィザード)を作成しようとしています。プラグインのインストールの一環として、設定データベースにエントリを挿入する必要があります。多くの場合、機能のさまざまな部分に対応する複数のDLLが存在し、それぞれが同じテーブル内のエントリを必要とすることもありますが、通常はテーブルエントリの異なる組み合わせがあります。私はインストーラからそれらを追加する必要があります。Microsoft WindowsインストーラクラスからインストールされたDLLのリストを取得する
ポリシー上の理由から、すべてがC#にあります。
私は現在Visual Studio Installer(VS2010)を使用してインストーラを作成しています。私はテンプレート/ウィザードのインストールを単純に保つためにユーザのマシンにインストールされる可能性のあるものを使用したいが、オープンソース(あるいは少なくとも自由に再配布可能な)の代替インストーラ。
たとえば、アプリケーションにメニューエントリを追加するには、いくつかのテーブルにエントリを挿入する必要があります。以前は、インストーラアプリケーションから呼び出されたインストーラヘルパ(時にはアプリケーション、時にはinstaller class)を使用してこれを行ってきました。その設計では、設定テーブルに追加する必要がある設定をインストーラヘルパーに埋め込み、SQLを(C#:-)経由で実行して実際に追加を行います。
これは、同じ情報を2つの場所に繰り返すことにつながり、ウィザード環境ではそれほどメンテナンスやクリーンではありません。私は本当にプラグインアセンブリで設定できるいくつかの属性からこの情報をイントロスペクトする方が好きです。
しかし私は最初のステップを偶然見つけました。私のインストーラクラスは、このインストールでどのアセンブリがインストールされたか(またはインストールされるか)をどのように見つけることができますか?
DLLのリストをカスタムインストーラプロパティに埋め込むことを検討しましたが、これもプラグインウィザードから生成するのが難しいでしょう。理想的には、私が登録できる既存のイベント、または私が読むことができる既存のイベントがありますが、私はそれをまだ発見していません。
ですから、.MSIファイルとそれが含まれてどのようなDLLを決定するがありますか? –
私はインストーラプロジェクトを持っています(その出力は.msiです)。インストーラクラスは、その.msi(DLLに含まれるDLLと選択された構成)またはDLLがインストールしたDLLで動作するはずです。 – BradHards