はい、バイナリを変更することも、Info.plistを変更することもできますが、バイナリを変更するのと同じように、アプリが更新されるたびにこれを行う必要があります。更新されたときに上書きされないようにアプリを変更せずにこれを行う方法はありません。
Launch Agentを使って自動的に変更を加えることができます。
以下を保存してください ~/Library/LaunchAgents
として 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
変更されますか?また、アプリが自分自身を変更することを禁止する