c# - WMI 提供程序程序集中的 RunInstaller 属性

标签 c# windows wmi

我正在类库中创建分离的 WMI 提供程序。我读过的所有内容都指向包括以下内容:

[System.ComponentModel.RunInstaller(true)]
public class MyApplicationManagementInstaller : DefaultManagementInstaller { }

我认为此安装的目的是因为 Windows WMI 基础结构在使用之前需要了解我的 WMI 提供程序的结构。

我的问题是 - 这个“安装程序”什么时候运行? MSDN 表示安装程序将在“安装程序集期间”被调用,但我不确定这意味着什么或何时会在包含 WMI 提供程序的类库的上下文中发生。

我的印象是这是对包含 WMI 提供程序的程序集手动运行 InstallUtil.exe 的自动替换,但 Windows WMI 基础结构无法识别我对提供程序所做的更改除非我从命令提示符手动运行 InstallUtil。我可以在开发期间在我自己的机器上执行此操作,但如果将使用提供程序的应用程序部署到其他机器 - 那么怎么办?

似乎这个 RunInstaller/DefaultManagementInstaller 组合工作不正常 - 正确吗?

最佳答案

据我了解,DefaultManagementInstaller 由 installutil.exe 运行 - 如果您不包含它,则该类不会安装在 WMI 中。也许可以创建运行它的“安装项目”或“安装程序项目”,但我不确定,因为我不使用 Visual Studio。

[编辑]

对于远程安装,一个选项是使用带有/MOF 选项的 Installutil 为程序集生成 MOF,并使用 mofcomp 将其移动到 WMI。

关于c# - WMI 提供程序程序集中的 RunInstaller 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/162993/

相关文章:

c# - WPF 项目控制 : Can't seem to get items to display in the view

c# - 服务可以写入注册表 [HKLM]

python - pyodbc 无法连接到数据库,但 IBM Data Studio 使用相同的凭证连接

c++ - 是否有用于 Windows 资源加载字符串的有用 C++ 包装器类?

sql - WQL 不支持 TOP - 需要解决方法

vbscript - 如何从 WMI 中获取超过 97 行?

powershell - 获取静态的接口(interface)及其DNS服务器(未分配dhcp)

c# - 将 C# 实例方法作为回调传递给 Rust?

c# - StringArrays As A List<> Items -> 如何通过更改一个项目(预定义字符串数组)来防止更改所有项目

java - Netbeans 不断重启