c# – 如何说服VS2005 msi进行升级?

c# – 如何说服VS2005 msi进行升级?,第1张

概述我有一个使用VS2005用C#编写的 Windows服务. 安装是通过一个向导调用msiexec来安装也使用VS2005创建的msi文件. 我在生成msi文件时遇到问题,该文件将从一个版本的服务升级到另一个版本.向导程序处理当前安装版本的检测,停止服务,为msiexec提供适当的命令行,然后重新启动服务. 现有msi的版本属性为1.1.02,新版本为1.1.03.产品和升级代码完全相同. 通过添加 我有一个使用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相关联:

>包代码 – 它标识MSI安装程序的特定版本,不应跨构建重用.必须始终更新.
>产品代码 – 此标识符用于标识特定版本的应用程序.安装程序作者可以决定何时分配新的产品代码.
>升级代码 – 这标识应用程序,不应在其生命周期内进行更改

升级代码永远不会改变.为了升级scenerio,必须为每个版本更改产品代码.此外,如您所述,您必须使用版本号.通过选择安装项目并转到“属性”窗口,可以找到产品代码和升级代码.包裹代码隐藏在Studio中,并且将始终更新.

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

总结

以上是内存溢出为你收集整理的c# – 如何说服VS2005 msi进行升级?全部内容,希望文章能够帮你解决c# – 如何说服VS2005 msi进行升级?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1240757.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存