Consultancy and Programming
Advice, tips, techniques and downloads for Visual Foxpro developers.
If you have more than one build of your application in the field, you need a way of knowing which one a given person is using. Visual FoxPro (5.0 and above) can help with this, by branding the executable with a version number and related information.
To see how this works, open the application in Project Manager, then click on Build, then Versions. You will see a dialog in which you can enter a version number, product name, company name, file description, and several similar items (see Figure 1). The version number consists of three parts: major, minor and revision.
When you build the application, this information gets stored inside the EXE file. From there, it can be accessed both programmatically and by the user.
More interestingly, if you check the Auto Increment option within the dialog, the version number will be incremented with each build, thus ensuring that it is unique within your application. (In fact, it is the revision number which is incremented; if you want to change the major or minor component, you must do so manually.)
So how do you find out which version a given user is using? One option would be to ask them to look at the file properties of the application's EXE file. To do that, they must locate the file in Windows Explorer or a folder window, right-click on it, select Properties, then click on the Version tab. All the information that you entered in the Project Manager's Versions dialog will be displayed (see Figure 2).
A slicker approach would be for the application itself to retrieve this information, and to display it somewhere where the user can easily get at it - such as in the About box on the Help menu.
To retrieve the version information from within your program, call the AGETFILEVERSION() function. Pass it two parameters: the name of an array to hold the information, and the name of the executable file. As with most of the "A" functions, if the array does not already exist, the function will create it. If it does exist, it will be re-sized as necessary.
For example, this command retrieves version information from a file called MYAPP.EXE, and stores it in array aVer:
lnReply = AGETFILEVERSION(aVer,"MYAPP.EXE")
By the way, the function returns zero if the file does not contain Windows versioning information.
The three-part version number can be found in the fourth element of the array (check the VFP help for the contents of the other elements). It is returned in decimal format, with periods between the components. So if you entered 1, 2 and 3 in the major, minor and revision fields respectively, the number would be returned as 1.2.3. Note that the three components are strictly numeric: you cannot specify 1.2a, nor could you make a distinction between 1.2 and 1.02.
GETFILEVERSION() was introduced as a native command in VFP 6.0. In earlier releases, the equivalent functionality was provided within Foxtools.
Mike Lewis Consultants Ltd. April 1999.
FoxStuff is maintained by Mike Lewis Consultants Ltd. as a service to the VFP community. Feel free to download and use any code or components, and to pass around copies of the articles (but please do not remove our copyright notices or disclaimers).
The information given on this site has been carefully checked and is believed to be correct, but no legal liability can be accepted for its use. Do not use code, components or techniques unless you are satisfied that they will work correctly in your applications.
© Copyright Mike Lewis Consultants Ltd.