2017-08-11 52 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

您希望System Support Library目錄下的應用程序支持目錄不是用戶的目錄。

您的GetMacApplicationSupportDir函數可能會通過NSUserDomainMask並因此檢索用戶的庫目錄下的應用程序支持目錄。

如果您希望系統的庫目錄下的應用程序支持目錄,您應該使用NSSystemDomainMask


如果ForceDirectories依然採用系統級應用程序支持的目錄,那麼你可能沒有合適的管理員(根)權限創建目錄和文件有失敗。此操作通常由執行和安裝過程(這將提示提升管理員/根權限)。

看看這個問題;這似乎是解決類似的問題:

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

+0

我的Mac上的Finder顯示庫/應用程序支持/文件夾中的許多應用程序文件夾(適用於Google,Adobe,VMWare等)。 –

+0

當我切換到NSSystemDomainMask時,Mac會返回... /Library/Application Support/com.bookup.chessopeningswizardprofessional/ 兩件事情:首先,對ForceDirectories的調用現在失敗。其次,Finder不會在System |中顯示應用程序支持文件夾庫文件夾。 –

+0

您可能有權利問題;我已經更新了答案,並指出了一個似乎處理類似問題的舊問題。 –