维克斯。 当被取消安装回滚自定义操作(WiX. Rollback custom action w

2019-09-22 18:19发布

我有一个自定义操作

<CustomAction Id="myActionId" BinaryKey="myAction" DllEntry="MySimpleAction" Execute="immediate" Return="check" />

<InstallExecuteSequence>
      <Custom Action="myActionId" After="InstallInitialize">CHECKBOXCOPYPROP=1</Custom>
</InstallExecuteSequence>

我的自定义操作做备份和解决数据库。 我需要做的回滚(DROP DATABASE)时被取消安装。 我所做的:

<CustomAction Id="myActionId" BinaryKey="myAction" DllEntry="MySimpleAction" Execute="immediate" Return="check" />
<CustomAction Id="myActionRollbackId" BinaryKey="myActionRollback" DllEntry="MySimpleAction" Execute="rollback" Return="check" />

<InstallExecuteSequence>
      <Custom Action="myActionId" After="InstallInitialize">CHECKBOXCOPYPROP=1</Custom>
      <Custom Action="myActionRollbackId" Before="myActionId">CHECKBOXCOPYPROP=1</Custom>
</InstallExecuteSequence>

但我有一个错误。

如果我这样做:

<CustomAction Id="myActionId" BinaryKey="myAction" DllEntry="MySimpleAction" Execute="immediate" Return="check" />
<CustomAction Id="myActionRollbackId" BinaryKey="myActionRollback" DllEntry="MySimpleAction" Execute="immediate" Return="check" />

<InstallExecuteSequence>
      <Custom Action="myActionId" After="InstallInitialize">CHECKBOXCOPYPROP=1</Custom>
      <Custom Action="myActionRollbackId" After="myActionId">CHECKBOXCOPYPROP=1</Custom>
</InstallExecuteSequence>

我的自定义操作myActionRollbackId作品。

如何时被取消安装运行rolback? 有人能帮助我吗?

Answer 1:

它运行在安装并执行与数据库的东西自定义操作应推迟( Execute='deferred' )。 其对应的回滚动作要Execute='rollback' 。 当你安排这些自定义操作,回滚操作应该先去。

此外,还要确保在条件设置正确。



Answer 2:

安装总是以交易完成。 当您启动安装程序时,它首先创建一种叫做安装脚本是像它会同时安装做一个待办事项清单。 当我们设置为执行=“立竿见影”的一些自定义操作,它就会立即执行,但是,当我们设定我们的行动为执行=“延期”,它在安装脚本会添加,因此回滚变得比较容易了这一点。 现在,这里有一点要注意的是,我们可以访问在执行=“立竿见影”的模式会话,但我们不能访问会话中,执行=“延迟”模式。 如果我们试图访问会话它会给错误,在这种情况下可能是你错误的原因...



文章来源: WiX. Rollback custom action when is canceled installation