Reputation: 5569
Microsoft is promoting .Net for over 8 years now.
.Net assemblies are versioned using 4# versioning like major.minor[.build[.revision]]. Ref here
While, Windows Installer still suggests 3# versioning like major.minor.build. Ref here
With the difference in versioning in two systems. It is not straight to map .Net assemblies version to an installer. It is quite complicated to use Windows Installer for installing .Net applications, particularly when someone wants to implement Upgrading Product for any change in Revision.
How to overcome this situation? We want to Upgrade our product even if there is smallest change in Revision.
Upvotes: 4
Views: 2171
Reputation: 35866
This isn't something to overcome. It is a design limitation to accept and design around. Annoying yes but not something that is likely to change in the foreseeable future. Windows Installer ProductVersions are based on 3 parts. Also, remember the first two parts can't be more than 255 but the 3rd part can be up to 65,535.
Upvotes: 4
Reputation: 5374
The versions used by .NET and the Windows installer address different concerns. In .NET, the assembly version is used by the loader to determine which version of the assembly to load. Remember, you can deploy the multiple versions of the same assembly to GAC and have them available side-by-side. You can even have policies that specify the exact version of an assembly to load. I can have different versions of assembly A in GAC and have application 1 using version 1 and application 2 using version 2. While I don't know that much about the Windows installer, I think it is using the version and the product guid to keep track of what version of an application installed so that it can determine if the application you're installing is newer than what's already installed and warn the user or uninstall it first or let the user choose.
Upvotes: 1
Reputation: 17258
Why would you map .NET assembly versions straight to your product version? Do you really have only one assembly in your product?
Most product configuration management processes I've seen usually tracks product versions with manifests (aka bills of materials) listing what versions of binaries, configuration files and documentation goes in that product version. This decouples your development process from your release process, which is a Good Thing, not least for commercial products.
Upvotes: 2