2013-03-05 231 views
1

我正在为其中一个应用程序编写一个NSIS安装程序,这个应用程序在内部使用,安装过程正常,没有任何问题会创建所有REG密钥,并且App使用的文件夹和服务也是如此。出于某种原因,我无法理解,卸载过程不起作用。NSIS卸载程序不会删除文件/文件夹

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

#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 

回答

4

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

两个地方卸载程序在$instdir和删除$instdir\EST\ESTvnc或者,如果你想保持它在$instdir\EST\ESTvnc,删除$instdir ...

相关问题