我们有一个基于WPF的外部UI应用程序,即setup.exe,其中包装了在WiX中开发的msi。我们要求某些组件/ msi需要多实例支持,而某些组件则不需要多实例支持,但是所有组件都属于单个软件包。
我们在构建期间为每个实例预定义了InstanceID,ProductCode和UpdgradeCode。因为动态创建实例ID会在补丁/升级方案中带来复杂性。
我们希望Setup.exe做两件事,
现在Setup.exe将知道msi是否需要实例ID,因为它将调用msi并传递命令行参数。这是一种避免回归的插件机制。
问题:我们可能无法从MSI检索InstanceTransforms,可能是因为它不是属性。我们已经检查了_Storages表和属性表,但无法弄清楚。
如何在msi中检索InstanceTransforms元素及其实例定义(InstanceID和ProductCode?)>
请咨询。
@@克里斯托弗·画家
我们有一个基于WPF的外部UI应用程序,即setup.exe,其中包装了在WiX中开发的msi。我们要求某些组件/ msi需要多实例支持,而某些不需要...
我没有完全按照您的问题。通常,您可以使用WiX DTF Microsoft.Deployment.WindowsInstaller库对MSI数据库和MSI API进行查询。您可以查询属性表以获取ProductCode,然后查询已安装的产品以查看是否已安装。要查看MSI是否具有可用的嵌入式转换,您可以查询_Storages流,应用转换,然后还读取其属性。