I'm wondering the best way to handle a setup project that can support some complex deployment scenarios. My product has the following items:
- Executable and dlls
- .config files
- SQL CE database
- map document and related items
- two different types of geographic database files
- prerequisites like .NET 4 & SQL CE runtime
I have some post-install steps that do things like unzip clean versions of the SQL and geographic databases.
Assume that the initial deployment and install is a full installation. I want to be able to do patches or updates of one or a combination of these items without necessarily overwriting the users files with a clean install. I hope to do these via the web-based updates. Some examples:
- I want to distribute bug fixes or new features in the executable and dlls without executing the post-install steps that unzip databases
- I want to possibly run SQL to update the database without changing any other items
- I want to possibly replace, add, or update the map document and its related files
- etc.
- Or possibly any combination of these
Any advice on how to proceed would be appreciated.
For this you can use custom actions.
To distribute updates you can use Updater. Here is a tutorial which can get you started: http://www.advancedinstaller.com/user-guide/tutorial-updater.html
The Updater can distribute both patches and full upgrades.
An update can condition its unzip action with OLDPRODUCTS property. It's automatically set when an older version is detected on the target machine.
You can configure SQL scripts in SQL Scripts page. Here is a tutorial which may help: http://www.advancedinstaller.com/user-guide/tutorial-sql.html
A patch or major upgrade can automatically replace the existing file. If you want to update it without replacing it, you can try a text file update or the XML editor.
SQL Scripts and patches are available for an Enterprise project.