1

我正在为我的 MVC3 Web 应用程序使用 VS2010 Web 设置项目。它在安装时工作正常。但是,如果我更新 MVC3 webapplication 二进制文件和 Web 设置项目的版本以进行升级(从旧版本的现有安装),它将不会替换目标目录上的 web.config 文件。所有其他文件和目录都被替换和更新,但只有“web.config”文件不会被 Web 设置替换。

每次更新 Web 应用程序中的任何内容时,我都会更改 Web 设置项目和 MVC3 应用程序的版本。

我还尝试更改“ProductCode”和“UpgradeCode”,但 web.config 文件仍然相同(第一个版本)

我设置了 Web 设置项目的以下属性

  • DetectNewerInstalledVersion - 真
  • 删除以前的版本 - 真
  • 重新启动WWWService - 真

如果我手动删除/删除现有的 web.config 文件,然后安装新版本,它将放置新的更新的 web.config 文件。仅当目标目录中存在现有的 web.config 文件时才会出现此问题。

我还尝试了自定义操作的“OnBeforeInstall”来删除或重命名现有的 web.config 文件,以便新的 we.config 将在安装中复制。但在那我发现所有文件都在自定义操作方法执行之前被复制。

请帮助我解决此问题或建议另一种方法来向我的客户提供 Web 设置项目。

提前致谢!

编辑:我发现当我更改 Web Setup 项目的版本时,它会自动更改产品代码,但升级代码仍然相同。

4

1 回答 1

0

安装时,安装程​​序将检查它将替换的每个文件的版本。因此,如果文件版本相同或在两个安装程序之间没有更改,安装程序不会替换它。但如果该文件不存在,安装程序将删除该文件。

解决方案: 尝试在“costfinilize”之前删除文件。因此,在您的情况下,在“costfinilize”之前调用自定义操作来删除\删除文件。

您可以使用 Orca 来检查 msi 的所有自定义操作的执行顺序。 http://msdn.microsoft.com/en-us/library/windows/desktop/aa370557(v=vs.85).aspx

于 2013-08-20T11:09:11.250 回答