Installation MSI安装程序使用的手动递增或递减文件引用计数器(refcount)?

Installation MSI安装程序使用的手动递增或递减文件引用计数器(refcount)?,installation,windows-installer,count,uninstallation,Installation,Windows Installer,Count,Uninstallation,我的理解是,MSI安装程序使用文件引用计数来跟踪有多少“安装程序”安装了共享文件(比如dll)。 [HKEY\U LOCAL\U MACHINE]\SOFTWARE\Microsoft\Windows\Current Version\SharedDLS 这样,假设3个产品都安装了相同的DLL,引用计数为3。为其中一种产品运行卸载程序时,卸载程序会将refcount减少为2,但不会实际删除该文件 我使用的是一个非标准的安装程序,它会插入一些文件,这些文件也是由一个普通的安装程序安装的。我想知道是否

我的理解是,MSI安装程序使用文件引用计数来跟踪有多少“安装程序”安装了共享文件(比如dll)。 [HKEY\U LOCAL\U MACHINE]\SOFTWARE\Microsoft\Windows\Current Version\SharedDLS

这样,假设3个产品都安装了相同的DLL,引用计数为3。为其中一种产品运行卸载程序时,卸载程序会将refcount减少为2,但不会实际删除该文件

我使用的是一个非标准的安装程序,它会插入一些文件,这些文件也是由一个普通的安装程序安装的。我想知道是否有一种简单的方法可以通过编程增加/减少这些文件的文件计数器?是否有Windows SDK来执行此操作

本文讨论了这个概念,但没有详细介绍如何实现它:


提前感谢您的帮助

您描述的SharedDLS注册表项的方法已被弃用,并被并行程序集(Microsoft的DLL地狱解决方案)取代

考虑使用SxS组件:

您确定将DLL放在可执行文件旁边并并行运行不会更容易吗?那么你就不必担心版本控制了。我的“安装程序”是MSI安装程序的一个子集,它们实际上都安装在同一个位置……读取注册表值似乎很简单,如果存在,则将值增加1并写回,如果没有,则创建值为1的项。但我同意@Robert Harvey的观点——尽管你可以避免,但你应该这样做。