# HG changeset patch # User Bram Moolenaar # Date 1278508443 -7200 # Node ID 573da4dac30628be2ad7e4963c9f04fc27387997 # Parent 144aa6167799db22233231003352cb260cc157f8 Make the dos installer work with more compilers. diff --git a/Makefile b/Makefile --- a/Makefile +++ b/Makefile @@ -157,7 +157,7 @@ DOSBIN_S = dosbin_s # - If building the Win32s version delete vimrun.exe. # Win32s GUI version: # - Set environment for Visual C++ 4.1 (requires a new console window) -# - "vcvars32" (use the path for VC 4.1 e:\msdev\bin) +# - "vcvars32.bat" (use the path for VC 4.1 e:\msdev\bin) # - "nmake -f Make_mvc.mak GUI=yes INTL=no clean" (use the path for VC 4.1) # - "nmake -f Make_mvc.mak GUI=yes INTL=no" (use the path for VC 4.1) # - Rename "gvim.exe" to "gvim_w32s.exe". @@ -178,6 +178,7 @@ DOSBIN_S = dosbin_s # VisVim.dll in src/VisVim # Note: VisVim needs to be build with MSVC 5, newer versions don't work. # gvimext64.dll can be obtained from http://code.google.com/p/vim-win3264/ +# It is part of vim72.zip as vim72/gvimext.dll. # - make sure there is a diff.exe two levels up # - go to ../nsis and do "makensis gvim.nsi" (takes a few minutes). # - Copy gvim##.exe to the dist directory. diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -34,6 +34,9 @@ Bug in undo, using freed memory. (Domini Cursor positioning wrong with 0x200e character. (John Becket, 2010 May 6) +Test 69 breaks on MS-Windows, both 32 and 64 builds. (George Reilly, 2010 Feb +26) + E315 when trying to change a file in FileChangedRO autocommand event. (Dominique Pelle, 2010 Apr 30) @@ -103,9 +106,6 @@ Shell not recognized properly if it ends Find tail? Might have a / in argument. Find space? Might have space in path. -Test 69 breaks on MS-Windows, both 32 and 64 builds. (George Reilly, 2010 Feb -26) - ":function f(x) keepjumps" creates a function where every command is executed like it has ":keepjumps" before it. @@ -1094,9 +1094,6 @@ 2010 Jun 30) Vim 7.3: -- using NSIS 2.46: install on Windows 7 works, but no "Edit with Vim" menu. - Use register_shell_extension()? - Patch from Geoffrey Reilly, 2010 Jun 22 - in August remove UF_VERSION_CRYPT_PREV and UF_VERSION_PREV. - Conceal feature: no update when moving to another window. (Dominique Pelle, 2010 Jul 5) Vince will look into it. diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt --- a/runtime/doc/version7.txt +++ b/runtime/doc/version7.txt @@ -7228,5 +7228,9 @@ right compiler flags. (Michael Bienia) Window title is not updated after dropping a file on Vim. (Hari G) +MS-Windows: The self-installing executable now also works on 64-bit systems. +The gvim executable is 32 bits, the installed gvimext.dll is either a 32 or 64 +bit version. (George Reilly) + vim:tw=78:ts=8:ft=help:norl: diff --git a/src/dosinst.c b/src/dosinst.c --- a/src/dosinst.c +++ b/src/dosinst.c @@ -139,31 +139,6 @@ static char *(vimfiles_subdirs[]) = }; /* - * Copy a directory name from "dir" to "buf", doubling backslashes. - * Also make sure it ends in a double backslash. - */ - static void -double_bs(char *dir, char *buf) -{ - char *d = buf; - char *s; - - for (s = dir; *s; ++s) - { - if (*s == '\\') - *d++ = '\\'; - *d++ = *s; - } - /* when dir is not empty, it must end in a double backslash */ - if (d > buf && d[-1] != '\\') - { - *d++ = '\\'; - *d++ = '\\'; - } - *d = NUL; -} - -/* * Obtain a choice from a table. * First entry is a question, others are choices. */ @@ -442,7 +417,7 @@ get_vim_env(void) else { printf("Failed to open %s\n", fname); - Sleep(2000); + sleep(2); } } @@ -582,10 +557,10 @@ uninstall_check(int skip_question) * The uninstaller copies itself, executes the copy * and exits, thus we can't wait for the process to * finish. */ - Sleep(1000); /* wait for uninstaller to start up */ + sleep(1); /* wait for uninstaller to start up */ num_windows = 0; EnumWindows(window_cb, 0); - Sleep(1000); /* wait for windows to be counted */ + sleep(1); /* wait for windows to be counted */ if (num_windows == 0) { /* Did not find the uninstaller, ask user to press @@ -603,7 +578,7 @@ uninstall_check(int skip_question) fflush(stdout); num_windows = 0; EnumWindows(window_cb, 0); - Sleep(1000); /* wait for windows to be counted */ + sleep(1); /* wait for windows to be counted */ } while (num_windows > 0); } printf("\nDone!\n"); @@ -1376,7 +1351,15 @@ init_vimrc_choices(void) ++choice_count; } -#if defined(DJGPP) || defined(WIN3264) || defined(UNIX_LINT) +#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 reg_create_key( HKEY root, @@ -1525,7 +1508,7 @@ register_uninstall( "UninstallString", uninstall_string); return lRet; } -#endif /* if defined(DJGPP) || defined(WIN3264) || defined(UNIX_LINT) */ +#endif /* WIN3264 */ /* * Add some entries to the registry: @@ -1534,11 +1517,11 @@ register_uninstall( * - to uninstall Vim */ /*ARGSUSED*/ - static LONG + static int install_registry(void) { +#ifdef WIN3264 LONG lRet = ERROR_SUCCESS; -#if defined(DJGPP) || defined(WIN3264) || defined(UNIX_LINT) const char *vim_ext_ThreadingModel = "Apartment"; const char *vim_ext_name = "Vim Shell Extension"; const char *vim_ext_clsid = "{51EEE242-AD87-11d3-9C1E-0090278BBD99}"; @@ -1566,11 +1549,11 @@ install_registry(void) HKEY_CLASSES_ROOT, vim_ext_clsid, vim_ext_name, bufg, vim_ext_ThreadingModel); if (ERROR_SUCCESS != lRet) - return lRet; + return FAIL; lRet = register_shellex( HKEY_CLASSES_ROOT, vim_ext_clsid, vim_ext_name, vim_exe_path); if (ERROR_SUCCESS != lRet) - return lRet; + return FAIL; } if (install_openwith) @@ -1579,7 +1562,7 @@ install_registry(void) lRet = register_openwith(HKEY_CLASSES_ROOT, vim_exe_path); if (ERROR_SUCCESS != lRet) - return lRet; + return FAIL; } printf("Creating an uninstall entry\n"); @@ -1601,9 +1584,11 @@ install_registry(void) "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Vim " VIM_VERSION_SHORT, display_name, uninstall_string); + if (ERROR_SUCCESS != lRet) + return FAIL; +#endif /* WIN3264 */ -#endif /* if defined(DJGPP) || defined(WIN3264) || defined(UNIX_LINT) */ - return lRet; + return OK; } static void @@ -2569,7 +2554,7 @@ main(int argc, char **argv) /* When nothing found exit quietly. If something found wait for * a little while, so that the user can read the messages. */ if (i) - Sleep(3000); + sleep(3); exit(0); } #endif @@ -2645,7 +2630,7 @@ main(int argc, char **argv) /* Avoid that the user has to hit Enter, just wait a little bit to * allow reading the messages. */ - Sleep(2000); + sleep(2); } return 0; diff --git a/src/dosinst.h b/src/dosinst.h --- a/src/dosinst.h +++ b/src/dosinst.h @@ -62,6 +62,11 @@ char *searchpath(char *name); # define vim_mkdir(x, y) mkdir((char *)(x)) # endif #endif + +#ifndef DJGPP +# define sleep(n) Sleep((n) * 1000) +#endif + /* ---------------------------------------- */ @@ -395,9 +400,10 @@ char *(icon_link_names[ICON_COUNT]) = "gVim Easy " VIM_VERSION_SHORT ".lnk", "gVim Read only " VIM_VERSION_SHORT ".lnk"}; -/* This is only used for dosinst.c and for uninstal.c when not being able to - * directly access registry entries. */ -#if !defined(WIN3264) || defined(DOSINST) +/* This is only used for dosinst.c when WIN3264 is defined and for uninstal.c + * when not being able to directly access registry entries. */ +#if (defined(DOSINST) && defined(WIN3264)) \ + || (!defined(DOSINST) && !defined(WIN3264)) /* * Run an external command and wait for it to finish. */ diff --git a/src/uninstal.c b/src/uninstal.c --- a/src/uninstal.c +++ b/src/uninstal.c @@ -438,7 +438,7 @@ main(int argc, char *argv[]) (void)getchar(); } else - Sleep(3000); + sleep(3); return 0; } diff --git a/src/version.h b/src/version.h --- a/src/version.h +++ b/src/version.h @@ -36,5 +36,5 @@ #define VIM_VERSION_NODOT "vim73a" #define VIM_VERSION_SHORT "7.3a" #define VIM_VERSION_MEDIUM "7.3a BETA" -#define VIM_VERSION_LONG "VIM - Vi IMproved 7.3 BETA (2010 May 15)" -#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.3 BETA (2010 May 15, compiled " +#define VIM_VERSION_LONG "VIM - Vi IMproved 7.3 BETA (2010 Jul 7)" +#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.3 BETA (2010 Jul 7, compiled "