【发布时间】:2017-11-29 14:05:52
【问题描述】:
我有一个安装程序,其初始安装将由人工完成,但更新必须自动完成。
处理安装程序失败是个问题。我必须计划安装程序失败:我使用引导程序中的 RollbackBoundary/> 元素进入良好状态,然后我使用 WiX 日志和我自己设计的日志来记录失败。
但是,这还不够好。
有一个程序(我们称之为X.exe)。如果安装程序失败,我需要回滚到安装程序启动之前安装程序所处的状态,并且:
- 重启X.exe或
- 重启目标机,使X.exe可以启动(我把X.exe安装到目标机的启动文件夹中;这也是我做的成功安装 -- 重启目标机器)。
- 以某种尚未预见的方式处理问题。
除了记录之外,WiX 还能为安装程序失败做些什么?有没有设置我可以捕捉到的条件,或者......什么?
我通过奇妙的书 WiX 3.6: A Developer's Guide to Windows Installer XML(Nick Ramirez 撰写)学习了 WiX,但我在那里找不到任何可以解决我的问题的东西,我也无法在互联网上找到它。
我希望我错过了一些明显的东西。有谁知道除了记录安装失败之外如何处理安装失败?
基于在现有资源中找不到我的问题的答案和找不到答案,我意识到我只是要求 Windows Installer 做太多事情。
我希望有办法做类似的事情:
if (installation fails)
{
do something (besides rollback and logging)
}
我想知道其他安装程序是否提供这样的功能?或者如果安装程序失败,是否有其他方法可以让目标机器执行某些操作?
【问题讨论】:
-
MSI 安装是事务性的 - 它们完全工作或完全失败,因此您的评论“如果安装程序失败,我需要回滚到安装程序在安装程序之前的状态开始”不适用。机器将处于安装前的状态,受具有回滚操作等自定义操作的影响。MSI 安装还使用系统还原来对系统进行快照。
-
啊,这是评论中的“两者之一”。它使整个句子没有意义。我会把它拿出来....
-
这句话现在更有意义了——我意识到 MSI 是事务性的。如果 MSI 失败,我想做点什么。
标签: wix windows-installer custom-action bootstrapper failed-installation