We are building an application that needs to be delivered to home and small business users. Once the application has been installed it needs a way to auto-update. So we think that we need some sort of auto-updating installer for our application. The following are bullet point requirements:
1. Operating Systems: Windows XP, Windows Vista, Windows 7
2. Languages: Must support being able to provide a configuration file/folder to allow selection from any number of left-to-right languages (mainly European initially).
3. Technology: We would like this to be developed using C# using the .Net Framework that currently ships with Vista and Windows 7 (to minimise the need to ask for additional downloads). The delivered source code should be based around a Visual Studio solution (preferably VS2008).
4. Payload: The actual application that is installed and auto-updated can be something as simple as a Hello World application for the purposes of demonstration etc. - but the eventual application will be more complex.
5. Updating: We think that there will need to be an initial installer (from product CD etc.) which then allows the subsequent online checking of version and downloads and installs the updates. This update could include an update to the update system.
6. Security: We need some way of being able to check that the downloaded update files have not been tampered with.
7. Uninstall: The Visual Studio solution must include an installer project such that when the application is uninstalled, it must call a custom event that must be propagated to the latest version of the installed "auto update" software to allow correct uninstall.
8. Deliverables: We require the source code (Visual Studio solution) and working executable.
We are able to set up facilities to allow hosted online configuration files etc. to facilitate testing.
In summary, this is the "wrapper" around an application that will be delivered to users - and the wrapper will allow the application to be maintained for future versions via online downloads and installs etc. The "wrapper" will allow multi-lingual text and images where necessary (and allow simple expansion of languages via config files/folders).