2009-03-24 5 views
0

C#でSystem.Management.Instrumentation名前空間を使用してWMIプロバイダを開発しました。私はGACにプロバイダをインストールし、MSIを使用してそれをWMIリポジトリに登録する必要があります。どうすればWIXでこれを達成できますか?WIXを使用してWMIプロバイダをインストールする

答えて

2

WMIプロバイダを登録するには、CustomActionが必要です。これをサポートするために標準のCustomActionをWiXツールセットに追加することを考えましたが、まだそうする時間はありませんでした。おそらくかなりの仕事です。

+0

InstallUtil.exeを起動せずにこれを行うことはできますか?私たちはロールバックシナリオをサポートしていないため、InstallUtilの使用を控えています。 –

+0

ええ、InstallUtil.exeをCustomActionsに使用しないでください。 MSIからテーブルを読み込むDLLを使用することは、すべてのWiXツールセットCustomActionsが実装される方法です。あなたはそれらをチェックするかもしれません。 –

0

.NET FrameworkでAssemblyInstallerクラスをチェックしたい場合があります。 http://msdn.microsoft.com/en-us/library/System.Configuration.Install.AssemblyInstaller_methods.aspx

Install()およびCommit()メソッドを使用してWMIプロバイダのmofを生成してインストールする管理対象カスタムアクションを作成できます。また、アンインストールCustomActionでUninstall()およびCommit()メソッドを使用することもできます。

このタスクを実行するための公式の推奨方法はわかりません。私はインストーラで使用したくない自己登録のような感じです。しかし、WMIのデータベースに登録されている静的クラス/インスタンス定義を取得するには、MOFファイルをコンパイルするしかありません。クラス/インスタンス情報を含むMOFは、WMIプロバイダアセンブリが参照される場所です。

AssemblyInstallerクラスは、MOFファイルを生成してコンパイルする方法を認識しています。 MOFファイルのコンパイルに使用できるネイティブAPI(IMofCompiler :: CompileFile):http://msdn.microsoft.com/en-us/library/aa390867(v=vs.85).aspxもあります。

関連する問題