我即将以 MSI 的形式向企业提供产品升级。我相信他们通过 GPO 将其部署到各个工作站。
在此环境下对产品进行升级时可能发生的事件顺序是怎样的?
他们会使用 GPO 先卸载产品的先前版本,然后再部署新的 MSI 吗?
或者他们期望新的 MSI 自动卸载以前的版本?
答案1
在此环境下对产品进行升级时可能发生的事件顺序是怎样的?
他们可能会发布新的出版物并撤销旧出版物。
他们会使用 GPO 先卸载产品的先前版本,然后再部署新的 MSI 吗?
这对你来说完全不重要。正确编码的 MSI 至少会触发先前版本的卸载。
或者他们期望新的 MSI 自动卸载以前的版本?
他们会假设 MSI 的行为如此,因为这是它应该具有的行为。
编辑:在新版本中触发卸载旧版本很简单:
https://stackoverflow.com/questions/114165/how-to-implement-wix-installer-upgrade
<Property Id="PREVIOUSVERSIONSINSTALLED" Secure="yes" />
<Upgrade Id="YOUR_GUID">
<UpgradeVersion
Minimum="1.0.0.0" Maximum="99.0.0.0"
Property="PREVIOUSVERSIONSINSTALLED"
IncludeMinimum="yes" IncludeMaximum="no" />
</Upgrade>
因此,新版本无需额外“编码”即可触发 nuisntall。这纯粹是配置。
答案2
首先:当您将程序交付给一家公司时,您可以直接询问客户他的期望是什么。
但一般来说,最重要的是记录升级程序所需的步骤。作为管理员,我需要知道我是否可以直接部署它,然后它就会处理好所有事情,或者我是否需要先取消部署旧版本(我不喜欢这样,但如果我知道这是必要的,那就没问题)。
为不同的安装方法制作此文档。GPO 很可能但不保证会被使用。
最后:请仔细检查你的旧问题并接受你得到的答案。你的低接受率会让人们三思而后行,是否值得花时间回答你。
答案3
虽然对于供应商来说这样做可能很好,但依赖它并不实际。
我们通常会检查产品是否已安装,以及注册表中是否存在现有卸载项,然后运行该项。如果这不能完全卸载产品,我们会采取辅助措施来删除已知文件夹和注册表项。
这可能还需要包括运行类似 sc 命令的命令来停止、禁用和删除服务(如果适用)。卸载可能还需要重新启动,然后才能继续安装新版本。