Posso eseguire un eseguibile da una directory locale conosciuta all'interno di un'app Cocoa in questo modo:
// Run the server.
NSTask *task = [[NSTask alloc] init];
NSPipe *pipe = [NSPipe pipe];
NSString* scriptPath = @"/Users/example/Server/runServerExecutable.sh";
[task setLaunchPath: @"/bin/sh"];
[task setArguments: [NSArray arrayWithObjects: scriptPath, nil]];
[task setStandardOutput: pipe];
[task launch];
Qualcuno potrebbe aiutarmi su queste domande?
- Dove dovrei includere i file eseguibili / di script / di testo nel pacchetto di app?
- Come modificare
scriptPath
eseguire lo script al livello di programmazione?
Molte grazie!
risposte:
0 per risposta № 1Trascina e rilascia i file di script / di testo sul tuo xcodeproject -> Project Navigator, in modo che venga aggiunto al tuo progetto. Costruisci il progetto. Apri il pacchetto, sarai in grado di vedere il file aggiunto nella directory delle risorse.
Ora, il codice riportato di seguito ti aiuterà a ottenere il file dalle risorse. Per fare un esempio, ho aggiunto uno script con il nome "OpenSafari.sh"
NSTask *temp = [[NSTask alloc] init];
[temp setLaunchPath:@"/bin/sh"];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"OpenSafari" ofType:@"sh"];
NSArray *tempargs = [NSArray arrayWithObjects:filePath,nil];
[temp setArguments:tempargs];
NSPipe *temppipe = [NSPipe pipe];
[temp setStandardOutput:temppipe];
NSPipe *errorPipe = [NSPipe pipe];
[temp setStandardError:errorPipe];
[temp launch];
NSData *data = [[temppipe fileHandleForReading] readDataToEndOfFile];
NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSData *dataErr = [[errorPipe fileHandleForReading] readDataToEndOfFile];
NSString *resultErr = [[NSString alloc] initWithData:dataErr encoding:NSUTF8StringEncoding];
Spero che questo ti aiuti!