Am 15.11.2010 um 04:43 schrieb Kyle Sluder:

> On Sun, Nov 14, 2010 at 9:55 AM, kalexm <kal...@gmail.com> wrote:
> Hello all,
> 
> I'm new to the list and somewhat new to OSX (not iphone!) development. I 
> spent ten years most of my time in java so it was a hurdle..
> 
> I am currently developing an app (APP-A) which does PDF manipulation. I have 
> a second app (APP-B), that provides a PDF Viewer which is older.
> APP-A depends on APP-B as it uses APP-B for viewing manipulated PDFs. APP-B 
> is independent from APP-A.
> I could put both apps into Applications. But if a User don't know what APP-B 
> is for as he might only wan't APP-A but didn't see the dependency, he might 
> delete APP-B and APP-A cannot work properly anymore.
> 
> To solve this I put APP-B into the resources of APP-A, and it works to launch 
> the app from this directory. I have not found any documentation from apple or 
> mailing-lists if this is unwanted, problematic or somewhat evil!? The launchd 
> finds the 'hidden' APP-B and behaves as expected...
> 
> Is this allowed and recommendable, or how could I solve this alternatively 
> and I don't want to merge the apps!?
> 
> The code signing in-depth technote (TN2206) advises against using Resources 
> for this. It suggests putting the helper app bundles in the Contents folder, 
> and single-file helper binaries directly inside Contents/MacOS. 
> http://developer.apple.com/library/mac/#technotes/tn2007/tn2206.html%23TNTAG19
> 
> --Kyle Sluder

Sorry, I forgot 'reply-all'

Yeah that was the source I was looking for. I've inserted a copy build phase. I 
managed to put APP-B everywhere but not directly under Contents. I do it now by 
a shellscript that I run after building. But this could'nt be the final 
solution...

I put together some code, but it crashes. As I couldn't simply attach the 
debugger (as the bash needs to copy it in the right position..) debugging is 
complicated...


        CFURLRef appURL;
        CFBundleRef bundle = CFBundleGetMainBundle();
        NSString *app = @"B.app";
        appURL = CFBundleCopyAuxiliaryExecutableURL(bundle,(CFStringRef)app);
        if (appURL != NULL) {
                FSRef applicationRef;
                CFURLGetFSRef(appURL, &applicationRef);
                FSRef fileRef;
                CFURLGetFSRef(pDFDocumentURL, &fileRef);
                LSLaunchFSRefSpec   launchSpec = { &applicationRef, 1, 
&fileRef, NULL, kLSLaunchDefaults, NULL };
                OSStatus err = LSOpenFromRefSpec(&launchSpec, NULL);
                if (err != kLSApplicationNotFoundErr) {
                        //do something...
                }
        }
        CFRelease(appURL);

best,_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to