Автоматизация редактирования SystemVersion.plist

Я в настоящее время использую OSX10.10 и мне нужно использовать MATLAB; однако, поскольку они не обновили приложение для поддержки 10.10, оно будет аварийно завершено при запуске.

До сих пор я использовал pico для редактирования SystemVersion.plist [1] (изменение версии с 10.10 на 10.9); и это прекрасно работает, за исключением того, что действительно раздражает редактирование файла каждый раз, когда мне нужно открыть MATLAB и заново редактировать его каждый раз, когда я закрываю MATLAB.

Что я хочу сделать, так это то, что когда я запускаю скрипт, он редактирует SystemVersion.plist до нужной версии, чтобы я мог запустить MATLAB без сбоев; и затем, когда MATLAB завершает работу, он сбрасывает версию обратно с 10.9 до 10.10). У меня есть немного кода (который может быть плохо написан; я никогда раньше не использовал applecript);

tell application "System Events"
set ProcessList to name of every process
       if "MATLAB" is in ProcessList then
            tell application "System Events"
            tell property list file "/System/Library/CoreServices/SystemVersion.plist"
                tell contents
                    set value of property list item "ProductUserVisibleVersion" to "10.9"
                    set value of property list item "ProductVersion" to "10.9"
                end tell
            end tell
        end tell

        else

            tell application "System Events"
            tell property list file "/System/Library/CoreServices/SystemVersion.plist"
                 tell contents
                    set value of property list item "ProductUserVisibleVersion" to "10.10"
                        set value of property list item "ProductVersion" to "10.10"
                 end tell
               end tell
            end tell    
       end if
  end tell

[1] - Ошибка при попытке установить JDK8 U11 OSX 10.10 Yosemite

1 ответ

Решение

У меня был такой же подход, но я пришел к этому решению: (для OS X Yosemite и Matlab R2014A)

tell application "System Events"
    set plistFile to property list file "/System/Library/CoreServices/SystemVersion.plist"
    tell plistFile
        get property list item "ProductVersion"
        set value of property list item "ProductVersion" to "10.90"
    end tell
end tell

do shell script "export MATLAB_USE_USERWORK=1" & ";/Applications/MATLAB_R2014a.app/bin/matlab -desktop &> /dev/null &"

display dialog "..." buttons {"Ok"} with icon note giving up after 10

tell application "System Events"
    set plistFile to property list file "/System/Library/CoreServices/SystemVersion.plist"
    tell plistFile
        get property list item "ProductVersion"
        set value of property list item "ProductVersion" to "10.10"
    end tell
end tell

диалоговое окно необходимо. задержка (в секундах) не делает этого по каким-либо причинам (я сначала использовал яблочный скрипт для решения проблемы с Matlab). может быть другое решение, но это работает для меня.

Если вы используете Mac с дисплеем Retina, вы можете установить среду выполнения Java 7 и заменить часть сценария do shell следующим текстом:


do shell script "export MATLAB_JAVA=\"/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home\"" & "; export MATLAB_USE_USERWORK=1" & ";/Applications/MATLAB_R2014a.app/bin/matlab -desktop &> /dev/null &"

значки все еще выглядят немного хреново, но шрифты больше не размыты.

Я надеюсь, что это может помочь любому, кто столкнулся с проблемой после обновления до yosemite в последнее время.

Jens

Другие вопросы по тегам