views:

141

answers:

1

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  A: 

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.

Shay Erlichmen