Electron 在macOS上自动打开目录的适当权限

Electron 在macOS上自动打开目录的适当权限,electron,electron-builder,mac-app-store,appstore-sandbox,entitlements,Electron,Electron Builder,Mac App Store,Appstore Sandbox,Entitlements,我用electron构建了一个应用程序,将文本保存到用户选择的目录中的文件中。在应用程序启动时,用户选择其数据应存储的目录。我用electron设置保存该目录,在下一次应用程序启动时,该目录将再次自动加载 在本地,一切都很好,但我很难将其打包为macOS.app文件并在签名后运行 我的权利现在看起来像这样 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0/

我用electron构建了一个应用程序,将文本保存到用户选择的目录中的文件中。在应用程序启动时,用户选择其数据应存储的目录。我用electron设置保存该目录,在下一次应用程序启动时,该目录将再次自动加载

在本地,一切都很好,但我很难将其打包为macOS.app文件并在签名后运行

我的权利现在看起来像这样

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
    <key>com.apple.security.application-groups</key>
    <string>APPLE_GROUP_STRING</string>
    <key>com.apple.security.files.user-selected.read-write</key>
    <true/>
    <key>com.apple.security.files.bookmarks.document-scope</key>
    <true/>
    <key>com.apple.security.files.bookmarks.app-scope</key>
    <true/>
  </dict>
</plist>
当我选择一个目录时,一切都很好,但当我关闭应用程序,然后尝试将文件读/写到同一目录时,会出现“权限被拒绝”错误。再次手动选择目录后,它将按预期工作

我需要设置什么权限才能在启动时访问目录? 还有其他解决办法吗?也许有一个按钮可以直接打开目录,而不需要通常的文件选择对话框

我已经试过使用

<key>com.apple.security.temporary-exception.files.absolute-path.read-write</key>
<array>
    <string>/</string>
</array>

但由于非常明显的原因,apple verification拒绝了对/具有读/写权限的应用程序,尝试不仅使用electron设置保存目录,还将其保存为。重新启动后,您可以再次访问此目录。

尝试不仅使用electron设置保存目录,还将其保存为。重新启动后,您可以再次访问此目录。

感谢@mahal tertin使用安全范围的书签指向正确的方向

自electron 6.0.0以来,dialog.showOpenDialog方法返回解析为文件路径和安全范围书签的承诺

使用app.startAccessingSecurityScopedResourcebookmark,您现在可以使用该书签访问以前的资源


我写了一篇详细的博客文章,其中有代码示例以获取更多信息:

感谢@mahal tertin使用安全范围的书签指向了正确的方向

自electron 6.0.0以来,dialog.showOpenDialog方法返回解析为文件路径和安全范围书签的承诺

使用app.startAccessingSecurityScopedResourcebookmark,您现在可以使用该书签访问以前的资源


我写了一篇详细的博客文章,其中包含代码示例,以获取更多信息:

感谢您的回答。就在这一天,我偶然发现了安全范围的书签,它们在electron中的用法将在完全实现后写出详细的答案谢谢你的答案。就在这一天,我们偶然发现了安全范围的书签,一旦完全实现,它们在electron中的使用将写出详细的答案