2017-08-11 9 views
0

デルファイXE7ForceDirectoriesはMacOSのアプリケーションのサポートにフォルダを作成するために失敗した

var 
    theFolder: String; 
... 
theFolder := System.IOUtils.TPath.Combine(GetMacApplicationSupportDir, 'com.bookup.mychessapp' + Pathfinder; 

ShowMessage(theFolder); 

if ForceDirectories(theFolder) 
    then ShowMessage('It worked.') 
    else ShowMessage('It failed.'); 

ShowMessageは今、それが働いたと言います。

theFolderがある '/ユーザ/マイク/ライブラリ/ Application Support/com.bookup.chessopeningswizardprofessional /' URLがアプリのInfo.plistでバンドル識別子と一致逆

ただし、ForceDirectories()が成功を報告しても、フォルダはMacintosh HDに表示されません。ライブラリ|アプリケーションサポート(他のすべてのアプリケーション用のフォルダがあります)。

+0

あなたはForceDirectoriesに渡している実際の文字列値がどのようなものです:それは同様の問題に対処しているようですか?それをローカルの文字列変数に代入し、ローカル変数を渡すことで、簡単に調べることができます。 –

+0

私はあなたに 'GetLastError'を呼び出さなければならないと言いましたが、それはWindows上でしか動作しません。それがOSX上でどのように動作するかはわかりません。 –

+0

@DaveOlson正確な文字列を含めるように質問を編集しました。 –

答えて

1

ユーザーのアプリケーションディレクトリではなく、システムのライブラリディレクトリの下にApplication Supportディレクトリが必要です。

あなたGetMacApplicationSupportDir機能は、おそらくNSUserDomainMaskを渡しているので、ユーザーズライブラリディレクトリの下にアプリケーション・サポート・ディレクトリを取得しています。

アプリケーションサポートディレクトリをシステムのライブラリディレクトリにしたい場合は、NSSystemDomainMaskを使用してください。 ForceDirectoriesはまだシステムレベルのアプリケーション・サポート・ディレクトリを使用して失敗する場合


あなたがそこにディレクトリとファイルを作成するには、適切な管理者(root)の権限を持っていないかもしれません。この操作は通常、プロセスによって実行されます(管理者権限またはルート権限の昇格を促すプロンプトが表示されます)。

この質問をご覧ください。

Is /Library/Application Support Library accessible to all users?

+0

MacのFinderには、ライブラリ/アプリケーションサポート/フォルダー(Google、Adobe、VMWareなど)のいくつかのアプリケーションフォルダーが表示されます。 –

+0

NSSystemDomainMaskに切り替えると、Macが返されます。 /ライブラリ/アプリケーションサポート/ com.bookup.chessopeningswizardprofessional/ まず、ForceDirectoriesの呼び出しが失敗します。第2に、Finderはシステム内にApplication Supportフォルダを表示しません。ライブラリフォルダ。 –

+0

権利の問題がある可能性があります。私は答えを更新し、同様の問題に対処するように思われる古い質問を指摘しました。 –

関連する問題