处理共享注册表值

时间:2015-05-15 19:12:32

标签: wix

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

2 个答案:

答案 0 :(得分:0)

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

  • 设置此共享注册表值的所有MSI都需要将值设置为组件的KeyPath。
  • 组件需要具有相同的组件指南。

如果这些在所有MSI中都是通用的,则注册表值应该仅减少其refcount,而不是在卸载一个产品时删除的整个值。

答案 1 :(得分:0)

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

对于某些数据,例如配置数据,永久组件可能有意义。占用空间很小,卸载所有内容然后重新安装其中一个产品后,数据仍然存在是很好的。这也假设你正在做一些属性持久性模式。

配置数据的最后一个想法是根本不在安装中执行此操作。而是在第一次运行应用程序时保存设置,现在安装将无法管理它,并将在上面的卸载时将其留下。 (我喜欢将配置数据视为MSI通常会留下的用户数据。)