2013-03-05 270 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 ...

相關問題