我有一个应用程序:TexturePacker。 如果我单击应用程序文件夹中的应用程序图标,它将启动gui。 如果我在终端中键入“texturepacker”,它将运行命令行版本。
我想以编程方式启动命令行版本!当我使用下面的代码时,它会启动GUI。应该使用什么shell命令,以便应用程序(命令行版本)启动,就好像我在终端中输入“texture packer”一样。
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
编辑:找出部分内容。我需要在应用程序内指定二进制文件的路径才能启动它。但是我如何传递参数呢?如果我向数组添加更多参数,shell假定它是“open”命令的参数。如果我将它添加到带有纹理包装器路径的字符串中,则shell表示找不到应用程序。 :S答案 0 :(得分:2)
要启动可执行程序,不需要使用open
。您可以将NSTask启动路径设置为texturepacker二进制文件,然后将setArguments设置为包含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];