# HG changeset patch # User Bram Moolenaar # Date 1619901904 -7200 # Node ID 138e9caf4a7a2d7b2212b9159471511a9ae8e5d4 # Parent 0099ec55d9c812a4a1e9568fbdfa572a42db35fe patch 8.2.2822: MS-Windows: unnessarily loading libraries when unregistering Commit: https://github.com/vim/vim/commit/4a22897591dc8ff64560bef693af49f171faf557 Author: Bram Moolenaar 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. diff --git a/nsis/README.txt b/nsis/README.txt --- 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 diff --git a/nsis/gvim.nsi b/nsis/gvim.nsi --- 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 diff --git a/src/main.c b/src/main.c --- 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; diff --git a/src/version.c b/src/version.c --- 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,