2017-04-20 9 views
0

NSIS의 새비지, 현재 응용 프로그램이 작동하는지 여부를 확인하기 위해 nsProcess 플러그인을 구현하려고했습니다! 예제 코드에서 같은 것을 구현하는 데 성공했지만, 프로젝트에서 같은 것을 구현하려고 시도했을 때, 아래 이미지 메시지 상자에 표시된대로 예상하지 못한 결과가 발생했습니다! 왜 내가 이걸 얻는거야 ?? 제발 날 안내해 줄 수 있어요. 사전에 도와 주셔서 감사합니다 :)NSIS : NsProcess Unexpected Output

프로젝트 Snipet!

!include "MUI2.nsh" 
     ;!include "MUI.nsh" 
     !include LogicLib.nsh 
     !include "StrFunc.nsh" 
     !include "FileFunc.nsh" 
     !include WinMessages.nsh 
     !include "nsProcess.nsh" 
     ;!include "FindProcess.nsh" 

     #Dummy Section 
     ... 
    #EndSecton 


!macro CheckAppRunning_ _FILE _ERR 

    App_Running_Check: 
    ${nsProcess::FindProcess} "MyApp.exe" $R0 
    MessageBox MB_OK "$R0" 
    ${If} $R0 == 0 
     MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION "Please stop App.exe before continuing" /SD IDCANCEL IDRETRY App_Running_Check 
     Quit 
    ${EndIf} 

notRunning: 
!macroend 

Function .onInit 
    !insertmacro CheckAppRunning_ `MyApp.exe` $R0 
FunctionEnd 

enter image description here

$ R0는이 값을 반환합니다! 왜 ???

답변

1

이것은 ANSI 대 유니 코드 컴파일러/플러그 인 불일치 일 가능성이 큽니다.

NSIS v2를 사용하는 경우 플러그인 폴더에 .zip (타사 NSIS 포크를 사용하지 않는 경우 ANSI)의 올바른 플러그인 버전을 추출해야합니다. NSIS v3를 사용하는 경우 각 유형에 대한 플러그인 하위 폴더가 있으므로 각 하위 폴더에 올바른 플러그인을 넣었는지 확인하십시오. 유니 코드 플러그인 .dll은 대개 유니 코드 하위 폴더에 있거나 .zip 아카이브의 파일 이름에 'W'접미사가 있습니다.

+0

안녕하세요! 답장을 보내 주셔서 감사합니다. 하지만 하나의 버전 (NSIS 3.01) 만 설치되어 있기 때문에 예제 (http://nsis.sourceforge.net/NsProcess_plugin)에서 별도로 구현하면 어떻게 작동합니까? – faisal

+0

하나의 .nsi 스크립트에 '유니 코드 true'가 포함될 수 있습니다. 거짓이거나 존재하지 않는다고 말합니다. 전체 코드를 게시하지 않았기 때문에 말하기가 어렵습니다! – Anders

+0

안녕하세요, Anders, 고맙습니다. 문제는 유니 코드 플래그 때문이었습니다! 다시 한번 감사드립니다. – faisal