我使用 System.Management.Instrumentation 命名空间在 C# 中开发了一个 WMI 提供程序。我需要将提供程序安装到 GAC 中并使用 MSI 将其注册到 WMI 存储库。我如何使用 WIX 完成此任务?
2 回答
您需要一个 CustomAction 来注册 WMI 提供程序。我们曾考虑向 WiX 工具集添加一个标准的 CustomAction 来支持这一点,但还没有时间这样做。应该是相当多的工作。
您可能需要查看 .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 文件。