nsis: Make sure the registry keys exist
authorCyrill Gorcunov <gorcunov@gmail.com>
Wed, 6 Jul 2011 20:56:35 +0000 (00:56 +0400)
committerCyrill Gorcunov <gorcunov@gmail.com>
Wed, 6 Jul 2011 20:56:35 +0000 (00:56 +0400)
It was reported on nasm forum (http://forum.nasm.us/index.php?topic=1013.0)
that if uninstallation procedure get stopped (for any reason) in a middle
leading to read empty registry values an attempt to remove arbitrary
files might happen. So make sure there are some sane values in registry.

N.B: People, if you find some bug in nasm, don't write to forum, file
bug directly in bugzilla, if it's not a bug we simply close it, otherwise
we might miss serious problems like this one!

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
nasm.nsi

index 48feaa9..3801d19 100644 (file)
--- a/nasm.nsi
+++ b/nasm.nsi
@@ -183,11 +183,23 @@ SectionEnd
 Section "Uninstall"
     ;
     ; files on HDD
-    RMDir /r /rebootok "$INSTDIR"
+    IfFileExists "$INSTDIR" +3 +1
+        MessageBox MB_OK "No files found, aborting."
+        Abort
+        RMDir /r /rebootok "$INSTDIR"
+    ;
+    ; Links
     Delete /rebootok "$DESKTOP\${PRODUCT_SHORT_NAME}.lnk"
     ;
-    ; Start Menu folder
+    ; Start menu folder
     ReadRegStr $0 HKCU Software\${PRODUCT_SHORT_NAME} "lnk"
+    StrCmp $0 0 +1 +3
+        MessageBox MB_OK "Invalid path to a lnk file, aborting"
+        Abort
+    IfFileExists $0 +3 +1
+        MessageBox MB_OK "No lnk files found, aborting."
+        Abort
+        RMDir /r /rebootok "$INSTDIR"  
     Delete /rebootok "$0\*"
     RMDir "$0"
     DeleteRegKey /ifempty HKCU "Software\${PRODUCT_SHORT_NAME}"