[wix-devs] WIXBUG5750 and RollbackBoundary

Hoover, Jacob Jacob.Hoover at greenheck.com
Mon Jan 22 14:06:09 PST 2018


With regards to a rollback boundary, what is the expected behavior of Burn when a package is authored with or without explicit rollback boundaries, and an error happens during apply execute?

Chain/@DisableRollback - The default is "no" which indicates all packages executed during the chain will be rolledback to their previous state when a vital package fails. If "yes" is specified then when a vital package fails to install only that package will rollback and the chain will stop with the error.

RollbackBoundary/@Vital - Specifies whether the rollback boundary aborts the chain. The default "yes" indicates that if the rollback boundary is encountered then the chain will fail and rollback or stop.

<Chain DisableRollback="Yes">
  <MsiPackage SourceFile="A.msi" />
  <RollbackBoundary Vital="No"/>
  <MsiPackage SourceFile="Fail.msi" />
</Chain>
In this example, my impression is that because the failure happened on a vital package in a non-vital rollback boundary, that the bundle would be considered installed and that Fail MSI would have its package cache cleared.

<Chain DisableRollback="Yes">
  <MsiPackage SourceFile="A.msi" />
 <MsiPackage SourceFile="Fail.msi" />
</Chain>
In this example, I am expecting the A MSI to remain, and the Fail MSI to just have its cache cleared.

<Chain>
  <MsiPackage SourceFile="A.msi" />
 <MsiPackage SourceFile="Fail.msi" />
</Chain>
                In this example, I would expect both MSI's to be removed, and their caches purged.

<Chain>
  <MsiPackage SourceFile="A.msi" />
  <RollbackBoundary/>
  <MsiPackage SourceFile="Fail.msi" />
</Chain>
                In this example, is this RollbackBoundary ignored because it has the same attributes as the default boundary? Meaning if this chain was installing, a failure would cause A to be uninstalled, and both to have their caches cleared?

<Chain>
  <RollbackBoundary Vital="No"/>
  <MsiPackage SourceFile="A.msi" />
  <MsiPackage SourceFile="Fail.msi" Vital="No" />
  <RollbackBoundary Vital="Yes">
  <MsiPackage SourceFile="SecondFail.msi" />
</Chain>
                In this example, A would get installed, Failed would be attempted, but then ignored due to the Packages Vital state (but the cache should be cleared), Followed by the SecondFail triggering a rollback of everything?

Thanks,
Jacob



More information about the wix-devs mailing list