Old 16th May 2007, 17:20   #1
selanac
Junior Member
 
Join Date: May 2007
Posts: 2
DeleteRegKey problem

I'm attempting to clean up previous installations detected in the config section. If detected I attempt to clean up a particular registry entry with:

DeleteRegKey HKCU "Environment\E3ROOT"

This fails and I don't know why. The entry does in fact exist, and I have admin priveleges. Is there a way to get more details on the cause of the error?

Script:

# Auto-generated by EclipseNSIS Script Wizard
# Apr 13, 2007 4:02:47 PM

Name E3

# Defines
!define REGKEY "SOFTWARE\$(^Name)"
!define VERSION 4.0
!define COMPANY UC
!define URL ""

# MUI defines
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_FINISHPAGE_NOAUTOCLOSE
!define MUI_STARTMENUPAGE_REGISTRY_ROOT HKLM
!define MUI_STARTMENUPAGE_NODISABLE
!define MUI_STARTMENUPAGE_REGISTRY_KEY ${REGKEY}
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME StartMenuGroup
!define MUI_STARTMENUPAGE_DEFAULTFOLDER E3
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
!define MUI_UNFINISHPAGE_NOAUTOCLOSE

# Included files
!include Sections.nsh
!include MUI.nsh

# Variables
Var StartMenuGroup

# Installer pages
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuGroup
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES

# Installer languages
!insertmacro MUI_LANGUAGE English

# Installer attributes
OutFile setup.exe
InstallDir $PROGRAMFILES\E3
CRCCheck on
XPStyle on
ShowInstDetails show
VIProductVersion 4.0.0.0
VIAddVersionKey ProductName E3
VIAddVersionKey ProductVersion "${VERSION}"
VIAddVersionKey CompanyName "${COMPANY}"
VIAddVersionKey FileVersion ""
VIAddVersionKey FileDescription ""
VIAddVersionKey LegalCopyright ""
InstallDirRegKey HKLM "${REGKEY}" Path
ShowUninstDetails show

# Installer sections
Section -Main SEC0000
SetOutPath $INSTDIR\standalone
SetOverwrite on
File /r deploy\standalone\*
WriteRegStr HKLM "${REGKEY}\Components" Main 1
SectionEnd

Section -post SEC0001
WriteRegStr HKLM "${REGKEY}" Path $INSTDIR
SetOutPath $INSTDIR
WriteUninstaller $INSTDIR\uninstall.exe
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
SetOutPath $SMPROGRAMS\$StartMenuGroup
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name).lnk" $INSTDIR\uninstall.exe
!insertmacro MUI_STARTMENU_WRITE_END
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayName "$(^Name)"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayVersion "${VERSION}"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" Publisher "${COMPANY}"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayIcon $INSTDIR\uninstall.exe
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" UninstallString $INSTDIR\uninstall.exe
WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoModify 1
WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoRepair 1
SectionEnd

Section -config SEC0002
SetOutPath $INSTDIR\standalone
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Case Manager .lnk" $INSTDIR\standalone\E3CaseManager.cmd
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Utility Window .lnk" $INSTDIR\standalone\E3UtilityWindow.cmd
CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Admin Tool .lnk" $INSTDIR\standalone\E3AdminTool.cmd
SetOutPath $PROFILE\e3.config
IfFileExists $PROFILE\e3.config\e3commonPrefs.xml 0 +4
MessageBox MB_OK "Detected previous E3 installation... Cleaning up"
Delete $PROFILE\e3.config\e3commonPrefs.xml
DeleteRegKey HKCU "Environment\E3ROOT"
IfErrors 0 +2
MessageBox MB_OK "Error in DeleteRegKey"
ClearErrors
FileOpen $0 $PROFILE\e3.config\e3commonPrefs.xml w
FileWrite $0 '<?xml version="1.0" encoding="UTF-8" standalone="no"?>$\n'
FileWrite $0 '<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">$\n'
FileWrite $0 "<properties>$\n"
FileWrite $0 "<comment>E3 Common Preferences</comment>$\n"
FileWrite $0 '<entry key="E3Home">'
FileWrite $0 $INSTDIR
FileWrite $0 "\standalone"
FileWrite $0 "</entry>$\n"
FileWrite $0 "</properties>$\n"
FileClose $0
SectionEnd

# Macro for selecting uninstaller sections
!macro SELECT_UNSECTION SECTION_NAME UNSECTION_ID
Push $R0
ReadRegStr $R0 HKLM "${REGKEY}\Components" "${SECTION_NAME}"
StrCmp $R0 1 0 next${UNSECTION_ID}
!insertmacro SelectSection "${UNSECTION_ID}"
GoTo done${UNSECTION_ID}
next${UNSECTION_ID}:
!insertmacro UnselectSection "${UNSECTION_ID}"
done${UNSECTION_ID}:
Pop $R0
!macroend

# Uninstaller sections
Section /o un.Main UNSEC0000
RmDir /r /REBOOTOK $INSTDIR\standalone
DeleteRegValue HKLM "${REGKEY}\Components" Main
SectionEnd

Section un.post UNSEC0001
DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)"
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Case Manager .lnk"
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Utility Window .lnk"
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Admin Tool .lnk"
Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name).lnk"
Delete /REBOOTOK $INSTDIR\uninstall.exe
Delete $PROFILE\e3.config\e3commonPrefs.xml
DeleteRegKey /ifempty HKCU "Environment\E3ROOT"
DeleteRegKey HKCU "Environment\MODTRAN_DATA"
DeleteRegKey HKCU "Environment\MODTRAN5_DATA"
DeleteRegValue HKLM "${REGKEY}" StartMenuGroup
DeleteRegValue HKLM "${REGKEY}" Path
DeleteRegKey /IfEmpty HKLM "${REGKEY}\Components"
DeleteRegKey /IfEmpty HKLM "${REGKEY}"
RmDir /REBOOTOK $SMPROGRAMS\$StartMenuGroup
RmDir /REBOOTOK $INSTDIR
SectionEnd

# Installer functions
Function .onInit
InitPluginsDir
FunctionEnd


# Uninstaller functions
Function un.onInit
ReadRegStr $INSTDIR HKLM "${REGKEY}" Path
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuGroup
!insertmacro SELECT_UNSECTION Main ${UNSEC0000}
FunctionEnd
selanac is offline   Reply With Quote
Old 16th May 2007, 17:25   #2
kichik
M.I.A.
[NSIS Dev, Mod]
 
kichik's Avatar
 
Join Date: Oct 2001
Location: Israel
Posts: 11,343
Seems like E3ROOT is a value and not a key. You should use DeleteRegValue.
code:
DeleteRegValue HKCU Environment E3ROOT

NSIS FAQ | NSIS Home Page | Donate $
"I hear and I forget. I see and I remember. I do and I understand." -- Confucius
kichik is offline   Reply With Quote
Old 16th May 2007, 18:22   #3
selanac
Junior Member
 
Join Date: May 2007
Posts: 2
kichik,
Thanks alot, that was it. Pardon my ignorance, it's my first attempt with NSIS, chaulk it up to newbee-ism.
selanac is offline   Reply With Quote
Reply
Go Back   Winamp & Shoutcast Forums > Developer Center > NSIS Discussion

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump