Here is my problem:
I have several deployment projects. In order to deploy an application, I need to do several tasks, one of them is to change each deployment project's product version and product code.
I can't find a way to programatically change them.
Can anyone help me ?
Thanks in advance.
UPDATE: Since it's a Deployment project (which finally produces an executable installer), I'm not able to work with MSBuild, instead I'm using the Devenv from the command prompt. (Bruno, thanks for your quick response).
This may not be quite what you're after, but way back in the mists of time I wrote something called stampver, which can auto-increment a build number directly in the .exe file as a post-build step.
Do it from within a batch file?
Look into the use of RCS, CVS and/or subversion. I am only familiar with RCS; my understanding is that CVS is based on RCS but more comprehensive. I have read on various boards that subversion is the better, but I have never used it. RCS has been adequate for keeping track of changes and versions on all my documents and software projects.
RCS is here: http://www.cs.purdue.edu/homes/trinkle/RCS/
CVS is here: http://www.nongnu.org/cvs/
Subversion is here: http://subversion.tigris.org/
Resource Tuner Console
See specifically the batch manipulation of file version information page for greater details:
I know that the original poster is looking for a .NET 2.0 solution to this problem. However, since this wasn't tagged as .NET, I'll offer up my C++ solution to the problem. This may be applicable in .NET land, but I'll leave that to others.
This not only updates the version information in the about box and log file for my application, but also all of the Windows version info that is seen in Windows Explorer.
UPDATE: Added some changes that I've made to the process since my original answer.
First off, I moved the entire version info block from my Project.rc file to my Project.rc2 file:
This essentially transports all of the version info stuff that you would edit from the resource editor into a separate file. This makes it so that you don't get errors when editing the resource file from outside of the editor. The downside is that you can no longer edit the version info from the resource editor. But, since we want this stuff updated automatically, that isn't a big deal.
Next, I created a VersionInfo.h file and added it to my project:
I then included VersionInfo.h in the rc2 file and made the following changes:
With this setup, I could edit my build script (which uses Perl) to modify the version info in the VersionInfo.h file before rebuilding the entire project using the devenv command line.
One additional step that I added that may also be of interest (although it is not completely perfected yet, and may be a future question here) is to generate a unique build number every time the project is built. In the current incarnation, it always works for complete rebuilds, but only sporadically on incremental builds. What I did was create a file called build_number.incl that contains the following:
Which is essentially the date and time that the build was started. I created a batch file that is run as a pre-build event to the project that generates this file. The script also defines BuildYear so that the copyright in the VersionInfo.h file always contains the year of the most recent build. The batch script is the following:
This file is then included in any file in the project that needs to use the build number (i.e. the about box).
Some of this was gleaned from this CodeProject post.
Hopefully this info proves helpful.
You could use the msbuild task to update you product version. Check out this post from the MSBuild team on this subject.