Mac OS X のバージョンを短時間 (数秒) 変更して、バージョンに合わせて古いアプリケーションまたは新しいアプリケーションを起動できるアプリケーションを作成しています。
SystemVersion.plist (/System/Library/CoreServices/SystemVersion.plist) からバージョンを読み取り、新しい必要なバージョンを設定します。ファイルを保存(上書き)してアプリを起動し、バージョンを元のバージョンに戻してください。
これはコードの最初の部分です (バージョンを読み取り、上書きを試みます)
// Get SystemVersion.plist as Dictionary
NSBundle *bundle = [NSBundle bundleWithPath:@"/System/Library/CoreServices"];
NSString *SystemVersionString = [bundle pathForResource:@"SystemVersion" ofType:@"plist"];
NSMutableDictionary *SystemVersionDir = [NSDictionary dictionaryWithContentsOfFile:SystemVersionString];
// Get current version (Systemversion, ProductUserVisibleVersion)
NSString *SystemVersion = [SystemVersionDir objectForKey:@"ProductVersion"];
// Get desired version from text field
NSString *DesiredVersion = [_Text_version stringValue];
[_Text_Info setStringValue:SystemVersion];
// Set new version
[SystemVersionDir setObject:DesiredVersion forKey:@"ProductVersion"];
// Write (save) plist
if([SystemVersionDir writeToFile:@"/System/Library/CoreServices/SystemVersion.plist" atomically:YES])
{
NSLog(@"YES");
}
else
{
NSLog(@"NO");
}
問題は、'writeToFile'
. デスクトップなどに書き込むと、すべてうまくいき、新しいファイルが作成されます。また、ファイルをデスクトップにコピーしてそこに上書きしても問題ありません。ただし、 にあるものを上書きする必要があります/System/Library/CoreServices/
。
許可か何かが必要だと思います。しかし、私はそれを調べましたが、それは非常に多くの作業のようで、そのために私の心は混乱しています.
これを行うためのより簡単な方法、おそらく役立つクラスはありませんか?
注: Mac OS X 10.8 Mountain Lion Developer Preview 3 (Xcode 4.3.1)