VS2010 Web Setup Project不替换'web.config'文件

时间:2013-08-16 06:26:45

标签: visual-studio-2010 windows-installer custom-action web-setup-project

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

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

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

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

  • DetectNewerInstalledVersion - True
  • 删除prevertversions - True
  • RestartWWWService - true

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

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

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

提前致谢!

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

1 个答案:

答案 0 :(得分:0)

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

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

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