WMI提供程序集中的RunInstaller属性
我正在类库中创建分离的WMI提供程序。WMI提供程序集中的RunInstaller属性
[System.ComponentModel.RunInstaller(true)]
public class MyApplicationManagementInstaller : DefaultManagementInstaller { }
我收集这些安装的目的是因为Windows WMI基础设施需要在使用前要知道我的WMI提供程序的结构:我读到的一切对包括东西沿着这些路线点。
我的问题是 - 什么时候这个“安装程序”跑? MSDN说安装程序将在安装程序集期间被调用,但我不确定这是什么意思或什么时候在包含WMI提供程序的类库的上下文中发生。
我的印象是,这是为手动运行InstallUtil.exe对包含WMI提供程序的组件的自动更换,但我的变化作出的提供者不被Windows WMI基础设施的认可,除非我手动运行从命令提示符下运行InstallUtil。我可以在开发过程中在自己的机器上执行此操作,但是如果将使用提供程序的应用程序部署到其他计算机 - 那么会怎样?
看来,这个RunInstaller/DefaultManagementInstaller组合不能正常工作 - 正确吗?
据我所知,DefaultManagementInstaller是由installutil.exe运行的 - 如果你不包含它,这个类不会安装在WMI中。也许可以创建一个运行它的“安装项目”或“安装程序项目”,但我不确定,因为我没有使用Visual Studio。
[编辑]
用于远程安装目录,一个选项可以是使用与Installutil/MOF选项生成MOF用于组装和使用mofcomp将其移动到WMI。
谢谢Uros。它看起来像RunInstaller和DefaultManagementInstaller所做的一切使您能够成功地运行InstallUtil。这很奇怪,因为我几乎可以肯定,在我编译和使用第一个WMI提供程序的时候,我不知道InstallUtil。
我将着眼于使用MOF文件和我自己的使用我可以运行InstallUtil命令行作为VS中的后构建事件。
我用这样的以编程方式调用InstallUtil:从您的Main()方法
public static void Run(Type type)
{
// Register WMI stuff
var installArgs = new[]
{
string.Format("//logfile={0}", @"c:\Temp\sample.InstallLog"), "//LogToConsole=false", "//ShowCallStack",
type.Assembly.Location,
};
ManagedInstallerClass.InstallHelper(installArgs);
}
调用此。
-dave