我有一个常见的场景,但我很难让事情完全发挥作用.
这个场景非常简单,我想对产品进行重大升级,而无需更改服务设置,也无需重启.
我主要通过在DeleteServices上使用条件NOT UPGRADINGPRODUCTCODE来工作.但是,在升级期间不会停止服务,因此需要重新启动.
升级是否有某种方法可以停止服务,安装新文件并重新启动服务而无需删除/安装服务?
您是否启用了Windows 安装程序的等待标志以等待服务正确停止?http://msdn.microsoft.com/en-us/library/aa371634(v=vs.85).aspx。即使启用此标志,您的服务也必须在 30 秒内停止,否则主要升级将继续。有多种方法可以实现您自己的延迟以给予更多时间,但如果没有必要,请不要这样做。本质上,这可能只是一个自定义操作,其中包含一些实现属性表中自定义属性中指定的延迟的代码。
请注意, DeleteServices上的 NOT UPGRADINGProductCODE可能看起来没有副作用,但可能发生的情况是,主要升级不会删除计划在升级过程中卸载的服务。换句话说,您删除了一项服务,也许添加了一项新服务,而旧服务将无法正确卸载。像这样乱搞标准的 Windows Installer 操作并不是最佳实践,并且几乎肯定会产生意想不到的副作用。在与 Windows Installer 对抗时,您会将自己陷入困境以供以后更新。
如果我是你,我宁愿将服务安装拆分到单独的 MSI 中,以防它处于不应受到主安装影响的状态。然后,您将 MSI 文件与引导程序链接在一起。如果您将来需要添加新服务或删除旧服务,这非常灵活。而且它完全是普通的,不会与 Windows Installer 设计相冲突。这是从企业角度思考的,其中的问题是当每个服务可能有非常不同的发布时间表时能够可靠地控制每个服务。如果您将安装程序作为第三方产品提供给某人,这可能不是您所希望的。
| 归档时间: |
|
| 查看次数: |
1874 次 |
| 最近记录: |