我有一个使用VS2008构建的Web设置项目。我已经将我的解决方案转换为VS2010,现在当我构建我的新安装程序并从MSI运行安装它安装得很好,然后在最后一步,删除它刚刚安装的所有文件。
我将RemovePreviousVersions设置为true。如果我关闭它,文件仍然存在(但我在控制面板的程序和功能中有多个实例)。
如果我再次运行安装,文件会重新出现。从那时起,即使安装另一个版本,文件也始终保留。因此,问题似乎是运行使用VS2008构建的安装程序,然后运行VS2010构建的相同安装程序。每个安装程序上的升级GUID都是相同的。
原因是什么以及如何解决这个问题?
答案 0 :(得分:1)
我没有尝试将设置从VS2008移植到2010,但是对于不同的构建版本具有相同的升级代码会导致问题;简单的解释是msiexec安装程序在尝试删除旧组件时失败,因为较旧的组件具有与正在安装的较新组件相同的升级版本。有一个VS项目设置,每次重建.msi时都可以自动生成新的升级代码。我通常选择这个,并节省了很多这些版本化的麻烦。
使用,卸载应用的所有副本 添加/删除程序
删除%TEMP%文件夹的内容(至 摆脱任何“旧”(VS2008)副本 你的.msi)
更新VS2010版本的GUID(我想你是通过右键单击来实现的 单击属性窗口中的GUID并单击“生成新GUID”)
重建项目并重试!
答案 1 :(得分:0)
我发现更改UpgradeCode会阻止文件被删除,但是它会被视为一个单独的安装程序 - 即在控制面板(程序和功能)中我的程序出现两次。从逻辑上讲,我认为,这是因为它不是同一个程序。
我唯一的选择似乎是通过编写自定义操作以编程方式在新版本的安装程序中卸载旧版本。
答案 2 :(得分:0)
我向Microsoft Connect提交了一个错误,他们已经证实它可以重现。
答案 3 :(得分:0)
我刚刚遇到这个错误。升级时有确切的问题。我尝试了解决方案:
https://connect.microsoft.com/VisualStudio/feedback/details/559575
我在 InstallInitialize (序列号1501)后立即在Orca中重新排序 RemoveExistingProducts 编辑了我的MSI文件。这可以在 InstallExecuteSequence 表中找到。这最初是序号6550。
这解决了我的问题。