2011-01-05 8 views
1

ich eine Anwendung, die eine XML-Datei durch diesen Terminal-Befehl importieren:NSTask Starten verursacht Absturz

offen/path/to/main \ app.app --args myXML.xml

Das funktioniert gut, ohne Probleme. Und ich habe Applescript verwendet, um diesen Befehl über Shell zu starten, und es funktioniert genauso gut. Doch wenn versuchen Cocoa NSTask Launcher mit diesem Code:

NSTask *task = [[NSTask alloc] init]; 

[task setLaunchPath:@"/usr/bin/open"]; 

[task setCurrentDirectoryPath:@"/Applications/MainApp/InstallData/App/"]; 

[task setArguments:[NSArray arrayWithObjects:[(NSURL *)foundApplicationURL path], @"--args", @"ImportP.xml", nil]]; 

[task launch]; 

die Anwendungen starten auf das Einstiegsbild und dann abstürze, wenn entweder die nächste Schaltfläche geklickt wird oder wenn man versucht, das Fenster zu schließen. Ive versuchte NSAppleScript mit dieser Verwendung:

NSAppleScript *script = [[NSAppleScript alloc] initWithSource:@"tell application \"Terminal\" do script \"open /Applications/MainApp/InstallData/App/Main\\\\ App.app\" end tell"]; 

NSDictionary *errorInfo; 

[script executeAndReturnError:&errorInfo]; 

Dies wird das Programm starten und es wird auch zum Absturz bringen und ich bekomme diesen Fehler in meinem Xcode Debug-Fenster:

12011-01-04 17:41:28.296 LaunchAppFile[4453:a0f] 
Error loading /Library/ScriptingAdditions/Adobe Unit Types.osax/Contents/MacOS/Adobe Unit Types: dlopen(/Library/ScriptingAdditions/Adobe Unit Types.osax/Contents/MacOS/Adobe Unit Types, 262): no suitable image found. 
Did find: /Library/ScriptingAdditions/Adobe Unit Types.osax/Contents/MacOS/Adobe Unit Types: no matching architecture in universal wrapper 
LaunchAppFile: OpenScripting.framework - scripting addition "/Library/ScriptingAdditions/Adobe Unit Types.osax" declares no loadable handlers. 

Also mit Forschung kam ich mit dies:

NSAppleScript *script = [[NSAppleScript alloc] initWithSource:@"do shell script \"arch -i386 osascript /Applications/MainApp/InstallData/App/test.scpt\""]; 

NSDictionary *errorInfo; 

[script executeAndReturnError:&errorInfo]; 

Aber das verursacht die gleichen Ergebnisse wie der letzte Befehl. Irgendwelche Ideen, was diesen Absturz verursacht?

Antwort

0

Überprüfen Sie here, um die Adobe-Fehler zu beheben. Ich bin mir nicht sicher, ob das das Problem ist. Eigentlich konnte ich den offenen Befehl nicht erhalten, um Argumente an irgendetwas zu übergeben, also konnte ich nicht in Ihr Problem schauen.

+0

genug sicher. Adobe spuckte Sachen aus, die steckengeblieben waren. Ich bin kein C-Entwickler, aber das ist, was mir gesagt wurde passiert ist. – tripskeet

0

Geben NSTask einen neuen Versuch mit vollständigen Pfade nur:

NSTask *task = [[NSTask alloc] init]; 

[task setLaunchPath:@"/usr/bin/open"]; 

[task setArguments:[NSArray arrayWithObjects:[ @"'/path/to/main app.app'", @"--args", @"/path/to/ImportP.xml", nil]]; 

[task launch]; 

Ein anderer Ansatz wäre NSTask die folgende Befehlszeile zu geben:

sh -c '/usr/bin/open "/path/to/main app.app" --args /path/to/myXML.xml' 

... 

NSTask *task = [[NSTask alloc] init]; 

[task setLaunchPath:@"/bin/sh"]; 

NSString *cmd = [NSString stringWithFormat: 
     @"%@ %@ %@ %@", 
     @"/usr/bin/open", 
     @"'/path/to/main app.app'", 
     @"--args", 
     @"/path/to/myXML.xml" 
]; 

[task setArguments:[NSArray arrayWithObjects:[ @"-c", cmd, nil]]; 

[task launch];