После удаления процесс все еще отображается как запущенный, а также файлы не очищаются должным образом в папке Program Files с помощью NSIS - PullRequest
0 голосов
/ 04 марта 2019

Даже после удаления установщика процесс (apcsystray.exe) отображается как запущенный в диспетчере задач.А также (apcsystray.exe, drvutil.dll, pdcdll.dll, res.dll, UpsControl.dll, UpsDevice.dll) файлы по-прежнему отображаются в папке Program Files.

Я убиваю процесс "apcsystray.exe "using KillProcDLL :: KillProc" apcsystray.exe "

А также удаление файлов из папки Program Files с помощью следующих операторов:

Delete "$INSTDIR\drvutil.dll" 
Delete "$INSTDIR\apcsystray.exe"
Delete "$INSTDIR\pdcdll.dll"
Delete "$INSTDIR\res.dll"
Delete "$INSTDIR\UpsControl.dll"
Delete "$INSTDIR\UpsDevice.dll"

Я использую различные способызавершите процесс, а также удалите папку INSTDIR и ее файлы различными способами, как показано ниже:

Пожалуйста, укажите, что мне здесь не хватает и что не так с моим кодом:

Ниже приведен фрагмент кода:

   Function un.RMDirUP
             !define RMDirUP '!insertmacro RMDirUPCall'

             !macro RMDirUPCall _PATH
                    push '${_PATH}'
                    Call un.RMDirUP
             !macroend

             ClearErrors

             Exch $0
             ;DetailPrint "ASDF - $0\.."
             RMDir "$0\.."

             IfErrors Skip
             ${RMDirUP} "$0\.."
             Skip:

             Pop $0

    FunctionEnd

    Function un.onInit
    MessageBox MB_YESNO|MB_ICONEXCLAMATION "Are you sure you want to uninstall $(^Name)?" /SD IDYES IDYES NoAbort
           Abort 
        NoAbort:
    FunctionEnd


    Section "Uninstall"

      DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\EMR\MILLINNIUM"
      DeleteRegKey HKLM "SOFTWARE\EMR\MILLINNIUM"
      DeleteRegKey HKLM "SOFTWARE\EMR"

      DeleteRegKey HKCU "SOFTWARE\EMR"

      DeleteRegKey HKU ".DEFAULT\SOFTWARE\EMR"

        FindProcDLL::FindProc "apcsystray.exe" 
        ${if} $R0 == 1
        KillProcDLL::KillProc "apcsystray.exe"
        ${EndIf}

        Delete "$INSTDIR\drvutil.dll" 
        Delete "$INSTDIR\apcsystray.exe"

        Delete "$INSTDIR\pdcdll.dll"

        Delete "$INSTDIR\res.dll"
        Delete "$INSTDIR\UpsControl.dll"
        Delete "$INSTDIR\UpsDevice.dll"

      Delete $INSTDIR\uninstall.exe

      RMDir "$INSTDIR\APC\PowerChute Personal Edition"
      RMDir "$INSTDIR\APC"
      RMDir "$INSTDIR"
      RMDir /r "$INSTDIR"
      ${RMDirUP} "$INSTDIR"
     RMDir /r /REBOOTOK $INSTDIR

    SectionEnd
...