Обнаружение NSIS 32-битного процесса в Win 7 x64 - PullRequest
2 голосов
/ 18 марта 2011

У меня довольно распространенная задача для моего установщика NSIS - выяснить, запущен ли Firefox перед установкой, и попросить пользователя закрыть его. Но я еще не нашел плагин, который работает для Windows 7 x64. Я протестировал процессы, FindProcDll, nsProcess - все они не смогли обнаружить 32-битный Firefox. Буду благодарен за любые идеи, где искать дальше.

Обновление: На самом деле, я не смог обнаружить 64-битный Firefox ни с одним из этих плагинов.

Ответы [ 2 ]

0 голосов
/ 23 мая 2011

FindProcDLL отлично работал для меня на 32- и 64-битных системах.

Я пытался найти 32-битный и 64-битный процессы, и оба были в порядке.

0 голосов
/ 06 мая 2011

nsProcess прекрасно работает для меня. Похоже, что это последний обновленный список плагинов, перечисленных вами, поэтому я и протестировал его. Я использую Win 7 x64 и подтвердил в диспетчере задач, что Firefox отображается как «firefox.exe * 32»

!include nsProcess.nsh
...
${nsProcess::FindProcess} "firefox.exe" $R0
${If} $R0 == "0"
    # it's running
${EndIf}

Возможные коды возврата:

0    Success
603  Process was not currently running
604  Unable to identify system type
605  Unsupported OS
606  Unable to load NTDLL.DLL
607  Unable to get procedure address from NTDLL.DLL
608  NtQuerySystemInformation failed
609  Unable to load KERNEL32.DLL
610  Unable to get procedure address from KERNEL32.DLL
611  CreateToolhelp32Snapshot failed
...