0

我对 Mac 没有太多经验,因此将不胜感激。

首先尝试在这里问如何将自定义协议映射到Mac上的应用程序?

尝试在安装程序的安装后脚本中运行duti添加我的自定义协议:

#!/bin/sh
## 
##  add_handlers.sh -- register UTI handlers for the MyApp
##
##  Requires the duti tool
##

./duti -s MyApp myapp

该处理程序出现在 RCDefaultApp 首选项窗格中,但是当从我的其他应用程序调用时,它会在地址栏中使用该协议打开 Safari,询问“您是否要允许此页面打开“MyApp”?单击“允许”时会显示错误:

Safari 无法打开指定地址。Safari 无法打开“myapp://”,因为 macOS 无法识别以“myapp:”开头的 Internet 地址。

同样在尝试从终端打开时:

deploy@mini-mac-mini ~ % open myapp://

对于 URL myapp://,LSOpenURLsWithRole() 失败,出现错误 -10810。

尝试借助应用程序包中的 plist 文件添加协议时出现同样的问题。

4

1 回答 1

0

经过一番调查,我找到了问题的原因。

事实证明,我分发 myapp 的 zip 存档删除了文件的可执行访问权限。

在使用 zip 的功能保留属性(未成功)后,我使用了另一个脚本,将属性设置回解压缩文件:

chmod "+x" "myapp.app/Contents/MacOS/myapp"

之后 duti 工具开始按预期工作。

于 2021-01-04T07:34:24.453 回答