How is OS X Deployment Target presented to the end user? - xcode

The build setting OS X Deployment Target in Mac OS X specify which minimum OS X version that is required to run the application.
From the docs:
This identifies the earliest OS version on which your software can run. By default, Xcode sets this to the version of the OS corresponding to the base SDK version and later.
If the end user tries to install and run the application on a lower version of Mac OS X than the Deployment Target, how is this presented to the end user?
Basically I want to know if the deployment target can be used to prevent users with out of date from using the application in a user friendly way, so they don't just get an "ERROR: CAN'T START" in their face.

The deployment target isn't presented to the end user, but there is an Info.plist key LSMinimumSystemVersion that tells users when their OS is too old.

On the latest versions of macOS, the user will see two things when his version of macOS is too old for a specific app:
The app icon has a cross overlay.
When the user starts the app, a message will be presented explaining that a newer version of OS X/macOS is needed to run the app.

Found out the hard way that OS X Deployment Target is not preventing the user from starting the application at all, even though they have a too old version of OS X.

Related

Is LSMinimumSystemVersion all that's required to enforce minimum Mac OS system requirement?

My OS X app (soon to be released outside the App Store) requires 10.9 and above. I have LSMinimumSystemVersion set to 10.9. Is that all that needs to be done, or do I need to write some code to check the OS version and show an error message?
I'm asking because this line from the documentation (emphasis mine) gives me pause:
If the minimum system version is not available, OS X tries to display
an alert panel notifying the user of that fact.
IIRC the LSMinimumSystemVersion plist key first appeared in a much older version of OS X (10.2?), so it will probably work everywhere you need it to.

Mac OS X exported .app won't run

I am adding functionality to an existing OS X application. I can run the app within Xcode (6.1) just fine. However, when I archive the application, then click "Export...", then select "Export as a Mac Application" (I don't have an account to sign with), then try to run the resulting .app file, I get a problem report saying my app can't be opened because of a problem:
"Check with the developer to make sure MyApp works with this version of OS X. You may need to reinstall the application. Be sure to install any available updates for the application and OS X."
The base SDK of my project is 10.10. The OS X deployment target is also 10.10. My machine is running OS X 10.10. Anyone know what could be going wrong? Is my exporting procedure wrong? Any incite is much appreciated.

Limiting which OS X versions see an app in the OS X App Store

How do I populate metadata that tells the App Store which versions of OS X is the minimum required for my app? I can't seem to find this.
Xcode's OS Deployment Target build setting is used by Xcode to set the info.plist Minimum System Version (LSMinimumSystemVersion) key. You can set the deployment target directly in the General tab in the project info.
HTH

My Xcode app won't launch on other Macs

My OS X application that I've created on Xcode won't launch on other Macs. It works perfectly fine and the way it should on my MacBook, where I created it, but on other MacBooks it just bounces on a dock for less than a second and disappears and it won't launch. I built my app on Product - > Archive
How can I make my app to launch on other Macs also? The minimum requirements are 10.7 and when I try my app on 10.6 it says it requires 10.7 or newer, but when I try it on other macs that do run 10.7 or 10.9 it won't launch. What to do?
When you create a Mac application project in Xcode, Xcode sets the deployment target to the version of OS X you're running. The deployment target is the earliest version of OS X that can run the application. When you created your project in Snow Leopard, the deployment target was set to 10.6, which means the application will run on 10.6 and later. When you created your project in Xcode 5.1, the deployment target was set to 10.9, which means the application won't run on earlier versions of OS X. That's why your project runs when you create it in Snow Leopard but not on Xcode 5.1 on Mavericks.
To support earlier versions of OS X, the first thing you must do is set the deployment target to the earliest version of OS X you want to support. If you set the deployment target to 10.7, the project will run on 10.7 and later, assuming you don't use any technologies or function calls introduced in later versions of OS X. For example, if you create a SpriteKit project, it won't run on anything before 10.9 because Apple introduced SpriteKit in 10.9. Xcode will not tell you when you use function calls introduced in later versions of OS X. You are responsible for making sure your code uses only functions available in 10.7.
You should also check the deployment target for your xib files.
To support 10.7, you must turn off base internationalization for your project. Base internationalization works only on 10.8 and later. To support 10.6, you must turn off auto layout for your xib files.
You can access your project settings by selecting the project from the project navigator on the left side of the project window. You can access xib file information by selecting the xib file from the project navigator and opening the file inspector. You can find more detailed information in the following article:
Supporting Earlier Versions of OS X and iOS

AppStore Update Policy

Just wondering what will happen if the current app version supports OS 10.6.6 upwards and you upload a version that is built for Lion.
Will the 10.6 users be still able to download the version that is for 10.6 or will they be forced to upgrade to 10.7? My guess is the latter, but I'm not 100% sure.
How would you handle the jump from 10.6 to 10.7?
Apple's storefront database knows which version of OS X your app currently requires (the Deployment Target), and thus might not allow the App Store application on your Mac to update an app if the Mac on which the App Store application is running does not have a proper OS version for that app.
Any update replaces the previous version. If the new version you plan to release requires 10.7, then I strongly encourage you to disclose that information in the update so that users who plan not to upgrade right away will know not to install your update.

Resources