TOpenDialog / NSOpenPanel不能在沙盒Delphi应用程序工作(TOpenDi

2019-08-03 04:22发布

似乎是与TOpenDialog在Firemonkey应用程序,这是沙箱为Mac苹果商店的问题。 我用XE3,但它也存在于XE2。 我居然发现了一个QC报告在这里,但它仍然没有得到解决:

http://qc.embarcadero.com/wc/qcmain.aspx?d=105344

有没有人有同样的问题,或任何想法如何解决呢?

这是很容易检查。 只要把TOpenDialog窗体上并调用Execute方法。 注册和沙箱根据Embarcadero公司说明的应用程序:

http://docwiki.embarcadero.com/RADStudio/en/Mac_OS_X_Application_Development

当执行被称为是有延迟,应用程序冻结了一会儿,但没有显示。 有没有例外情况或错误信息。 如果应用无法正常沙盒的对话框作品。

此代码也不起作用,所以这个问题可能是某处TNSOpenPanel,这是由TOpenDialog调用,但不幸的是我无法找到它。

var
  LOpenDir: NSOpenPanel;
begin
  LOpenDir := TNSOpenPanel.Wrap(TNSOpenPanel.OCClass.openPanel);
  LOpenDir.runModal;
  LOpenDir.release;

我在阅读苹果文档与Sandbox中NSOpenPanel从不同类派生的,相比一个没有沙箱。 我想这是问题的原因。

任何想法将不胜感激。 我们真的不能发布有没有打开/保存对话框的文件工作的应用程序:)

顺便说一句,我试着在项目选项的权利的几种组合,但他们都没有效果。

Answer 1:

当一个应用程序是在沙箱中,NSOpenPanel / NSSavePanel应由称为Powerbox透明模块来管理。 了AppKit框架的常规板没有任何影响。 但是,为了使Powerbox访问文件系统,该权利清单应包括

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

组态。



文章来源: TOpenDialog/NSOpenPanel not working in a sandboxed Delphi app