We use [wix](http://wix.sourceforge.net/) to create our setups. For upgrading, we use major upgrades as demonstrated in [this answer by Rob Mensching](https://stackoverflow.com/questions/114165/how-to-implement-wix-installer-upgrade/724098#724098). (In newer wix versions you can use the [MajorUpgrade](http://wix.sourceforge.net/manual-wix3/wix_xsd_majorupgrade.htm) element.) This normally works well. The old product is removed, then the new product is installed.

However, apparently the above is not completely equivalent to manually uninstalling the old product and then manually installing the new product.

Consider for example the following scenario:

* version 1.0 of our product is released, containing version 5.0 of a thirdparty dll
* version 1.1 of our product is released, containing version 5.1 of the same thirdparty dll
* version 1.2 of our product is released, downgrading to version 5.0 of the thirdparty dll again because we discovered that the new version introduced more problems than it solved.

Apparently with the wix upgrade logic linked above, **the 3rdparty dll will disappear** when upgrading from release 1.1 to 1.2. A repair is necessary to restore it.

Is there another way to upgrade, which would work for this scenario? I guess what I am looking for is upgrade logic which allows the downgrading of components, by behaving exactly as if one manually uninstalls the old product and then manually installs the new product.