Domanda

Ho un'applicazione che può importare un file XML tramite questo comando terminale:

Open/Path/to/main app.app --args myxml.xml

Funziona alla grande senza problemi. E ho usato AppleScript per avviare questo comando tramite Shell e funziona altrettanto bene. Eppure, quando prova a utilizzare il lanciatore NSTASK di Cocoa usando questo codice:

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];

Le applicazioni si avvieranno sulla schermata iniziale e quindi si crogheranno quando si fa clic sul pulsante successivo o quando si tenta di chiudere la finestra. Ho provato a usare nSapplescript con questo:

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];

Questo lancerà il programma e anche questo si bloccherà e riceverò questo errore nella mia finestra di debug Xcode:

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.

Quindi, con la ricerca, mi è venuta in mente questo:

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

NSDictionary *errorInfo;

[script executeAndReturnError:&errorInfo];

Ma questo provoca gli stessi risultati dell'ultimo comando. Qualche idea su cosa causa questo incidente?

È stato utile?

Soluzione

Dai un'occhiata qui Per correggere gli errori di Adobe. Non sono sicuro che sia il problema però. In realtà non riuscivo a convincere il comando aperto per passare argomenti a nulla in modo da non poter esaminare il tuo problema.

Altri suggerimenti

Dai un altro tentativo a Nstask solo con percorsi completi:

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];

Un altro approccio sarebbe quello di dare a Nstask la seguente riga di comando:

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];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top