Victor_VG

Tracker Mod | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Aniskin Там чуть интереснее - файлы блокируются приложением, и его можно вычислить по хендлам, но сам стуб по скрипту перезапустит только оболочку, а иные программы нужно детектировать вручную и вручную же перезапускать. В NSIS эта задача присутствует, только решается в чём-то проще: Function syserrm StrCmp $lng 1049 +1 +2 MessageBox MB_OK|MB_ICONSTOP "Извините, но возникла системная ошибка с кодом $R0 и Установка прервана.$\nПожалуйста, обратитесь к Администратору для решения этой проблемы." IDOK +2 MessageBox MB_OK|MB_ICONSTOP "Sorry, but detected is system error code is $R0 and Setup is aborted.$\nPlease, take to Administrator for resolving this problem." IDOK +1 Quit FunctionEnd Function acessd StrCmp $lng 1049 +1 +2 MessageBox MB_OK|MB_ICONSTOP "Извините, но у Вас нет прав для продолжения Установки.$\nПожалуйста, обратитесь к Администратору для предоставления Вам необходимых прав." IDOK +2 MessageBox MB_OK|MB_ICONSTOP "Sorry, but You don't have rights for continue Setup.$\nPlease, take to Administrator for get You needed rights." IDOK +1 Quit FunctionEnd Function manterm StrCmp $lng 1049 +1 +2 MessageBox MB_OK|MB_ICONSTOP "Извините, но некоторые процессы не удалось завершить$\nавтоматически. Пожалуйста, завершите их вручную ипользуя$\nДиспетчер задач и запустите Установку снова." IDOK +2 MessageBox MB_OK|MB_ICONSTOP "Sorry, but some proces is automatical terminate is$\nfiled. Please, close this program manually using Task Manager$\nand run Setup again if You whole continue." IDOK +1 Quit FunctionEnd Function .onInit .... ${nsProcess::FindProcess} "<appexe>.exe" $R0 IntCmp $R0 603 +2 +1 lblerr ${nsProcess::CloseProcess} "<appexe>.exe" $R0 StrCmp $R0 0 end StrCmp $R0 603 end lblerr: StrCmp $R0 605 +6 IntCmp $R0 606 +4 +1 +4 StrCmp $R0 601 +5 StrCmp $R0 602 +5 Call syserrm Call unsuppm Call acessd Call manterm end: ${nsProcess::Unload} ..... FunctionEnd .............. Section -post ...... NsExec::Exec "<appexe>.exe" ..... SectionEnd ........... по крайней мере этот код с момента как я его написал и отладил несколько лет назад до сих пор не дал ни одной ошибки, а терминатор легко ставится по месту....
---------- Жив курилка! (Р. Ролан, "Кола Брюньон") Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti |
|