即使我卸载了安装程序,该进程(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