I noticed that there are different requirements for each platform here. I was wondering if it’s possible to build a single project but with multiple targets where each target is Mac OS X (something like a CD / install build), Apple Mac Store, and iOS device.
IfIi’m going about this the wrong way then I’d love to know! I mostly develop on the PC but with the state of the App Store I’d love to spread out as much as I can!
Keeping separate targets for the Mac app store and an independently-distributed Mac application is simple. You just need to ensure that your receipt validation code is conditionally included on the app store target and not in the other target; and your custom licensing scheme is included the other way round. Things get a bit more complicated if you target different operating systems in the two targets, but they’re not insurmountable: you can test for the existence of classes or selectors at runtime to ensure you never call newer API on older systems.
By the way, it’s also worth having separate
Info.plistfiles for these targets. Partly because you don’t need or want to include things like Sparkle properties in your app store target, but also because each target should have a unique bundle identifier. The app store does odd things when you have an app installed that it thinks came from the store but really didn’t, and you don’t want to risk your updater or Apple’s trying to update the app deployed via the other mechanism. But that’s not really about organising your Xcode project, it’s a deployment issue.