changeset:   2468:241ad9b12431
branch:      vim73
tag:         tip
user:        gpwen
date:        Mon Aug 02 10:59:39 2010 +0800
summary:     RegDeleteKeyEx() is not available on 32-bit systems.

diff --git a/src/uninstal.c b/src/uninstal.c
--- a/src/uninstal.c
+++ b/src/uninstal.c
@@ -17,6 +17,18 @@
  *		- the Vim entry in the Start Menu
  */
 
+/*
+ * RegDeleteKeyEx() is only available in 64-bit systems, the following macro
+ * will degenerate to RegDeleteKey() if compile for 32-bit system.
+ */
+#ifdef WIN3264
+#   define REG_DELETE_KEY(key, sub_key, sam, reverved) \
+        RegDeleteKeyEx((key), (sub_key), (sam), (reverved))
+#else
+#   define REG_DELETE_KEY(key, sub_key, sam, reverved) \
+        RegDeleteKey((key), (sub_key))
+#endif
+
 /* Include common code for dosinst.c and uninstal.c. */
 #include "dosinst.h"
 
@@ -89,13 +101,13 @@
     int		fail = 0;
     HKEY	kh;
 
-    if (RegDeleteKeyEx(HKEY_CLASSES_ROOT, "CLSID\\{51EEE242-AD87-11d3-9C1E-0090278BBD99}\\InProcServer32",
+    if (REG_DELETE_KEY(HKEY_CLASSES_ROOT, "CLSID\\{51EEE242-AD87-11d3-9C1E-0090278BBD99}\\InProcServer32",
 		KEY_WOW64_64KEY, 0) != ERROR_SUCCESS)
 	++fail;
-    if (RegDeleteKeyEx(HKEY_CLASSES_ROOT, "CLSID\\{51EEE242-AD87-11d3-9C1E-0090278BBD99}",
+    if (REG_DELETE_KEY(HKEY_CLASSES_ROOT, "CLSID\\{51EEE242-AD87-11d3-9C1E-0090278BBD99}",
 		KEY_WOW64_64KEY, 0) != ERROR_SUCCESS)
 	++fail;
-    if (RegDeleteKeyEx(HKEY_CLASSES_ROOT, "*\\shellex\\ContextMenuHandlers\\gvim",
+    if (REG_DELETE_KEY(HKEY_CLASSES_ROOT, "*\\shellex\\ContextMenuHandlers\\gvim",
 		KEY_WOW64_64KEY, 0) != ERROR_SUCCESS)
 	++fail;
     if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved", 0,
@@ -107,10 +119,10 @@
 	    ++fail;
 	RegCloseKey(kh);
     }
-    if (RegDeleteKeyEx(HKEY_LOCAL_MACHINE, "Software\\Vim\\Gvim",
+    if (REG_DELETE_KEY(HKEY_LOCAL_MACHINE, "Software\\Vim\\Gvim",
 		KEY_WOW64_64KEY, 0) != ERROR_SUCCESS)
 	++fail;
-    if (RegDeleteKeyEx(HKEY_LOCAL_MACHINE, "Software\\Vim",
+    if (REG_DELETE_KEY(HKEY_LOCAL_MACHINE, "Software\\Vim",
 		KEY_WOW64_64KEY, 0) != ERROR_SUCCESS)
 	++fail;
 
@@ -127,25 +139,25 @@
 {
     int		fail = 0;
 
-    if (RegDeleteKeyEx(HKEY_CLASSES_ROOT, "Applications\\gvim.exe\\shell\\edit\\command",
+    if (REG_DELETE_KEY(HKEY_CLASSES_ROOT, "Applications\\gvim.exe\\shell\\edit\\command",
 		KEY_WOW64_64KEY, 0) != ERROR_SUCCESS)
 	++fail;
-    if (RegDeleteKeyEx(HKEY_CLASSES_ROOT, "Applications\\gvim.exe\\shell\\edit",
+    if (REG_DELETE_KEY(HKEY_CLASSES_ROOT, "Applications\\gvim.exe\\shell\\edit",
 		KEY_WOW64_64KEY, 0) != ERROR_SUCCESS)
 	++fail;
-    if (RegDeleteKeyEx(HKEY_CLASSES_ROOT, "Applications\\gvim.exe\\shell",
+    if (REG_DELETE_KEY(HKEY_CLASSES_ROOT, "Applications\\gvim.exe\\shell",
 		KEY_WOW64_64KEY, 0) != ERROR_SUCCESS)
 	++fail;
-    if (RegDeleteKeyEx(HKEY_CLASSES_ROOT, "Applications\\gvim.exe",
+    if (REG_DELETE_KEY(HKEY_CLASSES_ROOT, "Applications\\gvim.exe",
 		KEY_WOW64_64KEY, 0) != ERROR_SUCCESS)
 	++fail;
-    if (RegDeleteKeyEx(HKEY_CLASSES_ROOT, ".htm\\OpenWithList\\gvim.exe",
+    if (REG_DELETE_KEY(HKEY_CLASSES_ROOT, ".htm\\OpenWithList\\gvim.exe",
 		KEY_WOW64_64KEY, 0) != ERROR_SUCCESS)
 	++fail;
-    if (RegDeleteKeyEx(HKEY_CLASSES_ROOT, ".vim\\OpenWithList\\gvim.exe",
+    if (REG_DELETE_KEY(HKEY_CLASSES_ROOT, ".vim\\OpenWithList\\gvim.exe",
 		KEY_WOW64_64KEY, 0) != ERROR_SUCCESS)
 	++fail;
-    if (RegDeleteKeyEx(HKEY_CLASSES_ROOT, "*\\OpenWithList\\gvim.exe",
+    if (REG_DELETE_KEY(HKEY_CLASSES_ROOT, "*\\OpenWithList\\gvim.exe",
 		KEY_WOW64_64KEY, 0) != ERROR_SUCCESS)
 	++fail;
 
@@ -302,7 +314,7 @@
 delete_uninstall_key(void)
 {
 #ifdef WIN3264
-    RegDeleteKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Vim " VIM_VERSION_SHORT,
+    REG_DELETE_KEY(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Vim " VIM_VERSION_SHORT,
 	    KEY_WOW64_64KEY, 0);
 #else
     FILE	*fd;

