2007年01月25日

独自のWMIの管理データクラスの強制再インストール

  
C#で独自のWMIの管理データクラスを作成した場合、.NET Framework SDK に用意されている installutil.exe ユーティリティをつかってインストールをしますが、Main()関数の先頭に次のコードを追加することでも、インストールすることが可能です。
 string[] installArgs = new String[] {
"/logfile=",
"/LogToConsole=true",
"/ShowCallStack",
Assembly.GetExecutingAssembly().Location,
};
System.Configuration.Install.ManagedInstallerClass.InstallHelper(installArgs);

しかしながら、WMI Tester (wbemtest.exe) を使って、インストールしたクラスを削除してしまうと、上記コードで、再インストールすることができません。
これって、WMI Tester (wbemtest.exe) 側のバグじゃないかなと思うのですが、MSの見解では、規定の動作なんだそうです。

この場合は、

 installutil.exe /f  [yourassemblyname]

として、強制的に再インストールするか、

 string[] installArgs = new String[] {
"/f",
"/logfile=",
"/LogToConsole=true",
"/ShowCallStack",
Assembly.GetExecutingAssembly().Location,
}

のように、InstallHelper に渡すオプションに、/f を付加するかの、どちらかの方法で、再インストールすることができます。

後者の方は、installArgs で設定しているのが、installutil のコマンドラインオプションそのものなので、もしかして? と思って、/f をつけたら案の定うまくいきました。


 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/50695877