Visual Studio 2010安装项目:即使文件已更改,也会覆盖该文件?

时间:2016-06-14 14:09:00

标签: visual-studio-2010 setup-project orca

我有一个Visual Studio 2010安装项目,我正在尝试创建升级到我的软件的新版本。

升级过程 正在运行。我正确更新了版本号,导致更新了产品代码。 RemovePreviousVersions也是True。

我的问题是,当我升级软件时,在运行软件的过程中,本地文件系统上有一个文件可能已更改。我发现,由于文件已更改,安装程序拒绝覆盖它 我希望我的安装程序强制使用新版本覆盖此文件。

我可以做些什么 - 在Visual Studio中,使用Orca或其他方式 - 强制文件被覆盖,即使它已被更改?

更新:在Orca中,我注意到“File”表包含“FileSize”列。我相信这可能是文件被忽略的原因。如果文件的大小已更改,则不匹配。有没有办法改写这个?

1 个答案:

答案 0 :(得分:2)

您无法安全地更改Windows Installer替换规则,但是您遇到了这种情况,因为升级机制首先在旧产品之上安装升级(调用文件替换规则),然后卸载旧产品,引用计数下来并删除产品。这是问题的“最重要”。如果将InstallExecuteSequence中的RemoveExistingProducts从InstallFinalize之前移动到InstallInitialize之后,您将完全卸载旧产品,然后安装新升级。如果您希望保留数据文件,那可能不起作用。

否则你可以使用Orca的RemoveFile表。您将添加一个针对与该文件对应的组件名称的条目(查看File表,并且RemoveFile表中可能已有一些条目作为示例)。您将值设置为在安装时删除。 RemoveFiles操作发生在安装新文件之前,因此它应该可以工作。