Как получить независимый от пользователя путь к библиотеке для Mac OS X?
Используя XE6, в документации Embarcadero здесь говорится, что TPath::GetLibraryPath () "Возвращает путь к каталогу для хранения любых данных, которые требуется хранить вашему приложению, независимо от пользователя".
Тем не менее, в таблице Sample Path они перечисляют OS X для этой функции как
/Users/ имя пользователя /Library
который кажется пользовательским. Первый вопрос заключается в том, является ли эта папка правильной для хранения данных независимо от пользователя. Второй вопрос - если нет - как получить папку в пользовательскую библиотеку в OS X?
1 ответ
Решение
Я использую что-то вроде этого для извлечения этой папки.
uses
Macapi.Foundation, Macapi.Helpers;
type
ENSFileManagerException = class(Exception);
function GetFolder_ProgramData: string;
var
FileManager: NSFileManager;
ID: Cardinal;
Domain: Cardinal;
Url: NSURL;
Bundle: NSBundle;
begin
ID := NSApplicationSupportDirectory; // ProgramData on Windows
Domain := NSLocalDomainMask;
FileManager := TNSFileManager.Wrap(TNSFileManager.OCClass.defaultManager);
Url := FileManager.URLForDirectory(ID, Domain, nil, False, nil);
if URL <> nil then
Result := NSStrToStr(Url.path)
else
raise ENSFileManagerException.CreateFmt('Could not retrieve folder for ID %d', [ID]); //Error.localizedDescription.UTF8String);
end;