2017-05-08 8 views
0

NSIS 설치 프로그램이 실행되는 동안 배경에있는 다른 실행중인 프로세스를 찾는 기능이 필요합니다. 이 다른 프로세스는 새 설치 프로그램을 완료하기 전에 종료하고 제거해야합니다.NSIS 실행중인 백그라운드 프로세스 감지

나는 프로세스를 찾기 위해 FindProc 플러그인을 사용하고 프로세스를 죽이기 위해 KillProc 플러그인을 사용해 보았습니다. 각 플러그인은 아무 것도 반환하지 않습니다.

KillProcDLL::KillProc "MyApplication.exe"

FindProcDLL::FindProc "MyApplication.exe"는 또한 nsProcess 플러그인을 시도하고도 작동하지 않습니다.

nsProcess::_KillProcess "MyApplication.exe" $R0

그것은 사람들이 이러한 플러그인과 성공을하지만 백그라운드 프로세스 함께 할 수있는 뭔가가하지 않는 한 내 시나리오에서 작동하지 않는 이유를 모르는 것 같다.

도움을 주시면 감사하겠습니다.

+0

이 애플리케이션의 특별한 점은 무엇입니까? 64 비트? 다른 사용자로 실행 중입니까? 서비스? – Anders

+0

32 비트 응용 프로그램입니다. 그것은 그것을 제거하려고 시도하는 동일한 사용자로 실행 중입니다. 시스템 트레이에서 실행되는 WPF 응용 프로그램이므로 실제 윈도우가 존재하지 않을 가능성이 있습니다. –

+0

트레이 아이콘이있는 경우 창이 있어야하지만 플러그인에 문제가 없어야합니다. Notepad.exe와 같은 다른 응용 프로그램에서도 작동합니까? – Anders

답변

0

내가 시도한 NSIS 플러그인이 없습니다. 그들은 모두 결과를 반환하지 않습니다 (심지어 0 또는 음수가 아님). 나는 다음 명령을 사용하여 끝났고 문제없이 작동했습니다. 그것은 간단히 명령 창을 나타납니다,하지만 난 내 시나리오에서이 다른 사람 도움

ExecWait "TaskKill /IM MyApplication.exe /F"

희망이 괜찮입니다.

0

정확히 어떤 NSIS 버전을 사용하는지 알지 못하거나 유니 코드 또는 ANSI 설치 프로그램을 컴파일하는 경우 정확히 무슨 일이 일어나는지 말하기가 어렵습니다.

원본 버전 from the wiki은 32 비트 프로세스에서만 작동하며 hnedka 버전도 64 비트 프로세스를 지원해야합니다.

hnedka 버전과 NSIS v2.x를 사용하는 경우 ANSI 폴더에서 \ NSIS \ Plugins로 플러그인을 추출해야합니다. NSIS v3를 사용하고 있다면 ANSI 폴더에서 \ NSIS \ Plugins \ x86-ansi로, 유니 코드 폴더에서 \ NSIS \ Plugins \ x86-unicode로 압축을 풀어야합니다.

hnedka 버전이 NSIS v3에서 작동하는지 확인할 수 있습니다. $ R0이 비어 있다면 잘못된 플러그인 .dll을 잘못된 폴더에 추출한 것입니다.