Introduction
The documentation provided with the Updater Application Block 2.0 indicated that it was easy to extend – including adding a new Downloader. I found the documentation for actually accomplishing this task somewhat lacking. Here is a step-by-step guide to what I did to extend the application block to contain an FTP Downloader.
I extended it at the level of the application block itself because I wanted all the integrated tools to work seamlessly with my extension. Provided are downloads for the entire application block with my extension and the difference in the file set.
- Downloaders:
- Create a custom Downloader which implements the
IDisposable, IDownloader, and IConfigurationProvider interfaces.
FTPDownloader (FTPDownloader.cs)
- Create a custom DownloadProviderData which inherits from
DownloadProviderData.
FTPDownloaderProviderData (FTPDownloaderProviderData.cs)

- Updater.Configuration.Design:
- Create a custom DownloaderNode which inherits from
DownloaderNode.
FTPDownloaderNode (FTPDownloaderNode.cs)
- Add an entry for the FTPDownloaderNode in method
RegisterNodeMaps in ApplicationUpdaterDesignManager.cs.
- Add an entry for FTPDownloaderProviderData in method
RegisterXmlIncludeTypes in ApplicationUpdaterDesignManager.cs.

- Add an entry for FTPDownloaderNode in method
OnAddMenuItems in DownloaderCollectionNode.cs.
- Updater:
- Added
FTPDownloaderNode XML node in ApplicationUpdaterText.resx.

- Added FTPDownloaderNode to
MessageKey in Resources.cs.

- Configuration file:
- Edited ServerManifest.xml to contain a named Downloader.

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.
A list of licenses authors might use can be found here