2014-01-10 3 views
1

Можно ли каким-либо образом ограничить приложение Mac OSx для запуска всего лишь нескольких версий? Один из методов, который я нашел, - это пометить тег LSMinimumSystemVersion в plist. Но здесь мы можем упомянуть только минимальную версию.Как ограничить приложение Mac OSx для запуска всего лишь нескольких версий OSx

Но мне нужны некоторые настройки, где я могу упомянуть диапазон версий ОС, так что приложение для Mac должно запускаться только с этими версиями.

Например, приложение Mac OSx должно запускаться только для 10.6, 107 и 10.8, и оно не должно работать на 10.9 и выше.

Ваши предложения и поддержка высоко оценены.

ответ

3

Вы должны были бы применять это ваш в вашем приложении логики (в приложении делегата, например):

- (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 
    } 

} 

(обратите внимание, что этот способ получения O/S версии это поддерживается в 10.8+, в отличие от устаревшего метода Gestalt()).

Смежные вопросы