changeset 24565:138e9caf4a7a v8.2.2822

patch 8.2.2822: MS-Windows: unnessarily loading libraries when unregistering Commit: https://github.com/vim/vim/commit/4a22897591dc8ff64560bef693af49f171faf557 Author: Bram Moolenaar <Bram@vim.org> Date: Sat May 1 22:41:39 2021 +0200 patch 8.2.2822: MS-Windows: unnessarily loading libraries when unregistering Problem: MS-Windows: unnessarily loading libraries when unregistering OLE. Solution: Also skip loading libraries when invoked with "-unregister". Run Vim for README.txt with user privileges.
author Bram Moolenaar <Bram@vim.org>
date Sat, 01 May 2021 22:45:04 +0200
parents 0099ec55d9c8
children 9bc67522a0c0
files nsis/README.txt nsis/gvim.nsi src/main.c src/version.c
diffstat 4 files changed, 16 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/nsis/README.txt
+++ b/nsis/README.txt
@@ -66,6 +66,9 @@ 8.  Get gettext and iconv DLLs from the 
 
 Install NSIS if you didn't do that already.
 Also install UPX, if you want a compressed file.
+Download and include the ShellExecAsUser.dll Unicode version which can be
+sourced from: https://nsis.sourceforge.io/ShellExecAsUser_plug-in
+
 
 Unpack the images:
 	cd nsis
--- a/nsis/gvim.nsi
+++ b/nsis/gvim.nsi
@@ -119,9 +119,9 @@ RequestExecutionLevel highest
 
 !define MUI_COMPONENTSPAGE_SMALLDESC
 !define MUI_LICENSEPAGE_CHECKBOX
-!define MUI_FINISHPAGE_RUN                 "$0\gvim.exe"
+!define MUI_FINISHPAGE_RUN
+!define MUI_FINISHPAGE_RUN_FUNCTION        LaunchApplication
 !define MUI_FINISHPAGE_RUN_TEXT            $(str_show_readme)
-!define MUI_FINISHPAGE_RUN_PARAMETERS      "-R $\"$0\README.txt$\""
 
 # This adds '\Vim' to the user choice automagically.  The actual value is
 # obtained below with CheckOldVim.
@@ -300,6 +300,11 @@ Function CheckOldVim
   Exch $0  # put $0 on top of stack, restore $0 to original value
 FunctionEnd
 
+Function LaunchApplication
+   SetOutPath $0
+   ShellExecAsUser::ShellExecAsUser "" "$0\gvim.exe" "-R $"$0\README.txt$""
+FunctionEnd
+
 ##########################################################
 Section "$(str_section_old_ver)" id_section_old_ver
 	SectionIn 1 2 3 RO
--- a/src/main.c
+++ b/src/main.c
@@ -162,10 +162,11 @@ main
 	}
 #endif
 #ifdef MSWIN
-    // Need to find "-register" before loading any libraries.
+    // Need to find "-register" and "-unregister" before loading any libraries.
     for (i = 1; i < argc; ++i)
-	if (STRICMP(argv[i] + 1, "register") == 0
-				   && (argv[i][0] == '-' || argv[i][0] == '/'))
+	if ((STRICMP(argv[i] + 1, "register") == 0
+				    || STRICMP(argv[i] + 1, "unregister") == 0)
+		&& (argv[i][0] == '-' || argv[i][0] == '/'))
 	{
 	    found_register_arg = TRUE;
 	    break;
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2822,
+/**/
     2821,
 /**/
     2820,