如果安装程序失败,WiX除了回滚和日志文件之外还能做什么?比如重启?
我有一个安装程序,其初始安装将由一个人完成,但更新必须自动完成 处理安装程序故障是一个问题。我必须计划安装程序失败:我使用引导程序中的元素来达到良好状态,然后我使用WiX日志和我自己设计的日志来记录失败 然而,这还不够好 有一个程序(我们称之为X.exe)。如果安装程序失败,我需要回滚到安装程序启动前的状态,并且:如果安装程序失败,WiX除了回滚和日志文件之外还能做什么?比如重启?,wix,windows-installer,custom-action,bootstrapper,failed-installation,Wix,Windows Installer,Custom Action,Bootstrapper,Failed Installation,我有一个安装程序,其初始安装将由一个人完成,但更新必须自动完成 处理安装程序故障是一个问题。我必须计划安装程序失败:我使用引导程序中的元素来达到良好状态,然后我使用WiX日志和我自己设计的日志来记录失败 然而,这还不够好 有一个程序(我们称之为X.exe)。如果安装程序失败,我需要回滚到安装程序启动前的状态,并且: 重新启动X.exe或 重新启动目标计算机,以便X.exe可以启动(我将X.exe安装到目标计算机的启动文件夹中;这也是我为成功安装所做的操作——重新启动目标计算机) 以某种尚未预料
- 重新启动X.exe或
- 重新启动目标计算机,以便X.exe可以启动(我将X.exe安装到目标计算机的启动文件夹中;这也是我为成功安装所做的操作——重新启动目标计算机)
- 以某种尚未预料到的方式处理这个问题
由于在现有资源中找不到答案,也找不到问题的答案,我意识到我只是要求Windows Installer做得太多了 我希望有一种方法可以做到:
if (installation fails)
{
do something (besides rollback and logging)
}
我想知道其他安装程序是否提供类似的功能?或者,如果安装程序失败,是否有其他方法让目标机器执行某些操作?理论上有,但整个回滚区域充满了警告。考虑“安装失败”对话框及其与成功案例的区别:您可以在该对话框上运行自定义操作。但这只有在有用户界面的情况下才能实现。因此,也许可以从回滚操作中执行一些操作。但是如果呢?您唯一稍微稳健的解决方案将在Windows Installer软件包之外 因此,在X.exe中,确保捕获返回代码,以便识别成功、取消、失败和各种需要重新启动的状态。如果是失败,那么考虑应用外部修复(重新启动,或其他)。如果你没有写X.exe,考虑这样做,或者写一些叫做X.EX../P>的东西。
但实际上,PhilDW的评论触及了它的核心:对于应用程序安装程序来说,在失败时重新启动并不是一种预期的行为。(一般建议应用程序安装程序不要重新启动。)MSI安装是事务性的-它们完全工作或完全失败,因此您的评论“如果安装程序失败,我需要回滚到安装程序启动前的安装程序状态”不适用。机器将处于安装前的状态,受具有回滚操作等的自定义操作的限制。MSI安装还使用系统还原来快照系统。啊,注释中的“或”。这使得整个句子没有意义。我将把它去掉……这句话现在更有意义了——我意识到MSI是事务性的。如果MSI失败,我想做点什么。