我正在开发一个安装程序,它正在创建注册表值,并在卸载时删除它们。但是,我正在使用的一些注册表值可以与其他配套应用程序共享。我只希望它删除注册表值,如果它是使用这些注册表的唯一组件。如果安装了使用这些注册表值的其他应用程序,我的卸载不应该删除它们。我将如何创建这个条件呢?
发布于 2015-05-16 04:22:59
我认为通过使用基本的MSI组件规则来实现您要寻找的目标:
如果这些值在所有MSI中都是常见的,那么注册表值应该只在卸载一个产品时被删除,而不是删除整个值。
发布于 2015-05-17 11:09:35
在jbudrea回答的基础上,对我来说,这是一个合并模块很有用的场景。您可以在10个安装程序中拥有10个组件,并希望您保持GUID保持同步,或者您可以在合并模块中进行一次,并引用它10次。不要重复(干)。这主要用于注册表数据,如COM注册或文件扩展名处理程序。
对于某些数据,例如配置数据,永久组件可能是有意义的。占用空间很小,在卸载所有产品并重新安装其中一个产品之后,数据仍然存在是很好的。这还假设您正在执行一些属性持久化模式。
配置数据的最后一个想法是在安装过程中根本不做。相反,在应用程序的第一次运行时保存该设置,现在安装将不再管理它,并且会像上面那样在卸载时留下它。(我喜欢把配置数据看作用户数据,通常是MSI说要留下的用户数据。)
https://stackoverflow.com/questions/30267113
复制相似问题