Автоматизация редактирования 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