当我在现有已安装产品上运行新安装时,安装程序不会覆盖非 EXE 和 DLL 文件。对于 EXE 和 DLL,我可以设置版本号,它定义是否将替换文件。但这对于包含纯文本的配置文件是不可能的。
无论如何强制安装程序替换所有文件?
设置DetectNewInstalledVersion
为True
或False
没有任何效果。
RemovePreviousVersions
设置为真
当我在现有已安装产品上运行新安装时,安装程序不会覆盖非 EXE 和 DLL 文件。对于 EXE 和 DLL,我可以设置版本号,它定义是否将替换文件。但这对于包含纯文本的配置文件是不可能的。
无论如何强制安装程序替换所有文件?
设置DetectNewInstalledVersion
为True
或False
没有任何效果。
RemovePreviousVersions
设置为真
Windows Installer 的文件替换规则不允许替换用户修改的文件:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa370531(v=vs.85).aspx
基本问题是您并不真正希望产品安装数据库文件,用数据填充它,然后通过产品升级将其销毁。
这很可能是正在发生的事情。如果您使用以下命令记录升级:
msiexec /I [升级 MSI 的路径] /l*vx [文本日志文件的路径]
然后搜索文件名它会告诉你为什么它没有替换它。
另一种可能是该文件已在 MSI 文件的 Component 表中标记为 NeverOverwrite。在您的情况下,这似乎不太可能,因为 Visual Studio 设置在 IDE 中不提供对此的支持。这适用于安装后的组件并且无法撤消 - 这是系统设置,而不是 MSI 设置。