Storing and saving a setting in a stand alone
Richard Gaskin
ambassador at fourthworld.com
Thu Jan 15 11:05:45 EST 2015
René Micout wrote:
>> Le 15 janv. 2015 à 15:17, dunbarx at aol.com a écrit :
>>
>> You know, recently I tried to make a "splash" standalone in 6.7,
>> the first I needed to in a while (the last was in 5.x) and it
>> would not work. I thought it was something I was doing wrong,
>> but was not on my front burner to figure out.
>>
>>
>> Anyone else? This is big if true, but how could it have gone
>> unnoticed?
>
> Hello Craig,
> See bug report 14295 !
This is apparently related to a relatively recent change by Apple to
security handling in OS X.
From the Release Notes included in all 6.7.x builds from 6.7.0rc2 on:
Non-executable file redirection on Mac (6.7.0-rc-2)
Mac AppStore rules require that only executables (including
bundles and apps) are present within the Contents/MacOS
folder in the application bundle.
However, historically (for cross-platform purposes), LiveCode
applications traditional place resources relative to the
engine executable, resulting in non-executable files to be
present in the Contents/MacOS folder which violates AppStore
signing policy.
To remedy this situation without requiring users to change
scripts, a simple redirection facility has been implemented
in the engine:
If an attempt is made to open a file for read which falls
within Contents/MacOS and does not exist, the engine will
attempt to open the same path but under Contents/Resources
/_MacOS instead.
If an attempt is made to list files in a folder which falls
within Contents/MacOS, the engine will list files in that
folder and concatenate them will files within the same folder
under Contents/Resources/_MacOS. Additionally the standalone
builder has had an extra processing step added on Mac:
After the Mac bundle has been built, the S/B recurses through
Contents/MacOS and creates an identical folder structure based
at Contents/Resources/_MacOS. All non-executable files in any
folders under Contents/MacOS are moved to the same folder under
Contents/Resources/_MacOS whereas any Mach-O executable files
are left where they are.
The result of this is that after building a standalone, from
a script's point of view nothing has changed; but the app bundle
will conform to the rules required for signing for the Mac
AppStore.
While the absence of reports related to general file access in the
bundle would seem to suggest this change was implemented well in the
engine, René's report shows this workaround for Apple's new security
policy needs to be added to the SQLite external as well.
Hanson's confirmation there suggests they're working on it now, and
given how widely SQLite is used I'd be surprised if the fix isn't in the
next build.
There is one remaining issue however: René's last comment in the report
suggests an expectation that files within the bundle will also be
writable, but write access to anything within the Applications folder is
generally disallowed on most systems, including OS x.
Does OS X now allow user-data to be written within an app bundle?
It would seem simpler to store user data in one of the user-writable
folders within the user's Home folder, perhaps Application Support or
another relevant path obtainable with the specialFolderPath function.
--
Richard Gaskin
Fourth World Systems
Software Design and Development for the Desktop, Mobile, and the Web
____________________________________________________________________
Ambassador at FourthWorld.com http://www.FourthWorld.com
More information about the use-livecode
mailing list