wix:如何防止用户在安装或升级应用程序期间重新启动计算机

本文关键字:应用程序 计算机 重新启动 何防止 用户 安装 wix | 更新日期: 2023-09-27 17:55:09

当更新''安装发生时,计算机可能会关闭/重新启动/注销,这可能会损坏安装。

如果我们通过在安装初始化后安排删除现有产品来设置回滚选项,它会在计算机重新启动后恢复安装''更新吗?

如果Wix中有一种方法可以防止用户在安装''升级期间重新启动和注销?

我们如何让 wix 安装程序在重新启动后甚至突然关闭(通过硬件)后恢复其剩余工作?

更新

我们为客户部署了一个桌面应用程序。我们的客户可以自动升级到最新版本。我们的应用程序将下载最新版本的 msi 并在后台静默运行 msiexex.exe 命令,以便用户无需执行任何操作。所有的事情都将在后台静默完成。它工作得很好。现在,我们的一些客户抱怨他们之前有v2.1,但现在它已经消失了。我们正在考虑以下可能的情况:

  1. 在升级过程中,将下载最新版本的 MSI,应用程序本身将在后台使用命令 MSIEXEC .exe调用它。已安装(现有)版本的卸载已完成,但新版本的安装失败,使两个版本都从计算机中卸载。

    根据阅读不同的论坛,似乎只有在卸载现有版本失败时才会发生wix中的回滚。所以,我的问题是:如果在安装新版本的过程中出现任何错误,它会回滚到现有版本吗?

  2. 由于用户永远不会知道应用程序的更新正在进行,因为它将在静默模式下完成,因此用户可以在升级的同时重新启动或关闭其计算机。因此,我最初的问题是:如果在安装过程中重新启动或关闭计算机,安装是否会损坏。就像你说的,如果所有事情都处于事务性状态,并且旨在随时从重启中恢复,那么这对我们有好处。那么,你的意思是我们不必自己处理这种情况吗?它会自动处理 wix?

那么,可能是#1导致应用程序在升级过程中被卸载吗?或者还有其他可能性吗?

wix:如何防止用户在安装或升级应用程序期间重新启动计算机

Windows 安装程序在重新启动后重新启动就好了,即使重新启动是在安装阶段。甚至还有一个强制重新启动操作,以便在安装需要时强制执行此操作,并且还有一个 AFTERREBOOT 属性设置为检测安装过程中是否有重新启动。

如果 RemoveExistingProducts (REP) 刚好在 InstallInitialize 之后,则它位于事务中,升级失败将导致回滚升级,这包括回滚 REP 和安装以前安装的产品。但是,这是许多安装不会测试的方案,重新安装产品失败将导致两个产品都未安装。这与重新启动无关,只是回滚 REP 基本上是旧产品的静默安装,需要恢复所有基本属性并自定义操作才能正常运行。如果您的客户端在升级失败后未发现任何安装,这似乎是您的问题。

如果 REP 在 InstallFinalize 之后,则它在事务之外。这意味着安装了较新的产品,事务完成,然后卸载旧产品,如果失败,您将同时安装旧产品和新产品。

如果您使用 WiX 和捆绑包来安装或升级多个 MSI,则有一个回滚边界来控制在一系列 MSI 中回滚多少。

同样,是否有重新启动并不重要 - Windows安装程序可以处理这个问题,看起来您的回滚无法重新安装原始产品。您应该使用完整的详细日志进行升级(如果您控制命令行并且可以添加日志记录选项,则 IMO 应该是默认值)。日志应显示升级期间的任何故障。

相关文章: