Visual studio 2010 Web安装项目在从VS2008升级到VS2010后删除文件

Visual studio 2010 Web安装项目在从VS2008升级到VS2010后删除文件,visual-studio-2010,windows-installer,Visual Studio 2010,Windows Installer,我有一个使用VS2008构建的web安装项目。我已经将我的解决方案转换为VS2010,现在,当我构建新的安装程序并从MSI运行安装程序时,它会很好地安装,然后在最后一步,删除它刚刚安装的所有文件 我已将RemovePreviousVersions设置为true。如果我关闭此选项,文件将保持不变(但我在“控制面板”的“程序和功能”中获得多个实例) 如果我再次运行安装,文件将重新出现。从那时起,文件始终保留,即使在安装其他版本时也是如此。因此,问题似乎在于运行使用VS2008构建的安装程序,然后运行

我有一个使用VS2008构建的web安装项目。我已经将我的解决方案转换为VS2010,现在,当我构建新的安装程序并从MSI运行安装程序时,它会很好地安装,然后在最后一步,删除它刚刚安装的所有文件

我已将RemovePreviousVersions设置为true。如果我关闭此选项,文件将保持不变(但我在“控制面板”的“程序和功能”中获得多个实例)

如果我再次运行安装,文件将重新出现。从那时起,文件始终保留,即使在安装其他版本时也是如此。因此,问题似乎在于运行使用VS2008构建的安装程序,然后运行由VS2010构建的相同安装程序。每个安装程序上的升级GUID都是相同的


原因是什么?我如何解决这个问题?

我还没有尝试将安装程序从VS2008移植到2010,但是对于不同的构建版本使用相同的升级代码会导致问题;简单的解释是,msiexec安装程序在尝试删除旧组件时失败,因为旧组件的升级版本与正在安装的新组件相同。有一个VS project设置,您可以在每次重建.msi时自动生成新的升级代码;我通常会选择这个,这样就省去了很多版本控制方面的麻烦

  • 使用卸载应用程序的所有副本 添加/删除程序

  • 删除%TEMP%文件夹的内容(要删除) 清除任何“旧”(VS2008)拷贝 (您的.msi文件)

  • 更新VS2010版本的GUID(我认为您可以通过右键单击 属性窗口中的GUID并单击“生成新GUID”)

  • 重建项目并重试


我发现,更改升级代码会阻止文件被删除,但随后会将其视为单独安装的程序-即在控制面板(程序和功能)中,我的程序会出现两次。逻辑上,我认为,这是因为它不是同一个程序


我唯一的选择似乎是通过编写自定义操作,以编程方式在新版本的安装程序中卸载旧版本。

我向提交了一个bug,他们确认它是可复制的。

我刚刚遇到了这个错误。升级时出现了确切的问题。我尝试了以下解决方案:

在InstallInitialize(序列号1501)之后,我在Orca重新排序的RemoveExistingProducts中编辑了我的MSI文件。这在InstallExecuteSequence表中找到。这最初是序列号6550


这就解决了我的问题。

谢谢你的建议,尽管我对升级代码感到困惑。我认为这样可以跨安装识别产品(当版本更改时,产品代码会更改)。不过我会试试看。谢谢:)作为补充。同样的问题仍然存在于VS2019中,但在设置属性中,您现在可以启用向后兼容的ID。不再需要手动编辑。