c# - 安装程序不删除以前的版本

标签 c# installation windows-installer

我有一个应用程序。为了安装应用程序,我使用了一个简单的部署项目,其参数如下:

DetectNewerInstalledVersion = true  
InstallAllUsers = true  
ProductCode = GUID (changing with version)  
RemovePreviousVersions = true  
UpgradeCode = GUID (Allways the same)  
Version = 1.0.5 (changing with each deployment).

问题是,此安装程序(部署项目)从不删除以前的版本。它安装在顶部,Windows 显示我有 2 个版本的程序(即我安装的应用程序),但没有一个主题可以正常工作。


编辑
我在 assemblyInfo: 中添加了一行,但它仍然没有任何改变。在更深入地分析我的问题后,我意识到安装程序更改了 Program Files 文件夹中的大部分文件,但它从桌面删除了图标并从注册表中记录。在顶部安装后,我什至无法删除应用程序,因为我在控制面板 -> 程序 -> 程序和功能中看不到它。
如果我安装在顶部,我将无法使用程序。但是,如果我从程序文件文件夹运行它,它就可以工作(较新版本)。如果我安装它两次,一切正常(第二次安装时,向导要求修复或删除程序)。
也许这次有人有其他建议?
MSI 文件的解决方案不适合我,因为最终安装程序是 EXE 文件。

最佳答案

我为此纠结了很长时间,但它非常简单。

  1. 转到管理 VS 扩展并安装“Microsoft Visual Studio Installer Project”v0.9.9
  2. 右键单击您的安装程序项目并转到属性。对于同一产品的不同版本,保持属性窗口中的 UpgradeCode 变量相同。
  3. 在不同构建之间更改您的 ProductCode 变量。
  4. 现在,当您在系统上安装具有相同 UpgradeCode 的产品时,安装程​​序将升级您现有的产品,您在“添加/删除”窗口中将只有一个程序。

关于c# - 安装程序不删除以前的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14434756/

相关文章:

c# - 通用类的扩展方法

Python 打包 - 程序的 Distutils

c# - 安装应用程序后,拖放不再有效

java - 如何从我的应用程序访问 MSI 公共(public)属性?

sql-server-2005 - 检测是否安装了 SQL Server Compact Edition 3.5 SP2 x64?

c# - ASP.NET 将数据类型 nvarchar 转换为数字时出错

c# - 你能只参数化where子句吗?

c# - 使用 session 将数据从 .aspx 文件传递​​到 .ashx 文件

installation - Visual Studio 2015 社区版安装卡在 Windows 10 中

java - 在启动我的安装程序(java)之前检查 Windows 更新或任何安装程序实例是否正在运行