The visual studio installer is not the most user friendly compared to commercial products or even WiX if you are after a good level of control over you installation.
When you have a Visual Studio Setup project you have several properties that are involved in the Upgrade process
1) The Upgrade Code – this is the link between installers of the same ilk and you shouldn’t change this code needlessly
2) The Version number – strangely only the 1st 3 numbers (major.minor.build) are used for comparison (this is a common mistake that a lot of developers make)
3) The Product Code – As soon as you change the version number VS will prompt you to change this number – do it – if you automate the number change remember to do this as well
4) DetectNewerInstalledVersion – set to True
5) RemovePreviousVersions – set to True
Personally I’d look at using WiX for such a small installation i.e. if you can do it in Visual Studio then the WiX version
My installer for OpenCover looks like this
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" >
<Product Id="*" Name="OpenCover" Language="1033" Version="!(bind.FileVersion.OPENCOVER_FRAMEWORK_DLL)"
Manufacturer="OpenCover @ GitHub" UpgradeCode="2250c3f1-d9ba-44d8-b4db-25f91fe92dc6">
<Package InstallerVersion="200" Compressed="yes" />
<Upgrade Id="2250c3f1-d9ba-44d8-b4db-25f91fe92dc6">
<UpgradeVersion OnlyDetect="no" Property="PREVIOUSFOUND" Minimum="1.0.0.0" IncludeMinimum="yes"
Maximum="!(bind.FileVersion.OPENCOVER_FRAMEWORK_DLL)" IncludeMaximum="no" />
<UpgradeVersion OnlyDetect="yes" Property="NEWERFOUND" Minimum="!(bind.FileVersion.OPENCOVER_FRAMEWORK_DLL)"
IncludeMinimum="yes" />
</Upgrade>
<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
...
</Wix>
I hope you find the above useful