For the googlers:
After Click-Once failed to supply all required features, I have decided to use Installshield limited edition (some details are available here and here).
in order to make sure that new deployments of the software will replace older installations, the following steps were required (based on Cosmin Pirvu's answer ):
- Open the old MSI with Orca and get its UpgradeCode from Property table
- in your InstallShield LE project go to "General Information" in solution explorer
- make sure that the "Upgrade Code" field is set to your old MSI UpgradeCode (You can read more about upgrades here)
- make sure that ALLUSERS property has the same value as the old MSI (it's the same approach).
- Go to Installshield Organize Your Setup->Upgrade Paths section. Right-click on Upgrade Paths and select New Upgrade Path.
In the dialog that opens, locate a previous version of the .MSI file and open it. It will automatically import the Upgrade Code and provide fields where you can specify what previous version range should be replaced with the new installer. - Still in the Upgrade Paths section, make sure to give appropriate Min/Max version.
EDIT:
For each future updates, make sure to advance the Product version in the General Information section (don't change the upgrade code).
Make sure that in Release > Express section, Generate package code is set to Yes, or manually change it upon every release.