Am 02.09.2011 um 00:19 schrieb Philip Ershler:

> 
> On Sep 1, 2011, at 4:11 PM, Martin Wierschin wrote:
> 
>> Hi Dave,
>> 
>> Thanks for your reply. I was hoping to avoid handling that inspection 
>> myself, but even if I go that route there's another problem: the ancillary 
>> tool isn't a proper bundle, it's just a plain executable, so NSBundle's 
>> initializers will just return nil. That's a pity because there's even 
>> -[NSBundle preflightAndReturnError:] which sounds to be exactly what I want.
>> 
>> Offhand does anyone know how to inspect the architecture(s) of a plain 
>> executable file? I've been googling for a little bit and haven't hit upon 
>> anything that works yet.
> 
> Won't otool do the job for you?
> 
> Phil

Or file even - is otool included in the standard OS install, or does the user 
have to have dev tools installed?

file /Applications/Dashboard.app/Contents/MacOS/Dashboard 
/Applications/Dashboard.app/Contents/MacOS/Dashboard: Mach-O universal binary 
with 3 architectures
/Applications/Dashboard.app/Contents/MacOS/Dashboard (for architecture x86_64): 
Mach-O 64-bit executable x86_64
/Applications/Dashboard.app/Contents/MacOS/Dashboard (for architecture i386):   
Mach-O executable i386
/Applications/Dashboard.app/Contents/MacOS/Dashboard (for architecture 
ppc7400):        Mach-O executable ppc



>> 
>> Thanks,
>> ~Martin
>> 
>> 
>> On Sep 1, 2011, at 2:12 PM, Dave DeLong wrote:
>> 
>>> You could probably catch this before attempting to launch the task.  Create 
>>> a new NSBundle object pointing at the executable path, and then ask the 
>>> bundle for the -executableArchitectures, and see if one of the returned 
>>> values matches the architecture of the machine you're running. If it 
>>> matches, then launch the task.  :)
>>> 
>>> Cheers,
>>> 
>>> Dave
>>> 
>>> On Sep 1, 2011, at 2:09 PM, Martin Wierschin wrote:
>>> 
>>>> Hello all,
>>>> 
>>>> My application sometimes need to run an ancillary program (included in the 
>>>> app's resources). I do this via NSTask and normally it works great. 
>>>> 
>>>> The problem is that this ancillary program is sometimes Intel-only, or 
>>>> sometimes PPC-only, while the main application is Universal. The use of 
>>>> this ancillary program is not mandatory, so displaying an error message, 
>>>> or using a fallback solution is acceptable. The issue is that trying to 
>>>> run an ancillary program on an unsupported architecture triggers a hard 
>>>> crash:
>>>> 
>>>>>> Exception Type:  EXC_BREAKPOINT (SIGTRAP)
>>>>>> Exception Codes: 0x0000000000000001, 0x000000009030c0b0
>>>>>> Crashed Thread:  0
>>>>>> 
>>>>>> Application Specific Information:
>>>>>> *** NSTask: Task create for path '.../Resources/mysubtool' failed: 86, 
>>>>>> "Bad CPU type in executable".  Terminating temporary process.
>>>>>> *** multi-threaded process forked ***
>>>> 
>>>>>> 
>>>>>> Thread 0 Crashed:
>>>>>> 0   com.apple.Foundation                 0x9030c0b0 
>>>>>> ___NEW_PROCESS_COULD_NOT_BE_EXECD___ + 0
>>>>>> 1   com.apple.Foundation                 0x901d0354 -[NSConcreteTask 
>>>>>> launchWithDictionary:] + 2472
>>>> 
>>>> Is there an elegant way to catch this? I'd rather not try to figure out 
>>>> the arch of the ancillary program, host arch, and (if relevant) whether 
>>>> Rosetta is installed or not. 
>>>> 
>>>> Thanks,
>>>> ~Martin
>>>> 
>>>> _______________________________________________
>>>> 
>>>> 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/davedelong%40me.com
>>>> 
>>>> This email sent to davedel...@me.com
>>> 

_______________________________________________

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