Macos TopEndDialog/NSOpenPanel在沙盒Delphi应用程序中不工作

Macos TopEndDialog/NSOpenPanel在沙盒Delphi应用程序中不工作,macos,delphi,sandbox,firemonkey,delphi-xe3,Macos,Delphi,Sandbox,Firemonkey,Delphi Xe3,Firemonkey应用程序中的TOpenDialog似乎有问题,它是针对Mac Appstore的沙盒。我使用XE3,但它也存在于XE2中。 我在这里发现了一份QC报告,但它仍然没有解决: 有没有人遇到过同样的问题,或者有没有解决的办法 这很容易检查。只需在表单上放置TopEndDialog并调用Execute方法。根据Embarcadero说明对应用程序进行签名和沙箱处理: 当调用Execute时会出现延迟,应用程序会冻结片刻,但不会显示任何内容。没有异常或错误消息。 如果应用程序没有沙

Firemonkey应用程序中的TOpenDialog似乎有问题,它是针对Mac Appstore的沙盒。我使用XE3,但它也存在于XE2中。 我在这里发现了一份QC报告,但它仍然没有解决:

有没有人遇到过同样的问题,或者有没有解决的办法

这很容易检查。只需在表单上放置TopEndDialog并调用Execute方法。根据Embarcadero说明对应用程序进行签名和沙箱处理:

当调用Execute时会出现延迟,应用程序会冻结片刻,但不会显示任何内容。没有异常或错误消息。 如果应用程序没有沙盒,则对话框可以正常工作

这段代码也不起作用,所以问题可能出在TNSOpenPanel的某个地方,该面板由TopEndDialog调用,但不幸的是我找不到它

var
  LOpenDir: NSOpenPanel;
begin
  LOpenDir := TNSOpenPanel.Wrap(TNSOpenPanel.OCClass.openPanel);
  LOpenDir.runModal;
  LOpenDir.release;
我在文章中读到,与没有沙盒的NSOpenPanel相比,使用沙盒的NSOpenPanel派生自不同的类。 我想这就是问题的原因

任何想法都将不胜感激。如果没有打开/保存对话框,我们无法发布必须处理文件的应用程序:)


顺便说一句,我在项目选项中尝试了几种权利组合,但都没有效果。

当应用程序位于沙箱中时,NSOpenPanel/NSSavePanel应该由一个名为Powerbox的透明模块管理。AppKit框架的普通面板无效。但要使Powerbox能够访问文件系统,权限列表应该包括

com.apple.security.files.user-selected.read-write YES

配置。

是的,我已经尝试将其添加到权利中,但它不会改变行为。有什么特别的东西我应该调用带有Powerbox模块的OpenPanel吗?我认为不是,但仍然…你好,Georgiev,我会在找到解决方法后尽快在这里写下答案。你好,我正在尝试重新生成您的错误,但是我无法对应用程序进行代码设计。我得到错误:对象文件格式无法识别、无效或不合适。你曾经遇到过这种情况吗?你如何能对你的应用程序进行代码设计?你好,谢谢你的帮助。我在代码签名方面并没有问题,也并没有收到任何错误。只需按照这里的自动签名步骤:从Apple创建“Mac应用程序证书”和“Mac安装程序证书”,将它们安装在我的Mac上,在配置中设置名称,就差不多了。如果我使用设置,我会看看是否会出现错误。好的,我的Mac电脑是Mountain Lion,也许错误就在于此。我会设法解决的。我也遇到了同样的问题,有解决办法吗?谢谢。很遗憾,到目前为止我还没有找到解决办法。唯一积极的事情是,问题出现在OSX 10.7上,而不是10.8上。到目前为止,我的应用程序中唯一的解决方案是在10.7上运行时禁用“浏览”功能,并且只使用拖放选项。