.NET MSI安装项目 - 覆盖先前版本

8
我有一个MSI安装程序项目,用于安装Windows服务。
我的版本编号方法最好由这篇帖子描述:AssemblyVersion、AssemblyFileVersion和AssemblyInformationalVersion之间有什么区别? 我不会改变我的安装项目的版本,因为那是不会变的,而且我在这方面遇到了太多问题。
我已经使用以下程序集版本安装了我的服务。
[assembly: AssemblyVersion("4.3")]
[assembly: AssemblyFileVersion("4.3.0.0")]

我刚刚构建了一个MSI安装程序到这个版本:

[assembly: AssemblyVersion("4.3")]
[assembly: AssemblyFileVersion("4.3.1.0")]

当我运行MSI时,它告诉我需要卸载先前的版本。
我该怎么办?我的最终目标是:
1. 安装一个MSI 2. 安装(即升级到)覆盖以前版本的另一个版本(带提示或不带提示) a. 我不想在安装更新前先卸载。
我的安装程序项目属性是:
RemovePreviousVersions - True InstallAllUsers – True DetectNewerInstalledVersion – False Version – 4.3.0
我尝试过:
1. 更新项目的程序集版本。但是,这会在添加/删除程序中创建多个相同产品的版本。对于Windows服务不是我想要的。 2. 更改安装程序项目上的版本号。但是,这会在安装任何版本的MSI时创建大量错误。我甚至收到了在网络驱动器上安装的警告!(哇)
如果有帮助,感激不尽!
谢谢。

我总是试图在安装程序项目版本中进行更改,同时保留升级代码,并且需要手动卸载。这是我迄今为止想出的最好方法 - 从与您类似的要求开始。 - Daniel Mošmondor
1个回答

5
在设置项目属性中,您需要逐个增加“版本”属性的值,同时保持相同的“UpgradeCode”值。当您增加版本号时,它会提示您是否要更改“ProductCode”,请回答“是”。还必须将卸载先前版本和检测新版本的属性设置为true。

保留相同的升级代码似乎与在更改ProductCode时选择“是”相矛盾。这是一种矛盾吗? - sweetfa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接