2017-01-16 14 views
0

私はアプリを/Applicationsの中に入れているインストーラを持っています。アプリがそこにコピーされた後、私はインストーラのプラグインを書いて、サーバのアドレスやポート番号などのユーザ設定を取得しました。プラグインはこれらの設定を/Applications/myapp.app内のplistファイルに書き込みます。Objective-C:アプリバンドルのplistの内容を編集する

私は書いている:

NSString *filePath = @"/Applications/emptyapp.app/Contents/Resources/DummyConfig.plist"; 
NSString *test = @"somestring"; 
NSError *error; 
[[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil]; 
[test writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error]; 
if(error){ 
    [self alert:error.localizedDescription]; 
} 

イムを許可を得るには、理にかなっている、そこに書き込むため拒否されましたが、どのように私はこの問題を回避できますか?

これらの設定は1回限りの設定であり、通常のユーザーではなく、管理者がアクセスする必要があります。

(私はを使用してインストーラを作成し、Objective Cでプラグインをビルドしています。パッケージには「require admin password」というチェックボックスがありますが、アプリケーションに書き込むことができないので、 )

+0

IあなたはApp Bundleに書き込むべきだとは思わない。 Appleが許可していれば、他のアプリは簡単に他のアプリのハックや変更を行うことができます。あなたがする必要があるのは、アプリケーションのDocumentsフォルダに書き込むことです。 – GeneCode

+1

さて、私は一時ファイルを使って回避策を考え出しました。ありがとう – theQuestions

答えて

0

アプリを持って、plistファイルをユーザーのLibraryフォルダのどこかに、通常はApplication Supportに書き込むのがベストプラクティスです。次に、アクセス許可の問題や、アプリが破損している可能性があることを検出するシステムについて心配する必要はありません。あなたのアプリケーションパッケージで何かを絶対に変更する必要がある場合、インストーラは高い権限で実行する必要があります。あるいは、あなたのアプリケーションに高い権限を与えるためのメカニズムを構築する必要があります(例えば、リトルスニッチ)

関連する問題