/build/static/layout/Breadcrumb_cap_w.png

Windows Installer Rollback

Is there a way to save the Rollback State of an application after the install completes?

0 Comments   [ + ] Show comments

Answers (8)

Posted by: jmcfadyen 17 years ago
5th Degree Black Belt
0
You can use restore points. MSI by default can trigger a restore point prior to installation which will allow complete rollback. It is relatively intensive on disk space usage. But it does what you require.
Posted by: jmcfadyen 17 years ago
5th Degree Black Belt
0
the only other alternatively would be to use a CA to capture the RBF files however I dont think that would even give you enough as you would be require to also capture the previous versions of files as well .
Posted by: Tone 17 years ago
Second Degree Blue Belt
0
there is probably a better way but the rollback script \config.msi\xxxxx.rbs stores files as *.rbf so you could copy those before the installation is marked a succes and they are deleted..

edit as above... *.rbf not *.rbd [:)]
Posted by: jmcfadyen 17 years ago
5th Degree Black Belt
0
problem with that is you would of lost the backed up files.

part of the costing phase backs up any files which are targeted for replacement, the RBF files reference those backed up files.

when installation is completed those files are removed. you would also need to back them up as well for the rbf to work.
Posted by: bbernius 17 years ago
Yellow Belt
0
Thanks for the feedback. Not too sure if the rollback would work in this case. I was hoping there was a way to leave the rollback data on the machine after the installation was complete. I have an installation that has multiple MSI installing from a wrapper. If the first 5 complete successful and the 6th fails, I cant restore to the original machine state.

Thanks again for all the help
Posted by: jmcfadyen 17 years ago
5th Degree Black Belt
0
ok in that case you can determine the return code of each of the installations, where you find one has not returned a 0 you can execute an uninstall on the previous items.

to check the return code it is quite simple

intRet = objShell.Run "msiexec /i <path to your msi> /qb-"

if intRet <> 0 then
for each install in installs
objShell.run "msiexec.exe /x <path to your msi>"
next
end if

something like that could help.
Posted by: Tone 17 years ago
Second Degree Blue Belt
0
ORIGINAL: jmcfadyen

problem with that is you would of lost the backed up files.

part of the costing phase backs up any files which are targeted for replacement, the RBF files reference those backed up files.

when installation is completed those files are removed. you would also need to back them up as well for the rbf to work.



I was thinking along the lines of copying the rbf files before the success flag was returned, but looking at this a bit more and it seems that only files that are marked for removal rather than replacement are backed up under config.msi is this correct?
Posted by: Tone 17 years ago
Second Degree Blue Belt
0
ORIGINAL: jmcfadyen

ok in that case you can determine the return code of each of the installations, where you find one has not returned a 0 you can execute an uninstall on the previous items.

to check the return code it is quite simple

intRet = objShell.Run "msiexec /i <path to your msi> /qb-"

if intRet <> 0 then
for each install in installs
objShell.run "msiexec.exe /x <path to your msi>"
next
end if

something like that could help.



Problem with that is a successful installation doesn’t always return 0, one example is a reboot would return 1641 or 3010
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
 
This website uses cookies. By continuing to use this site and/or clicking the "Accept" button you are providing consent Quest Software and its affiliates do NOT sell the Personal Data you provide to us either when you register on our websites or when you do business with us. For more information about our Privacy Policy and our data protection efforts, please visit GDPR-HQ