Running a minor upgrade

Feb 3, 2010 at 6:46 PM

I have setup my .msi so it will do upgrades correctly if the installer passes across a REINSTALL=ALL REINSTALLMODE=vomus on the command line to msiexec when a package is already installed (the VS2010 bootstrapper does this, but I have other problems there).

Currently it looks like from the source code that dotNetInstaller flips modes into uninstall mode if all the packages are installed I'm thinking about a quick hack to add a flag to a component package which would be supports_upgrade="true" turns off the supports_uninstall flag and runs the installer again in upgrade mode. One of the bootstrap samples (I think it's from wix) does something similar. (I'm wondering if making uninstall tri-state might be better)

This does leave the user needing to use the control panel applet to remove the software but I'm not sure this is a huge problem.


Feb 3, 2010 at 10:02 PM

If you can maneouvre the code into submission to support this, sure. I'm happy to review patches :)

In my experience this type of stuff has become a big mess - we've given up on minor upgrade altogether and doing major upgrade in all installers as the only upgrade path.

Feb 4, 2010 at 7:52 AM

Ok I'll have a little think about it over the weekend, the codebase is sufficently big that I'd like to think some more about this before I make any "moves". I'm also worried that my C++ skills aren't good enough to get this right. I haven't written any serious C++ for nearly ten years, and there is a difference between a hack to support my use case and doing the right thing for backwards compatibility etc. On the other hand giving back to the community is a good idea.

Point taken about only doing major upgrades, I'm always amazed that no-one at MS has bothered to give the world a good solution to the whole bootstrap & upgrade process. Possibly burn in the next Wix release will sort this out but I'm not holding my breath.