Improve detection and handling of unsupported Apple platforms
The application name wasn't always printed, so we try try a few more possibilities before falling back to the process name. We also run the check as early as possible, instead of relying on a QCoreApplication. We do not have to provide a dialog to the user, as macOS will do this for us if the application is launched from Finder. Change-Id: Ifbec86946d60294806364e08964852fd4b74ff56 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
parent
563c9eb4ee
commit
42588a8487
@ -448,16 +448,23 @@ void qt_apple_check_os_version()
|
||||
version / 10000, version / 100 % 100, version % 100};
|
||||
const NSOperatingSystemVersion current = NSProcessInfo.processInfo.operatingSystemVersion;
|
||||
if (![NSProcessInfo.processInfo isOperatingSystemAtLeastVersion:required]) {
|
||||
fprintf(stderr, "You can't use this version of %s with this version of %s. "
|
||||
"You have %s %ld.%ld.%ld. Qt requires %s %ld.%ld.%ld or later.\n",
|
||||
(reinterpret_cast<const NSString *>(
|
||||
NSBundle.mainBundle.infoDictionary[@"CFBundleName"]).UTF8String),
|
||||
os,
|
||||
os, long(current.majorVersion), long(current.minorVersion), long(current.patchVersion),
|
||||
os, long(required.majorVersion), long(required.minorVersion), long(required.patchVersion));
|
||||
abort();
|
||||
NSDictionary *plist = NSBundle.mainBundle.infoDictionary;
|
||||
NSString *applicationName = plist[@"CFBundleDisplayName"];
|
||||
if (!applicationName)
|
||||
applicationName = plist[@"CFBundleName"];
|
||||
if (!applicationName)
|
||||
applicationName = NSProcessInfo.processInfo.processName;
|
||||
|
||||
fprintf(stderr, "Sorry, \"%s\" can not be run on this version of %s. "
|
||||
"Qt requires %s %ld.%ld.%ld or later, you have %s %ld.%ld.%ld.\n",
|
||||
applicationName.UTF8String, os,
|
||||
os, long(required.majorVersion), long(required.minorVersion), long(required.patchVersion),
|
||||
os, long(current.majorVersion), long(current.minorVersion), long(current.patchVersion));
|
||||
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
Q_CONSTRUCTOR_FUNCTION(qt_apple_check_os_version);
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
|
@ -190,7 +190,6 @@ Q_CORE_EXPORT bool qt_mac_applicationIsInDarkMode();
|
||||
QDebug operator<<(QDebug debug, const QMacAutoReleasePool *pool);
|
||||
#endif
|
||||
|
||||
Q_CORE_EXPORT void qt_apple_check_os_version();
|
||||
Q_CORE_EXPORT bool qt_apple_isApplicationExtension();
|
||||
|
||||
#if defined(Q_OS_MACOS) && !defined(QT_BOOTSTRAPPED)
|
||||
|
@ -456,9 +456,6 @@ QCoreApplicationPrivate::QCoreApplicationPrivate(int &aargc, char **aargv, uint
|
||||
, q_ptr(0)
|
||||
#endif
|
||||
{
|
||||
#if defined(Q_OS_DARWIN)
|
||||
qt_apple_check_os_version();
|
||||
#endif
|
||||
app_compile_version = flags & 0xffffff;
|
||||
static const char *const empty = "";
|
||||
if (argc == 0 || argv == 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user