在MSI取消/回滚后,您可以打开服务或运行可执行文件吗?

时间:2015-02-27 16:38:10

标签: service windows-installer installshield

我有一个运行服务的产品 如果msi升级开始 哪个首先关闭服务 所以它可以被替换 然后,如果用户手动取消MSI的升级 或者由于故障它自行回滚 那么是否可以从MSI重新开启服务?

1 个答案:

答案 0 :(得分:1)

如果升级的RemoveExistingProducts操作在InstallInitialize和InstallFinalize之间的事务中,那么它应该都可以正常工作。例如,如果您在InstallInitialize之后立即执行REP操作,则会删除该旧产品,然后安装新产品。如果新产品的安装失败或被取消,那么REP也会回滚并重新安装旧产品。在服务的情况下,这意味着它将启动旧服务,如果这是旧产品的安装。因此,如果您使用标准MSI操作启动/停止服务,则应该没有问题。

这里有各种假设,例如,您的旧安装和新升级可能充满了没有回滚等效项的自定义操作,或安装了旧产品时因某些原因无法运行的CA.是从回滚安装,还是没有正常关闭的服务等。您可能会看到的特定问题需要日志来调查。

如果用户在卸载旧版本时取消,那就是同样的事情。仍然有一个事务回滚并重新安装旧产品并且升级失败。如果这是安装的,那将重启服务。还有各种各样的方法可能会失败,例如不执行回滚的CA,或者假定UI始终运行的安装。所以,如果你愿意的话,这一切都有效。