Resources folder on mac, and the good old days
Mark Waddingham
mark at livecode.com
Mon Mar 29 03:54:40 EDT 2021
On 2021-03-29 03:13, Neville Smythe via use-livecode wrote:
>> you may already know this, but this will not work in a standalone!
>> We will surely not have write permissions in that folder!
>>
>> As a workaround I would probably use -> specialfolderpath("temporary")
>> Or even write the text to -> the tempname
> There is no problem writing to the resources folder. That’s the
> logical place to put the user-changeable stack files for a standalone,
> making the auxiliary files invisible to external fiddling by the user,
> which a Good Thing (although that does make the app look different on
> Windows or Linux).
Unfortunately this has never been true on macOS X.
The Resources folder (which is in the macOS app bundle) should be
treated as read-only...
This has always been true - the correct (Apple guideline compliant!)
place to put files that are 'internal' to the app but created/modified
at runtime and which should persist between restarts of the app is in
the 'Application Support' folder - in a sub-folder which is named the
same as the app's id (e.g. com.myapp.mycompany).
[ Apple guidance is here -
<https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/MacOSXDirectories/MacOSXDirectories.html>
]
The read-only ness of resources isn't strictly enforced - especially if
the standalone is built on the machine it is run (app bundles downloaded
from the internet, for example, have file attributes added which mark
them as 'quarantined' - even if unpacked from a zip/archive)... However,
you will notice some more 'unpleasant' effects, typically, if you move
the standalone to another machine - these will range from prompt dialogs
allowing access, to dialogs requesting root permission (if the user has
put the standalone, say, in /Applications).
In contrast, I do not believe that writing to stuff under 'Application
Support' ever produces a user-visible prompt dialog on any version of
macOS.
Additionally, code-signing requirements are becoming more stringent over
time - off the top of my head I can't remember whether codesign has
started including non-executable resources in the signature - but as
soon as it does (if it doesn't already), any signed and notarized app
will break if any of the files in the app bundle are modified / removed
/ added to.
> As for the Good Old Days of free distribution to other Mac (desktop)
> users, they haven’t gone. Apple is making it harder for the
> uninitiated to find out how to open “unsafe” files, but they don't
> keep it a secret. And while recent rumours abound about unnotarized
> apps not working at all on some future MacOS, it does seem unlikely
> that will actually happen, and if they do that’s time for us all to
> reboot to Linux.
Indeed, it is unlikely that Apple will ever completely stop unnotarized
apps from running (although they keep changing what you have to toggle
to enable right-click Open to open the app!) - but ensuring you use
appropriate paths for temporary / private writable app files means the
least friction for the user.
Warmest Regards,
Mark.
--
Mark Waddingham ~ mark at livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps
More information about the use-livecode
mailing list