2011-03-17 4 views
3

설치가 시작되기 전에 사용자에게 메시지를 보낼 수 있도록 특정 프로세스가 실행 중인지 확인하기 위해 "스크립트 결과"요구 사항을 사용하려고합니다. 내 스크립트는 실패의 경우 1을 반환하고 성공한 경우 0을 반환하는 셸 스크립트입니다. 내가 가지고있는 문제는 반환 값에 관계없이 설치 프로그램의 흐름이이를 실패로 해석하고 있다는 것입니다. 놀랍도록 간단한 스크립트를 사용하지 않습니다.PackageMaker "스크립트 결과"요구 사항이 절대 전달되지 않습니다

#!/bin/bash 
echo "script starting">> /tmp/myfile 
true 

(에코는 스크립트가 실제로 실행되고 있음을 나타냅니다.) 마지막 줄을 많은 것들 (exit 0, exit 1, "true", "TRUE")로 바꾸려고 시도했지만 테스트를 통과하지 못했습니다.

또한이 요구 사항을 활성화 할 때 distribution.dist에 추가되는 다음 JavaScript 코드를 발견했습니다.

<installation-check script="pm_install_check();"/> 
<script>function pm_install_check() { 
    if(!(system.run('path/to/script/myscript.sh') == true)) { 
     my.result.title = 'Title'; 
     my.result.message = 'Message'; 
     my.result.type = 'Fatal'; 
     return false; 
    } 
    return true; 
} 
</script> 

내가 말할 수있는 한 if 문에서 표현식은 true로 평가되지 않습니다. 그래서, 저는 이것이 제 문제라고 가정하고 있습니다. 이 코드는 PackageMaker에 의해 생성 되었기 때문에 나는이 문제를 해결하는 방법을 모른다.


업데이트

나는이 PackageMaker의 버그라는 인상을 작업하기로 결정하고, 가까운 해결 방법을 생각했습니다. 오히려 요구 사항 "스크립트의 결과"를 사용하는 것보다, 내가 가리킬 때 내 유일한 문제는이에만 작동되는 요구 사항은 "자바 스크립트의 결과"를 사용하고, 자바 스크립트 지금

function my_check() { 
    code = system.run('path/to/script/myscript.sh'); 
    return code == 0; 
} 

같은 모습을 기능을 내장 내 스크립트 절대 경로를 통해. 분명히 이것은 설치 프로그램에 문제를 야기합니다.

답변

2

글쎄,이 질문에 대한 정확한 대답은 아니지만 결국 내 문제에 대한 해결책이되었습니다. Packages이라고하는이 프리웨어 패키징 유틸리티는 "스크립트 결과"기능을 지원하고 경로를 올바르게 처리합니다. 불행히도 패키지는 OS 10.5 이상에서만 호환됩니다. 10.4를 지원하기 위해 PackageMaker를 사용하여 별도의 설치 프로그램을 만들었지 만 "스크립트 결과"요구 사항을 건너 뜁니다.

7

너무 늦게 당신을 위해 아마하지만 난이 어딘가에 문서화해야 같은 느낌.

저는 오늘 아침 대부분의 답변을 찾아 보았습니다. 길고 짧게 나는 일반적인 bash 스크립팅을 보았고 스크립트로 호출 된 스크립트에서 값을 반환하는 것에 대한 정보를 발견했습니다. 수행 방법은 다음과 같습니다.

exit 0 (성공한 경우)을 사용하는 곳에서는 $(exit 1)을 사용하십시오.

당신이 exit 1을 기대로

$(exit 0)으로 교체해야합니다.

나는 그것을 거꾸로이고 난 정말 그 뒤에 추론을 얻을 수 있지만, 일부 실험 후 내가 찾은 무엇 것을하지 않는 것이 알고 있습니다.

+1

감사합니다. 케빈! 그것은 나에게는 너무 늦었습니다 :-)하지만 확실히 다른 사람에게는 도움이되기를 바랍니다. – evanflash

+1

감사합니다. 도와 줬어. -- 다른 사람. – elsamuko

관련 문제