Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果安装程序失败,WiX除了回滚和日志文件之外还能做什么?比如重启?_Wix_Windows Installer_Custom Action_Bootstrapper_Failed Installation - Fatal编程技术网

如果安装程序失败,WiX除了回滚和日志文件之外还能做什么?比如重启?

如果安装程序失败,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安装到目标计算机的启动文件夹中;这也是我为成功安装所做的操作——重新启动目标计算机) 以某种尚未预料

我有一个安装程序,其初始安装将由一个人完成,但更新必须自动完成

处理安装程序故障是一个问题。我必须计划安装程序失败:我使用引导程序中的元素来达到良好状态,然后我使用WiX日志和我自己设计的日志来记录失败

然而,这还不够好

有一个程序(我们称之为X.exe)。如果安装程序失败,我需要回滚到安装程序启动前的状态,并且:

  • 重新启动X.exe
  • 重新启动目标计算机,以便X.exe可以启动(我将X.exe安装到目标计算机的启动文件夹中;这也是我为成功安装所做的操作——重新启动目标计算机)
  • 以某种尚未预料到的方式处理这个问题
对于安装程序故障,除了日志记录之外,WiX还能做什么?有没有一个条件是我可以抓住的,或者。。。有什么事吗

我通过尼克·拉米雷斯(Nick Ramirez)写的那本神奇的书学习了WiX,但在那里我找不到任何解决我问题的方法,在互联网上也找不到

我希望我错过了什么。除了记录安装程序故障并停止安装之外,还有人知道如何处理安装程序故障吗


由于在现有资源中找不到答案,也找不到问题的答案,我意识到我只是要求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失败,我想做点什么。