非沙盒应用程序中的沙盒策略错误

Sandbox policy error in a non-sandboxed app

我正在为基于文档的应用程序使用临时(在 App Store 之外)分发。该应用程序沙盒化,权利设置正确:

    <key>com.apple.security.app-sandbox</key>
    <false/>

当 运行 经过公证的应用程序时,它会被 Gatekeeper 捕获。控制台中一遍又一遍地打印以下内核错误:
Sandbox: App(33811) System Policy: deny(1) file-write-unlink /Users/user/Library/Autosave Information/xx.name.AppName.plist

该应用程序不使用 macOS 自动保存(就地保存)功能,但如果我没记错的话,这个 Autosave Information 文件夹用于恢复应用程序会话。我正在使用 +(BOOL)autosavesDrafts+(BOOL)autosavesInPlace returns NO。我还覆盖了 - (NSURL *)autosavedContentsFileURL 以指向 App Support 文件夹,URL 得到了正确的服务。

在允许的情况下,应用会不断将文件写入 Autosave Information 文件夹。

该应用为什么以及如何一直尝试访问此文件夹,为什么它违反了沙盒策略,即使不在沙盒中也是如此?

编辑:

我终于设法从控制台中找出真正的错误。该应用程序似乎以某种方式返回了用于保存恢复数据的错误路径。我试图找到一种用于设置它的方法,但目前还没有成功。

-[NSData(NSData) initWithContentsOfFile:options:maxLength:error:] + 111
+[NSArray(NSArray) newWithContentsOf:immutable:] + 112
-[NSDocumentController(NSInternal) _autoreopenRecordsBeingReopened] + 83
-[NSDocumentController(NSInternal) _autoreopenDocumentsIgnoringExpendable:withCompletionHandler:] + 705
-[NSApplication _reopenWindowsAsNecessaryIncludingRestorableState:completionHandler:] + 249

问题是旧包标识符的一些残余。我已经迁移到应用程序的沙盒分发,并且在这个过程中的某个时刻,我已经构建了具有相同包标识符的沙盒版本。 macOS 已将捆绑包标识符注册为属于沙盒应用程序,可能出于安全原因,不再允许它 运行 非沙盒应用程序。

我创建了一个新的 Info.plist,并更改了包标识符,错误消失了。