当应用程序打开其自己的包内的文件时,如何防止 "XYZ would like to access files in your Downloads folder" 消息?

How to prevent the "XYZ would like to access files in your Downloads folder" message when an app opens files inside its own bundle?

我有一个安装程序应用程序在经过公证的磁盘映像中分发。该应用程序是一个简单的程序,可对系统执行一些检查,然后启动 macOS 安装程序以安装应用程序包中包含的 pkg。

但是,即使此应用程序位于已安装的磁盘映像中,并且即使它试图打开的文件位于其自己的签名和公证包中,它仍然会触发“应用程序想要访问您的下载中的文件文件夹”,如果 dmg 位于用户的下载文件夹中,几乎总是如此。

有什么方法可以让这个应用程序在不触发此消息的情况下启动安装程序?该应用程序的全部意义在于尝试使安装过程尽可能顺畅和无缝。明确的目标是打开它将直接进入 mac 安装程序,没有警告消息、中断或任何其他类型的对话框,可能会使用户感到困惑或惊慌。

注意:单独分发 pkg 不是一种选择,因为此应用的目的是解决 macOS 在 Apple Silicon 上的安装程序中的错误 mac秒。 pkg 仅适用于 Intel,如果我向其中添加一个在 pkg 打开时执行的脚本,那么它会向用户显示两次令人困惑的警告消息,一次是 Installer.app 作为 arm64 进程打开,然后再次当它作为 x86_64 进程重新启动时。

这是一个令人讨厌的迂回解决方法,但我设法使用 launchd 做到了。

该方法的要点是在用户的临时文件夹中创建一个 plist 文件,指定一个按需启动的启动作业,只需调用 /usr/bin/open 打开应用程序包内的 pkg 文件,然后调用launchctl 加载它。安装程序打开后,删除已启动的作业。