Wix 处理共享注册表值

Wix 处理共享注册表值,wix,Wix,我正在开发一个安装程序,它创建注册表值并在卸载时删除它们。但是,我使用的一些注册表值可以与其他配套应用程序共享。我只希望它删除注册表值,如果它是唯一使用这些注册表的组件。如果安装了使用这些注册表值的其他应用程序,“我的卸载”不应删除它们。我将如何创建这个条件 我认为您所寻找的是通过使用基本的MSI组件规则来实现的: 设置此共享注册表值的所有MSI都需要将该值设置为组件的键路径 组件需要具有相同的组件guid 如果这些在所有MSI中都是常见的,那么当卸载一个产品时,注册表值应该只减少其refc

我正在开发一个安装程序,它创建注册表值并在卸载时删除它们。但是,我使用的一些注册表值可以与其他配套应用程序共享。我只希望它删除注册表值,如果它是唯一使用这些注册表的组件。如果安装了使用这些注册表值的其他应用程序,“我的卸载”不应删除它们。我将如何创建这个条件

我认为您所寻找的是通过使用基本的MSI组件规则来实现的:

  • 设置此共享注册表值的所有MSI都需要将该值设置为组件的键路径
  • 组件需要具有相同的组件guid

如果这些在所有MSI中都是常见的,那么当卸载一个产品时,注册表值应该只减少其refcount,而不是删除整个值。

基于jbudrea的回答,对于我来说,这是一个合并模块很有帮助的场景。您可以在10个安装程序中安装10个组件,并希望保持guid同步,或者您可以在合并模块中执行一次并引用它10次。不要重复(干的)。这主要用于注册表数据,如COM注册或文件扩展名处理程序

对于某些数据,例如配置数据,永久性组件可能有意义。占地面积很小,在卸载所有内容,然后重新安装其中一个产品后,数据仍然保留在那里,这很好。这还假设您正在执行某些属性持久化模式

配置数据的最后一个想法是根本不在安装中使用它。相反,在应用程序第一次运行时保存该设置,现在安装将无法管理该设置,并将在卸载时保留该设置,如上所述。(我喜欢将配置数据视为MSI通常说要留下的用户数据。)