Re: Opening an Embedded Application in Terminal
Re: Opening an Embedded Application in Terminal
- Subject: Re: Opening an Embedded Application in Terminal
- From: Ken Thomases <email@hidden>
- Date: Sun, 07 Dec 2014 15:03:09 -0600
On Dec 7, 2014, at 2:29 PM, SevenBits <email@hidden> wrote:
> I have a sandboxed app destined for the Mac App Store. Inside of it is an embedded console program which I want to open in Terminal (i.e Terminal.app opens and the app runs in its window). Here’s what I’m doing:
>
> NSString *interactiveExecutablePath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"/Contents/MacOS/app"];
> [NSTask launchedTaskWithLaunchPath:@"/usr/bin/open" arguments:@[@"-a", @"Terminal", interactiveExecutablePath]];
First, it never makes any sense for a program to spawn a subprocess to run /usr/bin/open. /usr/bin/open is just a wrapper around Launch Services. So, you could just call Launch Services directly or use NSWorkspace, which is also a wrapper around Launch Services.
Second, even using Launch Services isn't the best way to do this (sandbox issues aside). It's better to run the equivalent of this AppleScript script:
tell app "Terminal"
activate
do script "your command goes here"
end
You can do that using NSAppleScript or the Scripting Bridge.
I don't know if this approach is more likely to work in a sandboxed app. I doubt it, because it would be an enormous hole in the sandbox. If you can direct Terminal to run arbitrary commands, what protection does the sandbox provide?
> I really need this to work as it’s an important aspect of my application. Can anyone advise?
I suspect you have a serious problem, then. You will probably need to deploy outside of the Mac App Store so that you don't have to sandbox your app. Alternatively, you can build a terminal emulator UI into your app and run the embedded console program within that, instead of Terminal. Depending on the needs of your console program, that may be a relatively straightforward prospect or a very complex one.
Regards,
Ken
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden