我有一个MSI,其中包含一个使用以下代码注册的DLL文件:
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="XYZ.dll" Guid="<GUID>">
<File Id="XYZ.dll" KeyPath="yes" Source="XYZ.dll" SelfRegCost="1" />
</Component>
</ComponentGroup>
</Fragment>
现在,在安装之后,我手动注册了一个不同版本的文件(使用regsvr32)。我重新运行MSI安装并进行修复。在修复操作中,MSI DLL未覆盖手动DLL。是否有解决方法,以便我可以在执行修复操作时获得MSI DLL。
发布于 2015-09-17 02:43:22
修复的目的是将已安装产品的状态恢复到MSI文件中的规范。那么,“不同版本”到底是什么意思呢?例如,如果您的Dll是文件版本2.0,而您将其替换为1.0版本,则修复将恢复到2.0版本。但是,如果您将2.0文件版本替换为3.0文件版本,则修复不会用较低版本覆盖较高版本。这是因为修复的默认REINSTALLMODE是(IIRC) pocmus,这意味着如果丢失、等于或更旧的版本就替换。
所以这可能会有帮助,但如果没有,你应该说一些关于你的文件版本,因为替换是基于它们的。
https://stackoverflow.com/questions/32602539
复制相似问题