使用WIX安装WMI提供程序

使用WIX安装WMI提供程序,wix,windows-installer,wmi,Wix,Windows Installer,Wmi,我使用System.Management.Instrumentation命名空间在C#中开发了一个WMI提供程序。我需要将提供程序安装到GAC中,并使用MSI向WMI存储库注册它。我如何使用WIX实现这一点?您需要一个自定义操作来注册WMI提供程序。我们已经考虑过向WiX工具集添加一个标准的CustomAction来支持这一点,但还没有时间这么做。可能需要做很多工作。您可能需要在.NET framework中查看AssemblyInstaller类。 您可以创建托管自定义操作,该操作使用Ins

我使用System.Management.Instrumentation命名空间在C#中开发了一个WMI提供程序。我需要将提供程序安装到GAC中,并使用MSI向WMI存储库注册它。我如何使用WIX实现这一点?

您需要一个自定义操作来注册WMI提供程序。我们已经考虑过向WiX工具集添加一个标准的CustomAction来支持这一点,但还没有时间这么做。可能需要做很多工作。

您可能需要在.NET framework中查看AssemblyInstaller类。

您可以创建托管自定义操作,该操作使用Install()和Commit()方法生成WMI提供程序的mof并进行安装。您还可以在卸载CustomAction中使用Uninstall()和Commit()方法

我不知道这是否是官方推荐的完成这项任务的方法。这有点像自我注册,我不喜欢在安装程序中使用。然而,我知道的在WMI数据库中注册静态类/实例定义的唯一方法是编译MOF文件。包含类/实例信息的MOF是引用WMI提供程序程序集的位置


AssemblyInstaller类知道如何为您生成和编译MOF文件。还有一个本机API(IMofCompiler::CompileFile):可用于编译MOF文件。

是否可以在不调用InstallUtil.exe的情况下执行此操作?我们不想使用InstallUtil,因为它不支持回滚场景。是的,InstallUtil.exe不应该用于自定义操作。使用从MSI读取表的DLL是实现所有WiX工具集CustomActions的方式。您可以查看它们。对于那些想知道它是否仍然不受支持的人,这里有一个指向github问题的链接: