如何以编程方式从命令行启动app的命令行版本?

时间:2012-03-22 13:37:34

标签: objective-c cocoa texturepacker

我有一个应用程序: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

1 个答案:

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