Visual Studio 2010安装程序项目:是否覆盖文件(即使文件已更改)



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

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

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

在VisualStudio、Orca或其他方面,我能做些什么吗?即使文件发生了更改,我也能强制覆盖它吗?

更新:在Orca中,我注意到"File"表包含一个"FileSize"列。我相信这可能是该文件被忽略的原因。如果文件的大小已更改,则它不匹配。有什么办法可以推翻这一点吗?

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

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

最新更新