【问题标题】:How to restrict Mac OSx application to launch for only few OSx versions如何限制 Mac OSx 应用程序仅针对少数 OSx 版本启动
【发布时间】:2014-01-10 10:47:32
【问题描述】:

我们有什么方法可以限制 Mac OSx 应用程序仅在少数版本中启动?我发现的一种方法是在 plist 中标记 LSMinimumSystemVersion 标记。但是这里我们只能提到最低版本。

但我需要一些可以提及操作系统版本范围的设置,以便我的 Mac 应用程序只能使用这些版本启动。

例如:Mac OSx 应用程序应仅在 10.6、107 和 10.8 上启动,而不适用于 10.9 及更高版本。

我们非常感谢您的建议和支持。

【问题讨论】:

    标签: macos


    【解决方案1】:

    您必须在您的应用逻辑中强制执行此操作(例如,在应用委托中):

    - (void)applicationWillFinishLaunching:(NSNotification *)notification {
    
        unsigned kernelMajor, kernelMinor, kernelBugfix;
        unsigned osMajor, osMinor, osBugfix;
        char osrelease[256];
        size_t len = sizeof(osrelease);
    
        sysctlbyname("kern.osrelease", osrelease, &len, NULL, 0);
    
        if (sscanf(osrelease, "%u.%u.%u", &kernelMajor, &kernelMinor, &kernelBugfix) != 3) {
            if (sscanf(osrelease, "%u.%u", &kernelMajor, &kernelMinor) != 2) {
                // Throw exception here
            }
            kernelBugfix = 0;
        }
    
        // If kernel version = x.y.z
        // then OSX version = 10.(x-4).y
        osMajor = 10;
        osMinor = kernelMajor - 4;
        osBugfix = kernelMinor;
    
        if (osMinor >= 9) {
            // complain and exit
        }
    
    }
    

    (请注意,这种获取操作系统版本的方法在 10.8+ 下受支持,与现已弃用的 Gestalt() 方法不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多