2016-10-13 6 views
0

설치 제거 및 설치를 위해 두 개의 msiexec 명령이있는 jenkins 작업에서 일괄 처리 스크립트를 실행하려고합니다. 젠킨스 작업이 REPO를 복제 한 다음 스크립트를
두 개의 msiexec 명령을 사용하여 일괄 처리 스크립트를 실행하면 첫 번째 명령을 완료 한 직후에 마무리 스크립트가 발생합니다.

젠킨스 초에 msiexec의 작업 시작 실행 (설치) 명령을 실행할 수 있도록
이 스크립트는 GitHub의에 있지만 그것은 내가 메시지를 볼 수 있습니다 작업 콘솔을 열고 "프로세스를 immediately.If을 종료 유출 된 파일 설명자. " 및 작업 상태 : 성공


나는 jenkins없이 cmd를 통해 동일한 스크립트를 실행해도 정상적으로 작동합니다.

setlocal enabledelayedexpansion 
IF EXIST "directory path" (
msiexec /uninstall {Product ID} /qb 
) 
pushd \\shared drive 
IF EXIST "directory path" (
msiexec /i "path to exefile" /qb 
popd 
exit 0 
) 
ELSE (
ECHO Setup Not Found in current 
exit 0 
) 
+0

명령 구조가 잘못 되었기 때문에 표시하지 않는 것이 없으면 cmd에서 작동하는 것이 이상합니다. [여기] (http://pastebin.com/WVJcJfUe) – Compo

+0

아니 추가 물건이 없다, 설치/제거를 위해이 두 명령을 사용하고 있습니다 예를 들어 내가 잘 작동 cmd를 통해 복제 후 동일한 스크립트를 실행하면 예 – Shah

+0

않았다 당신은 내가 링크에 게시 한 두 가지 예를 보았습니다. 둘 중 어떤 것도 게시하지 않았고 그 중 하나가 맞을 수 있습니다. 올바른 구조 디버깅이 불가능하고 어느 것이 불가능한 지 알 수 없습니다. – Compo

답변

0

키워드 다른 공백 문자에 의해 분리 ) IF 조건 분기 TRUE )으로 동일 선상에 있어야한다. 별도의 줄에있는 ELSE은 실행할 콘솔 응용 프로그램의 이름과 같이 해석됩니다.

if exist "directory path" (
    %SystemRoot%\System32\msiexec.exe /uninstall {Product ID} /qb 
) 
pushd "\\ComputerName\ShareName\" 
if exist "directory path" (
    %SystemRoot%\System32\msiexec.exe /i "path to exefile" /qb 
) else (
    echo Setup not found in %CD%. 
) 
popd 
exit /B 0 

힌트

: 배치 파일 제거하거나 echo off를 포함하는 모든 행을 주석 후 더블 클릭하여 명령 프롬프트 창 내에서가 아니라에서 실행 디버깅하십시오. EXIT/B없이 사용하지 마십시오. 결과는 항상 현재 명령 프로세스를 종료 할 때뿐만 아니라 현재 배치 파일을 처리하지 않고 종료 할 때뿐입니다. 배치 파일에 EXIT이없고 /B이 없으면 배치 파일을 디버깅하는 것이 어려워지고 배치 파일을 실행하는 동안 출력되는 오류 메시지를이 경우 볼 수 없으므로이 명령은 실제로 배치 파일 실행시 실행됩니다.