1

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

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

我也试图与改变“产品代码”和“的UpgradeCode”,但仍然web.config文件是相同的(第一版)

我设置下面的Web安装项目

  • DetectNewerInstalledVersion的财产 - 真
  • Removepreviousversions - 真
  • RestartWWWService - 真

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

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

请帮我解决这个问题,或者建议一种替代方法来为我的客户提供网络安装项目。

在此先感谢!

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

+0

您是否尝试过手动更改旧版web.config文件中的版本等? –

+0

没有web.config文件的任何属性来更改版本或代码 –

回答

0

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

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

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

+0

您可以详细说明该解决方案吗?什么是“costfinilize”?你在VS2010中设置它在哪里? –

相关问题