ForceDirectory无法在MacOS应用程序支持中创建文件夹
德尔福XE7ForceDirectory无法在MacOS应用程序支持中创建文件夹,macos,delphi,Macos,Delphi,德尔福XE7 var theFolder: String; ... theFolder := System.IOUtils.TPath.Combine(GetMacApplicationSupportDir, 'com.bookup.mychessapp' + Pathfinder; ShowMessage(theFolder); if ForceDirectories(theFolder) then ShowMessage('It worked.') else ShowMess
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现在说它成功了
文件夹是“/Users/mike/Library/Application Support/com.bookup.chessopeningswizardprofessional/”
该反向URL与应用程序info.plist中的包标识符匹配
但是,即使ForceDirectory报告成功,该文件夹也不会出现在Macintosh HD | Library |应用程序支持中,该应用程序支持中包含所有其他应用程序的文件夹。您希望应用程序支持目录位于系统的库目录下,而不是用户的库目录下 GetMacApplicationSupportDir函数可能正在传递NSUserDomainMask,因此正在检索用户库目录下的应用程序支持目录 如果需要系统库目录下的应用程序支持目录,则应使用NSSystemDomainMask 如果ForceDirectory仍然无法使用系统级应用程序支持目录,则您可能没有相应的管理员根权限在那里创建目录和文件。此操作通常由和安装过程执行,该过程会提示提升管理员/root权限 看看这个问题,;它似乎正在解决一个类似的问题:
传递给ForceDirectory的实际字符串值是多少?将其分配给一个局部字符串变量,然后传递该局部变量,以便您可以更轻松地检查它。我正要说您应该调用GetLastError,但这仅适用于Windows。不确定这在OSX上如何工作。@DaveOlson我已经编辑了这个问题以包含确切的字符串。@MikeatBookup-在我昨天对你的问题的回答中:;我将演示如何检索用户的应用程序支持目录。您需要系统的应用程序支持目录。我已经更新了另一个答案以显示这两个选项。Mac上的Finder显示了库/应用程序支持/谷歌、Adobe、VMWare等文件夹中的许多应用程序文件夹。当我切换到NSSystemDomainMask时,Mac会返回/Library/Application Support/com.bookup.chessopeningswizardprofessional/有两件事:首先,对ForceDirectories的调用现在失败了。第二,Finder没有在System | Library文件夹中显示应用程序支持文件夹。您可能有权利发行;我更新了答案,并指出了一个老问题,它似乎处理了类似的问题。