使用 WIX 安装 WMI 提供程序
我使用 System.Management.Instrumentation 命名空间在 C# 中开发了一个 WMI 提供程序。 我需要将提供程序安装到 GAC 中并使用 MSI 将其注册到 WMI 存储库。 我如何使用 WIX 来实现这一目标?
I have developed a WMI provider in C# using the System.Management.Instrumentation namespace. I need to install the provider into the GAC and register it with the WMI repository using MSI. How might I accomplish this with WIX?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要一个 CustomAction 来注册 WMI 提供程序。 我们考虑过向 WiX 工具集中添加一个标准 CustomAction 来支持这一点,但还没有时间这样做。 可能需要相当多的工作。
You'll need a CustomAction to register the WMI provider. We've thought about adding a standard CustomAction to the WiX toolset to support this but haven't had the time to do so yet. Probably quite a bit of work.
您可能想查看 .NET 框架中的 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 文件。 还有一个本机 API (IMofCompiler::CompileFile): http://msdn.microsoft.com/en-us/library/aa390867(v=vs.85).aspx 可用于编译 MOF 文件。
You may want to check out the AssemblyInstaller class in the .NET framework.
http://msdn.microsoft.com/en-us/library/System.Configuration.Install.AssemblyInstaller_methods.aspx
You can create a managed custom action that uses the Install() and Commit() methods to generate a mof of your WMI provider and install it. You can also use the Uninstall() and Commit() methods in your uninstall CustomAction.
I don't know if this is the official recommended way to accomplish this task. It kind of feels like self-registration which I don't like to use in an installer. However, the only way I know of to get static class/instance definitions registered in WMI's database is to compile a MOF file. The MOF containing your class/instance information is where your WMI provider assembly is referenced.
The AssemblyInstaller class knows how to generate and compile your MOF file for you. There is also a native API (IMofCompiler::CompileFile): http://msdn.microsoft.com/en-us/library/aa390867(v=vs.85).aspx that can be used to compile your MOF file.