我有一个使用 VS2005 用 C# 编写的 Windows 服务。
安装是通过一个向导调用 msiexec 来安装同样使用 VS2005 创建的 msi 文件。
我无法生成将从一个版本的服务升级到另一个版本的 msi 文件。向导程序处理当前安装版本的检测、停止服务、为 msiexec 提供适当的命令行,然后重新启动服务。
现有 msi 的版本属性为 1.1.02,新的为 1.1.03。产品代码和升级代码相同。
通过添加/删除程序手动卸载 1.1.02 可以正常工作,就像将 1.1.03 安装到“干净”系统上一样。
将 1.1.02 升级到 1.1.03 经历了一些动作,但最终结果是安装了 1.1.02。
向导用于升级的命令行是:
msiexec /qb /i "MyProduct.msi" REINSTALL="ALL" REINSTALLMODE="vos"
我哪里错了?我假设我一定错过了一些相当基本的东西......
备用位置是通知客户他们需要在运行向导安装 1.1.03 之前手动卸载 1.1.02,但我宁愿不必这样做。
编辑添加:
更改产品代码(正如 VS2005 也会提示您)实际上完全消除了升级的能力,因为如果以前没有安装过该产品代码,安装程序将不允许您重新安装。
然后它会让你做的就是安装(然后你会得到通常的“服务已经存在”类型的消息)。