Как программно запустить версию приложения из командной строки из командной строки? - PullRequest
0 голосов
/ 22 марта 2012

У меня есть приложение: TexturePacker. Если я нажимаю на значок приложения в папке приложения, он запускает графический интерфейс. Если я набираю «texturepacker» в терминале, он запускает версию командной строки.

Я хочу запустить версию командной строки программно! Когда я использую код ниже, он запускает графический интерфейс. Какую команду оболочки следует использовать, чтобы приложение (версия командной строки) запускалось так, как будто я набрал «текстурный упаковщик» в терминале.

NSTask *theProcess = [[NSTask alloc] init];    
[theProcess setLaunchPath:@"/usr/bin/open"];

[theProcess setArguments:[NSArray arrayWithObjects:
                                @"-a", 
                                @"/Applications/TexturePacker.app",
                                nil]];  
            // Arguments to the command: the name of the
            // Applications directory

            [theProcess launch];
            // Run the command

            [theProcess release];

Если это вопрос нуба. Приношу извинения. Я нообтастичен. : S

РЕДАКТИРОВАТЬ: выяснил часть этого. Мне нужно было указать путь к двоичному файлу внутри приложения, чтобы запустить его. Но как мне передать аргументы этому? Если я добавлю больше аргументов в массив, оболочка предполагает, что это аргумент команды open. Если я добавлю его в строку с путем к упаковщику текстур, оболочка скажет, что приложение не найдено. : S

1 Ответ

2 голосов
/ 22 марта 2012

Для запуска исполняемой программы нет необходимости использовать open.Вы можете установить путь запуска NSTask для вашего бинарного файла texturepacker, а затем вы можете установить Arguments в массив, содержащий аргументы для texturepacker:

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

[theProcess setLaunchPath:@"/path/to/texturepacker"];

// Set arguments for invoking texturepacker
[theProcess setArguments:[NSArray arrayWithObjects:
                                @"-x", 
                                @"-y",
                                @"-z",
                                nil]];

// Run the task
[theProcess launch];

[theProcess release];
...