0
votes

I have a chained installation which installs 3 msis. If one of the Msi package installation fails the previous ones are not getting rolled back. I have made sure that the attributes such as DisableRollback and Vital are not updated and have their default values of no and yes respectively. I have a specific customaction in all the msis which have the Execute attribute as rollback. It works fine for the msi package that fails but the previous packages that are getting installed are not getting rolled back. Do I have to do anything specific for the rollback to work?

<Chain>
    <MsiPackage Id="1".../>
    <MsiPackage Id="2".../>
    <MsiPackage Id="3".../>
</Chain>

Edit: I realised now that each of the packages had the Permanent attribute set to yes. Once I set it to "No" it is uninstalling the components that it was not doing. That leads me to question, what is the point of Permanent attribute. I did see the wixtoolset documentation but what I don't understand is how do Permanent, Vital and DisableRollback attributes work. Keeping the question open to answer these queries.

1

1 Answers

0
votes

Use RollbackBoundary and place it where you want in Chain.

<Chain>
    <RollbackBoundary />
    <MsiPackage Id="1".../>
    <MsiPackage Id="2".../>
    <MsiPackage Id="3".../>
</Chain>