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.
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
!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.
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
}
#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;
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 2822,
/**/
2821,
/**/