Trail: Home > Developer's Guide >

Versioning

Versioning is a difficult topic. Different developers use different schemes to number major and minor versions and to designate development or beta versions. Some developers also use build numbers to distinguish different versions between public releases.

Apple defines a total of three Info.plist keys to store version information for a bundle. Unfortunately, there is no clear consensus how these should be used. But first, a description of these three keys:

Unfortunately, the version keys are used very differently "in the wild". That makes it hard for tools like Cowry to find the version number to compare against the current version determined by an online version check. If you can, please have a look at the following recommendations and follow them in you application.

Recommendation

Always provide all three keys. Set CFShortVersionString to the "marketing"/"release" version, e.g. "3.2.0" and do not localize it. Set CFGetVersionString to the same value in Info.plist, but localize it to something with more information, like the application's copyright and/or the release date. If you have a separate build number or a Subversion repository revision number, put that into CFBundleVersion. Otherwise, set CFBundleVersion to the same value as CFShortVersionString.

Example Info.plist:

	<key>CFBundleGetInfoString</key>
	<string>3.2.0</string>
	<key>CFBundleShortVersionString</key>
	<string>3.2.0</string>
	<key>CFBundleVersion</key>
	<string>237</string>

InfoPlist.strings:

CFBundleGetInfoString = "3.2.0, Copyright © 2003-2006 MyCompany, Inc.";
NSHumanReadableCopyright = "Copyright © 2003-2006 MyCompany, Inc.";