What Goes Where? Help Me Understand What Destinations I Should Use For CopyFile Build Automation

In the Framework User Guide, there is a section all about Build Automation, which does a nice job of explaining exactly where all the various targets will put your files on each platform:

[quote]App Parent Folder: On Windows and Linux, the specified files
are copied alongside the application executable. On OS X, the
files are copied next to the executable in the Application Bundle
(Contents->Mac OS).

Resources Folder: The specified files are copied to a Resources
folder. On Windows and Linux the Resources folder is created
alongside the application itself. On OS X, the Resources folder is
contained within the Application Bundle (Contents->Resources).

Frameworks Folder: On Windows and Linux, the files are copied
to the Libs folder for the application. On OS X, the files are
copied to the Frameworks folder in the Application Bundle
(Contents->Frameworks).

Bundle Parent Folder: On Windows and Linux, the files are
copied to the same folder containing the executable (same as
App Parent Folder). On OS X, the files are copied to the folder
containing the Application Bundle itself.

Contents Folder: On Windows and Linux, the file are copied to
the same folder containing the executable (same as App Parent
Folder). On OS X, the files are copied to the Application Bundle
(Contents).[/quote]

However, what is missing here is the recommendations for when to use which location. For example, if I want to include a small command-line utility that my app will use to do a particular job, on the mac should that go into the Resources folder? Contents folder? App Parent Folder? Why or why not? What about a .dll on windows or a .dylib on the mac? Shell scripts for either platform? The only folder that is relatively unambiguous is the Frameworks folder, which I assume should only contain … well… frameworks.

I’ve read bits and pieces of the rules for these targets (“don’t stick stuff into XYZ because that will fail to codesign”, or “you can only put .dylib files in PDQ because of app store restrictions” etc, but I’ve never found a comprehensive guide to what and when to put into these locations.

In my specific case, I’m not distributing on the Mac App Store, so I don’t care about their restrictions.
But I am code signing, so I care about that.

I’m also building for Windows, so if the locations shift by platform, I need to know that as well.

Does such a guide exist? Have I just been obtuse and missed it? If not, can someone help me understand what goes where, and can we get the user guide updated with better information?

Thanks!

Well I’d love to to tell you what to put where :stuck_out_tongue:

The combination of submitting an app to the app store & signing for OS X are by far the most restrictive about what should go where.
That guide does exist - on apple’s developer site as a couple documents
probably the first you should check is
https://developer.apple.com/library/mac/technotes/tn2206/_index.html
See Nested Code

Then
https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW13
See “Anatomy of an OS X Application Bundle” which documents what things go in resources etc

IF you use the same rationale for Linux & Windows you’re unlikely to be far wrong

Thanks, Norman.