NSIS卸载程序不会删除文件/文件夹

时间:2013-03-05 16:25:37

标签: nsis delete-file

我正在为我工​​作的公司内部使用的其中一个应用程序编写NSIS安装程序,安装过程正常,没有问题创建所有REG密钥,文件文件夹和服务也是如此,该应用程序使用。由于某种原因,我无法理解,卸载过程不起作用。

应用程序创建的服务被删除,注册表项,最简单的部分,文件本身也是如此,我无法通过卸载程序删除它们!

#Includes
!include "x64.nsh"
#Defines and Installer Properties
Outfile "ESTvnc Installer.exe"
Name ESTvnc 
Icon "${NSISDIR}\contrib\graphics\icons\VNCON.ico"
#Detect OS Version
Function .onInit
    StrCpy $instdir $PROGRAMFILES
    ${If} ${RunningX64}
        StrCpy $instdir $PROGRAMFILES32
    ${EndIf}
FunctionEnd

section
    SetShellVarContext all  
    CreateDirectory $instdir\EST\ESTvnc
    setOutPath $instdir\EST\ESTvnc
    File /r installfiles\*
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ESTvnc\" \
                 "DisplayName" "ESTvnc"
    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ESTvnc"\
                 "UninstallString" "$instdir\EST\ESTvnc\uninstaller.exe"
    writeUninstaller $instdir\EST\ESTvnc\uninstaller.exe
    ExecWait '"$instdir\EST\estvnc\estvnc.exe" -install'
sectionEnd

section "Uninstall"
    SetShellVarContext all  
    SimpleSC::StopService "ESTVNC" 1 30
    pop $0
    SimpleSC::StopService "ESTVNCSR" 1 30
    pop $0
    SimpleSC::RemoveService "ESTVNC"
    SimpleSC::RemoveService "ESTVNCSR"    
    RMDir /r "$instdir\EST\ESTvnc"  
    Delete $instdir\EST\ESTvnc\uninstaller.exe  
    DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ESTvnc"  
sectionEnd

1 个答案:

答案 0 :(得分:5)

在卸载程序中,$instdir是卸载程序所在的目录!

将卸载程序放在$instdir并删除$instdir\EST\ESTvnc,或者如果要将其保留在$instdir\EST\ESTvnc中,请删除$instdir ...