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