加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

macos – TOpenDialog / NSOpenPanel无法在沙盒Delphi应用程序中

发布时间:2020-12-15 04:20:57 所属栏目:大数据 来源:网络整理
导读:Firemonkey应用程序中的TOpenDialog似乎存在问题,该应用程序是为Mac Appstore沙箱化的.我使用XE3,但它也存在于XE2中. 我实际上在这里找到了QC报告,但它仍然没有得到解决: http://qc.embarcadero.com/wc/qcmain.aspx?d=105344 有没有人有同样的问题,或任何想
Firemonkey应用程序中的TOpenDialog似乎存在问题,该应用程序是为Mac Appstore沙箱化的.我使用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

当调用Execute时有一个延迟,应用程序冻结片刻,但没有显示任何内容.没有例外或错误消息.
如果应用程序没有沙盒,则对话框可以正常工作.

此代码也不起作用,因此问题可能在TNSOpenPanel中的某个地方,由TOpenDialog调用,但遗憾的是我无法找到它.

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

我在Apple docs中读到,使用Sandbox时,NSOpenPanel来自不同的类,与没有沙盒的类相比.
我想这就是问题的原因.

任何想法将不胜感激.我们无法真正发布一个必须使用没有打开/保存对话框的文件的应用程序:)

顺便说一句,我尝试了项目选项中的权利的几种组合,但它们没有效果.

解决方法

当应用程序位于沙箱中时,NSOpenPanel / NSSavePanel应由名为Powerbox的透明模块管理. AppKit框架的常规面板无效.但要启用Powerbox以访问文件系统,权利列表应包括
com.apple.security.files.user-selected.read-write YES

组态.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读