0
0
mirror of https://github.com/vim/vim.git synced 2025-09-29 04:34:16 -04:00

Fix that uninstaller isn't found on 64-bit Windows.

This commit is contained in:
Bram Moolenaar
2010-07-31 22:03:44 +02:00
parent 7805004319
commit 760d14a55c
6 changed files with 23 additions and 33 deletions

View File

@@ -450,7 +450,7 @@ Section Uninstall
AskRemove: AskRemove:
MessageBox MB_YESNO|MB_ICONQUESTION \ MessageBox MB_YESNO|MB_ICONQUESTION \
"Remove all files in your $1\vimfiles directory? \ "Remove all files in your $1\vimfiles directory? \
$\nIf you have created something there that you want to keep, click No" IDNO Fin $\nCAREFUL: If you have created something there that you want to keep, click No" IDNO Fin
RMDir /r $1\vimfiles RMDir /r $1\vimfiles
NoRemove: NoRemove:

View File

@@ -30,10 +30,6 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
*known-bugs* *known-bugs*
-------------------- Known bugs and current work ----------------------- -------------------- Known bugs and current work -----------------------
Windows 7: installing Vim again doesn't find the previously installed Vim.
Move more common code from if_python.c and if_python3.c to if_py_both.h
Before release 7.3: Before release 7.3:
- Rename vim73 branch to default (hints: Xavier de Gaye, 2010 May 23) - Rename vim73 branch to default (hints: Xavier de Gaye, 2010 May 23)

View File

