在 macOS 上自动打开目录的适当权利
Proper entitlements to automatically open directory on macOS
我用 electron 构建了一个应用程序,可以将文本保存到用户 selected 目录中的文件中。在应用程序启动时,用户 selects 应该存储其数据的目录。我用 electron-settings
保存该目录,下次启动应用程序时,该目录会再次自动加载。
本地一切正常,但我无法将其打包为 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>
当我 select 一个目录时一切正常,但是当我关闭应用程序然后尝试 read/write 文件到同一目录时我得到一个 'permission denied' 错误。 (手动 select 目录再次按预期工作)
我需要设置什么权限才能允许在启动时访问目录?
还有其他解决方法吗?也许有一个按钮可以直接打开目录而不需要通常的文件-selection 对话框?
我已经尝试使用
<key>com.apple.security.temporary-exception.files.absolute-path.read-write</key>
<array>
<string>/</string>
</array>
但出于非常明显的原因,苹果验证拒绝了具有 read/write 访问 /
的应用程序
尝试不仅用electron-settings
而且用Security Scoped Bookmark保存目录。重启后即可再次访问该目录。
感谢@mahal tertin 使用安全范围的书签指出了正确的方向。
自 electron 6.0.0 以来,dialog.showOpenDialog()
方法 returns 一个解析为文件路径和安全范围书签的承诺。
有了 app.startAccessingSecurityScopedResource(bookmark)
,您现在可以使用该书签来访问以前的资源。
我写了一篇详细的博客 post 以获取更多信息的代码示例:https://developapa.com/security-scoped-bookmark/
我用 electron 构建了一个应用程序,可以将文本保存到用户 selected 目录中的文件中。在应用程序启动时,用户 selects 应该存储其数据的目录。我用 electron-settings
保存该目录,下次启动应用程序时,该目录会再次自动加载。
本地一切正常,但我无法将其打包为 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>
当我 select 一个目录时一切正常,但是当我关闭应用程序然后尝试 read/write 文件到同一目录时我得到一个 'permission denied' 错误。 (手动 select 目录再次按预期工作)
我需要设置什么权限才能允许在启动时访问目录?
还有其他解决方法吗?也许有一个按钮可以直接打开目录而不需要通常的文件-selection 对话框?
我已经尝试使用
<key>com.apple.security.temporary-exception.files.absolute-path.read-write</key>
<array>
<string>/</string>
</array>
但出于非常明显的原因,苹果验证拒绝了具有 read/write 访问 /
尝试不仅用electron-settings
而且用Security Scoped Bookmark保存目录。重启后即可再次访问该目录。
感谢@mahal tertin 使用安全范围的书签指出了正确的方向。
自 electron 6.0.0 以来,dialog.showOpenDialog()
方法 returns 一个解析为文件路径和安全范围书签的承诺。
有了 app.startAccessingSecurityScopedResource(bookmark)
,您现在可以使用该书签来访问以前的资源。
我写了一篇详细的博客 post 以获取更多信息的代码示例:https://developapa.com/security-scoped-bookmark/