Да, вы можете изменить двоичный файл или даже изменить Info.plist, но, как и изменение двоичного файла, который вы делаете, вам придется делать это снова при каждом обновлении приложения. Нет способа сделать это без изменения приложения таким образом, чтобы оно не было перезаписано при его обновлении.
Вы можете автоматически вносить изменения с помощью Launch Agent.
Сохраните следующее в ~/Library/LaunchAgents
as com.yourname.youragent.plist
, затем запустите launchctl load ~/Library/LaunchAgents/com.yourname.youragent.plist
.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.yourname.youragent</string>
<key>OnDemand</key>
<true/>
<key>Program</key>
<string>cp</string>
<key>ProgramArguments</key>
<array>
<string>/Users/grgarside/test/MyApp</string>
<string>/Applications/MyApp.app/Contents/MacOS/</string>
</array>
<key>WatchPaths</key>
<array>
<string>/Applications/MyApp.app/Contents/MacOS/MyApp</string>
</array>
</dict>
</plist>
Приведенный выше скрипт будет следить WatchPaths
за любыми изменениями (в данном случае это бинарный файл для приложения) и будет запускать cp
для копирования вашего бинарного файла в приложение в / Applications.
/Applications
меняется? А также запретить любому приложению изменять себя.