2012-03-22 1 views
0

응용 프로그램 : TexturePacker가 있습니다. 응용 프로그램 폴더에서 응용 프로그램 아이콘을 클릭하면 GUI가 실행됩니다. 터미널에 "texturepacker"라고 입력하면 명령 행 버전을 실행합니다.프로그래밍 방식으로 명령 줄에서 앱의 명령 줄 버전을 시작하는 방법은 무엇입니까?

프로그래밍 방식으로 명령 줄 버전을 시작하고 싶습니다. 아래 코드를 사용하면 GUI가 실행됩니다. 터미널에서 "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]; 

멍청한 질문입니다. 사과드립니다. 나는 noobtastic이다. : S

편집 : 일부분을 나타냅니다. 앱 내에서 바이너리 경로를 지정해야 앱을 시작할 수 있습니다. 그러나 어떻게 그것에 대한 논증을 전달합니까? 배열에 인수를 더 추가하면 쉘은 "열기"명령에 대한 인수로 간주합니다. 텍스처 패커에 대한 경로를 문자열에 추가하면 셸에서는 응용 프로그램을 찾을 수 없다고 말합니다. : S

+0

이 왜이 프로그램을 실행하기위한'는/usr/빈/open'을 사용하고 있습니까? 이와 같은 명령 행 프로그램을 시작하려면 NSTask 실행 경로를 texturepacker 바이너리로 설정할 수 있어야하며 setArguments를 texturepacker에 대한 인수가 포함 된 배열로 간단하게 설정할 수 있습니다. – tcovo

+0

정말로'/ usr/bin/open'을 사용하고 싶다면, 텍스처 패커 인수를 배열에 추가하여 전달할 수 있습니다. 그러나 이전 인수와 "--args"로 구분됩니다 ([open] (https://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man1/open.1.html)). 그러나 나는이 상황에서'열린'이 적절하다고 생각하지 않는다. – tcovo

+0

당신이 정확합니다! 바이너리에 직접 액세스 한 다음 인수를 전달해야합니다. 당신이 질문에 답하면 나는 그것을 정확하게 표시 할 것입니다! : D 고마워. –

답변

2

실행 프로그램을 시작하기 위해 open을 사용할 필요가 없습니다. 당신은 당신의 texturepacker 바이너리의 NSTask 발사 경로를 설정하고 있습니다 다음 수 texturepacker의 인수를 포함하는 배열을 setArguments :

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

예! 당신이 올바른지! :) –