UnitySimpleFileBrowser icon indicating copy to clipboard operation
UnitySimpleFileBrowser copied to clipboard

UnauthorizedAccessException for system folders on Mac OS

Open hippogamesunity opened this issue 2 years ago • 14 comments

Description of the bug

Hi! I'm testing the plugin on Mac OS and there is an issue with UnauthorizedAccessException when writing to the Root drive. The situation is:

  • the app can list system drives and open files
  • the app can't write to Root or Root/Users (UnauthorizedAccessException)
  • when I'm trying to move files to Root or Root/Users with Finder, it's asks for a user password (so I think it's considered as secured pathes)

Showing this exception to users blocks me from passing the App Store review, so I'm looking for a workarounds to hide drives or hide inaccessible locations maybe. image

Reproduction steps

  • save any file to the Root drive on Mac OS

Platform specs

Any Unity, any Mac

Additional info

The app asks for permissions to Documents when starting the first time.

hippogamesunity avatar May 26 '22 09:05 hippogamesunity

image

hippogamesunity avatar May 26 '22 10:05 hippogamesunity

First thing I could think of is, every time the path changes, we check for write access in that directory and if we don't have access, disable the Save button. I'll probably give it a shot sometime soon.

yasirkula avatar May 26 '22 10:05 yasirkula

Thanks for your reply! Here is another screenshot from the app store reviewer team. image

hippogamesunity avatar May 26 '22 12:05 hippogamesunity

What seems to be the issue in this screenshot?

yasirkula avatar May 27 '22 07:05 yasirkula

I mean the error may occur not only for the Root drive, but for others as well.

Btw I've found code to comment to hide drives (as a workaround).

hippogamesunity avatar May 27 '22 09:05 hippogamesunity

Another similar exception when listing files (not saving as before). image

hippogamesunity avatar May 28 '22 11:05 hippogamesunity

All previous errors were from an old x64 Mac. On the latest Mac OS the plugin doesn't work at all due to sandbox, all pathes are incorrect (like Documents and Desktop). image

hippogamesunity avatar May 28 '22 12:05 hippogamesunity

Thanks again for the feedback! I didn't know about sandboxing, will google it while working on a bugfix for this issue.

yasirkula avatar May 29 '22 08:05 yasirkula

As you see, these paths are similar to iOS, so I can suggest Mac sandboxing is similar to iOS. BTW you can't send an app to review without adding the Sandbox capability in Xcode. At the same time, even with this feature enabled, you can't test a sandboxed app by running from Xcode. It gets really sandboxed only after downloaded from the App Store. Also I'm noob in Mac OS)

hippogamesunity avatar May 29 '22 09:05 hippogamesunity

Sorry to bothering you, but I'm trying to provide as much info as I have. Thanks!

hippogamesunity avatar May 29 '22 09:05 hippogamesunity

Note to self: useful links about app sandboxing:

  • https://stackoverflow.com/questions/55218107/nsopenpanel-under-sandbox-access-all-files-inside-user-selected-folder
  • https://developer.apple.com/documentation/xcode/configuring-the-macos-app-sandbox#Enable-managed-file-access
  • https://stackoverflow.com/questions/13729958/remember-user-selected-folder-and-reopen-it-by-nsopenpanel-under-sandbox

Checking if directory is writeable -natively-:

  • https://stackoverflow.com/questions/1597572/how-can-you-tell-if-a-directory-is-writeable-in-objective-c

Writing Mac OS native plugins:

  • https://suventure.in/create-an-osx-plugin-for-unity

yasirkula avatar Jul 26 '22 16:07 yasirkula

Hi, we're facing this issue in our project and I'm wondering if you're still planning on fixing this issue. Thanks.

manituan avatar Jul 10 '23 11:07 manituan

My schedule unfortunately won't allow me to fix this issue soon. I'm planning to work on this at some point but not soon.

yasirkula avatar Jul 10 '23 20:07 yasirkula

@hippogamesunity @manituan If I were to add a "Browse..." button that allows the user to pick a directory using Mac's native file picker (upon completion, user will be able to browse that folder's contents using SimpleFileBrowser), do you think App Store Review team would object with the reason "if you're gonna show the native dialog anyways, then do everything with the native dialog; why show a uGUI dialog and native dialog together"?

I'd personally prefer the native dialog over uGUI dialog but there are already several native file browser plugins and some users would prefer showing their customized uGUI dialog (e.g. to display a World Space file browser). In any case, the solution will be either a fully native dialog experience or a combination of native+uGUI dialogs as I've described in my first paragraph.

yasirkula avatar Sep 01 '24 16:09 yasirkula