@@ -462,8 +462,8 @@ uninstall_check(int skip_question)
DWORD new_num_keys; DWORD new_num_keys;
int foundone = 0; int foundone = 0;
code = RegOpenKeyEx(HKEY_LOCAL_MACHINE, uninstall_key, 0, KEY_READ, code = RegOpenKeyEx(HKEY_LOCAL_MACHINE, uninstall_key, 0,
&key_handle); KEY_WOW64_64KEY | KEY_READ, &key_handle);
CHECK_REG_ERROR(code); CHECK_REG_ERROR(code);
for (key_index = 0; for (key_index = 0;
@@ -475,8 +475,8 @@ uninstall_check(int skip_question)
if (strncmp("Vim", subkey_name_buff, 3) == 0) if (strncmp("Vim", subkey_name_buff, 3) == 0)
{ {
/* Open the key named Vim* */ /* Open the key named Vim* */
code = RegOpenKeyEx(key_handle, subkey_name_buff, 0, KEY_READ, code = RegOpenKeyEx(key_handle, subkey_name_buff, 0,
&uninstall_key_handle); KEY_WOW64_64KEY | KEY_READ, &uninstall_key_handle);
CHECK_REG_ERROR(code); CHECK_REG_ERROR(code);
/* get the DisplayName out of it to show the user */ /* get the DisplayName out of it to show the user */
@@ -1352,14 +1352,6 @@ init_vimrc_choices(void)
} }
#if defined(WIN3264) #if defined(WIN3264)
/*
* Modern way of creating registry entries, also works on 64 bit windows when
* compiled as a 32 bit program.
*/
# ifndef KEY_WOW64_64KEY
# define KEY_WOW64_64KEY 0x0100
# endif
static LONG static LONG
reg_create_key( reg_create_key(
HKEY root, HKEY root,

View File

@@ -83,6 +83,14 @@ char *searchpath(char *name);
# define TRUE 1 # define TRUE 1
#endif #endif
/*
* Modern way of creating registry entries, also works on 64 bit windows when
* compiled as a 32 bit program.
*/
# ifndef KEY_WOW64_64KEY
# define KEY_WOW64_64KEY 0x0100
# endif
#define VIM_STARTMENU "Programs\\Vim " VIM_VERSION_SHORT #define VIM_STARTMENU "Programs\\Vim " VIM_VERSION_SHORT
int interactive; /* non-zero when running interactively */ int interactive; /* non-zero when running interactively */

View File

@@ -50,14 +50,6 @@ WINOLEAUTAPI UnRegisterTypeLib(REFGUID libID, WORD wVerMajor,
WORD wVerMinor, LCID lcid, SYSKIND syskind); WORD wVerMinor, LCID lcid, SYSKIND syskind);
#endif #endif
/*
* Modern way of creating registry entries, also works on 64 bit windows when
* compiled as a 32 bit program.
*/
# ifndef KEY_WOW64_64KEY
# define KEY_WOW64_64KEY 0x0100
# endif
/***************************************************************************** /*****************************************************************************
1. Internal definitions for this file 1. Internal definitions for this file
*****************************************************************************/ *****************************************************************************/
@@ -166,7 +158,7 @@ CVim *CVim::Create(int *pbDoRestart)
// RegCreateKeyEx succeeds even if key exists. W.Briscoe W2K 20021011 // RegCreateKeyEx succeeds even if key exists. W.Briscoe W2K 20021011
if (RegCreateKeyEx(HKEY_CLASSES_ROOT, MYVIPROGID, 0, NULL, if (RegCreateKeyEx(HKEY_CLASSES_ROOT, MYVIPROGID, 0, NULL,
REG_OPTION_NON_VOLATILE, REG_OPTION_NON_VOLATILE,
KEY_WOW64_64KEY | KEY_ALL_ACCESS, NULL, &hKey, NULL)) KEY_ALL_ACCESS, NULL, &hKey, NULL))
{ {
delete me; delete me;
return NULL; // Unable to write to registry. Quietly fail. return NULL; // Unable to write to registry. Quietly fail.
@@ -658,7 +650,8 @@ static void RecursiveDeleteKey(HKEY hKeyParent, const char *child)
{ {
// Open the child // Open the child
HKEY hKeyChild; HKEY hKeyChild;
LONG result = RegOpenKeyEx(hKeyParent, child, 0, KEY_ALL_ACCESS, &hKeyChild); LONG result = RegOpenKeyEx(hKeyParent, child, 0,
KEY_ALL_ACCESS, &hKeyChild);
if (result != ERROR_SUCCESS) if (result != ERROR_SUCCESS)
return; return;
@@ -701,7 +694,7 @@ static void SetKeyAndValue(const char *key, const char *subkey, const char *valu
long result = RegCreateKeyEx(HKEY_CLASSES_ROOT, long result = RegCreateKeyEx(HKEY_CLASSES_ROOT,
buffer, buffer,
0, NULL, REG_OPTION_NON_VOLATILE, 0, NULL, REG_OPTION_NON_VOLATILE,
KEY_WOW64_64KEY | KEY_ALL_ACCESS, NULL, KEY_ALL_ACCESS, NULL,
&hKey, NULL); &hKey, NULL);
if (result != ERROR_SUCCESS) if (result != ERROR_SUCCESS)
return; return;

View File

@@ -46,8 +46,8 @@ popup_gvim_path(char *buf)
int r; int r;
/* Open the key where the path to gvim.exe is stored. */ /* Open the key where the path to gvim.exe is stored. */
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Vim\\Gvim", 0, KEY_READ, if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Vim\\Gvim", 0,
&key_handle) != ERROR_SUCCESS) KEY_WOW64_64KEY | KEY_READ, &key_handle) != ERROR_SUCCESS)
return 0; return 0;
/* get the DisplayName out of it to show the user */ /* get the DisplayName out of it to show the user */
@@ -72,8 +72,8 @@ openwith_gvim_path(char *buf)
/* Open the key where the path to gvim.exe is stored. */ /* Open the key where the path to gvim.exe is stored. */
if (RegOpenKeyEx(HKEY_CLASSES_ROOT, if (RegOpenKeyEx(HKEY_CLASSES_ROOT,
"Applications\\gvim.exe\\shell\\edit\\command", 0, KEY_READ, "Applications\\gvim.exe\\shell\\edit\\command", 0,
&key_handle) != ERROR_SUCCESS) KEY_WOW64_64KEY | KEY_READ, &key_handle) != ERROR_SUCCESS)
return 0; return 0;
/* get the DisplayName out of it to show the user */ /* get the DisplayName out of it to show the user */
@@ -95,7 +95,8 @@ remove_popup(void)
++fail; ++fail;
if (RegDeleteKey(HKEY_CLASSES_ROOT, "*\\shellex\\ContextMenuHandlers\\gvim") != ERROR_SUCCESS) if (RegDeleteKey(HKEY_CLASSES_ROOT, "*\\shellex\\ContextMenuHandlers\\gvim") != ERROR_SUCCESS)
++fail; ++fail;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved", 0, KEY_ALL_ACCESS, &kh) != ERROR_SUCCESS) if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved", 0,
KEY_WOW64_64KEY | KEY_ALL_ACCESS, &kh) != ERROR_SUCCESS)
++fail; ++fail;
else else
{ {