gpt4 book ai didi

c# - 如何说服 VS2005 msi 升级?

转载 作者:太空狗 更新时间:2023-10-29 20:56:01 24 4
gpt4 key购买 nike

我有一个使用 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 也会提示您)实际上完全删除了升级的能力,因为如果以前没有安装该产品代码,安装程序将不允许您重新安装。

然后它会让您做的就是安装(然后您会收到通常的“服务已存在”类型的消息)。

最佳答案

如果您想自动删除以前的版本,需要做几件事才能“升级”以使用 MSI。

首先是关于神秘“代码”的一些背景信息。有 3 个代码 (GUID) 与 MSI 关联:

  1. Package Code - 这标识了 MSI 安装程序的特定版本,绝不能跨构建重复使用。它必须始终更新。
  2. 产品代码 - 此标识符用于标识应用程序的特定版本。何时分配新产品代码由安装程序作者决定。
  3. 升级代码 - 这标识了应用程序并且在其生命周期内不应更改

升级代码 不应更改。为了升级场景,必须为每个版本更改产品代码。此外,正如您提到的,您必须修改版本号。 产品代码升级代码 可以通过选择安装项目并转到“属性”窗口来找到。 Package Code 隐藏在 Studio 中,并且会一直更新。

您可能缺少的项目是,您还需要将“属性”窗口中的 RemovePreviousVersions 设置设置为 true

关于c# - 如何说服 VS2005 msi 升级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/511789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com