TransactedInstaller vs. nested Installer

676 views Asked by At

Is there an difference between this (nested Installer)

ServiceInstaller si = new ServiceInstaller();
si.ServiceName = "MyService";

ServiceProcessInstaller spi = new ServiceProcessInstaller();
spi.Account = ServiceAccount.LocalSystem;

spi.Installers.Add(si);

this.Installers.Add(spi);  

and this? (TransactedInstaller)

TransactedInstaller ti = new TransactedInstaller();

ServiceInstaller si = new ServiceInstaller();
si.ServiceName = "MyService";
ti.Installers.Add(si);

ServiceProcessInstaller spi = new ServiceProcessInstaller();
spi.Account = ServiceAccount.LocalSystem;
ti.Installers.Add(spi);

this.Installers.Add(ti);   

Are nested Installer by default transacted? Which style should be prefered?

1

There are 1 answers

0
Shay Erlichmen On BEST ANSWER

TransactedInstaller will call Commit/Rollback automaticly if the custom action has succeeded/failed.

With nested installer you will need to sequence the Rollback/Commit your self in a case of an error, they will not be called if you didn't explicitly tell them to run.