vic*_*tor 3 windows-installer custom-action wix
我有以下CustomAction:
<CustomAction Id="ActionName"
After="InstallFinalize">
<![CDATA[NOT Installed AND (VSTORUNTIME4="#1")]]>
</CustomAction>
Run Code Online (Sandbox Code Playgroud)
问题是当我返回ActionResult.Failure时,CustomAction中存在一个案例.在这种情况下,安装程序将显示错误消息并说安装失败,但应用程序仍然部分安装(文件已经在Program Files中,应用程序显示在卸载程序中).
我希望如果我返回ActionResult.Failure,那么安装将被中止并卸载.如果自定义操作在默认的Visual Studio安装程序中失败,会发生这种情况,我认为这更有意义.
如果自定义操作失败,有人知道如何触发卸载吗?我是否需要为WiX XML添加额外的东西?
目前,您的自定义操作是在安装事务完成后安排的(After ="InstallFinalize").可以回滚的唯一自定义操作是在"InstallInitialize"和"InstallFinalize"之间安排的"延迟"自定义操作.对于延迟的自定义操作,您还应该在其之前安排回滚自定义操作.
默认情况下,Windows Installer 支持事务性故事,并且能够回滚对系统的所有更改。问题是,您的自定义操作在做什么以及它们在哪里/如何安排?
如果您的 CustomActions 正在更改计算机的状态,则它们需要以事务方式执行此操作,否则安装程序无法回滚您的代码引起的进程外更改。
这里有几篇不错的阅读文章:
Windows Installer 中自定义操作的安装阶段和脚本内执行选项