Add a new interface for a custom UI implementation in the updater.exe module.
This will eventually allow for the user to override the user interface that is presented by the updater.exe application during a cold update.
Pass the custom UI type to the updater.exe and try to instantiate it
Run UI dialogs in a proper UI thread so that they can remain responsive when waiting for the pipe to connect for example
Report progress to the custom UI
Add notifications when the prepare process starts/completes and when the apply process starts/completes
Allow the updater to shift itself in to a new AppDomain with shadow copying enabled. This will allow it to update assemblies that have been loaded in to the update application (containing sources or feeds or UI for example)
Replace existing files if they already exist, this in combination with the shadow copy code means that applications can actually be replaced whilst assemblies are open and providing UI for example