卸载后,该过程仍显示为正在运行,并且使用NSIS也无法正确清除Program Files文件夹中的文件

时间:2019-03-04 13:46:00

标签: nsis

即使我卸载了安装程序,该进程(apcsystray.exe)仍在任务管理器中显示为正在运行。并且(apcsystray.exe,drvutil.dll,pdcdll.dll,res.dll,UpsControl.dll,UpsDevice.dll)文件仍显示在Program Files文件夹中。

我正在使用KillProcDLL :: KillProc“ apcsystray.exe”杀死进程“ 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

0 个答案:

没有答案