Our DNA is written in Objective-C

Quick Batch Version Bump

On my iCatalog project I have more than 40 targets (FOURTY!), all with individual info.plist. Let me share a quick command line script that lets me simultaneously bump the software version to a different value for all targets at the same time. This has proven extremely helpful.

BSA Banner

The script I use uses the defaults tool to write the new value into the plists and then converts it back to text xml plist format.


if [ "$#" -ne 1 ]
        echo "Usage: bump_version_to <version>"
        exit 1
for FILE in `ls */*Info.plist`
        defaults write "$INFO_PLIST" CFBundleVersion "$1"
        plutil -convert xml1 "$INFO_PLIST.plist"

Put this script into your project root. It expects the info.plist files to be one level below it. Make it executable with chmod +x. Run it passing the new version string. Boom!

Categories: Recipes


  1. What I really want to know is – why do you have 40 build targets!?

  2. 😉 Many Many clients, each with their own app….. (but I will have to think of something down the road)

  3. I use a different method. I have a version.xcconfig file with just one line:


    And in my Info.plist I simply set once and for all ${CURRENT_PROJECT_VERSION} for the CFBundleVersion entry.

    Much simpler IMHO. You don’t even have to invoke a separate shell script from the command line. All you have to do is change the value in one file. And you can even set up a Run Script build phase to increment it automatically at each build if you fancy.

Leave a Comment

%d bloggers like this: