Search code examples
xcodemacosxcode5osx-maverickssparkle

Xcode5 post-archive script for Sparkle package no longer works


Xcode 5 seems to have changed the way it stores the build application package (xxx.app) such that ditto no longer works. In the ../BuildProductsPath/Release/ directory, the app is actually a symlink to .../InstallationBuildProductsLocation/Applications/...

MyApp.app -> ~/Library/Developer/Xcode/DerivedData/MyApp-emwilkqhlayanxahjpexlpbbkato/Build/Intermediates/ArchiveIntermediates/MyApp/InstallationBuildProductsLocation/Applications/MyApp

This breaks the ditto command I was using to create a zip file of the application to put on my Sparkle update server.

Anyone have an updated script for building the Sparkle XML and ZIP files? Or know what environment variable I need to use to locate my actual binary after the Archive phase?

Here's the relevant lines from the post-archive script:

ARCHIVE_FILENAME="$HOME/Desktop/$PROJECT_NAME-$VERSION_STRING.zip"

cd "$BUILT_PRODUCTS_DIR"

ditto -ck --keepParent "$PROJECT_NAME.app" "$ARCHIVE_FILENAME"

That's from the sample script on the Sparkle website.


Solution

  • Turns out that in Xcode5 you need to pull the app package from the archive directory, not the Built Products directory. This works:

    ARCHIVE_FILENAME="$HOME/Desktop/$PROJECT_NAME-$VERSION_STRING.zip"
    ditto -ck --keepParent "${ARCHIVE_PRODUCTS_PATH}/Applications/${PROJECT_NAME}.app" "$ARCHIVE_FILENAME"