summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-12-21 16:22:50 +0100
committerBram Moolenaar <Bram@vim.org>2018-12-21 16:22:50 +0100
commitaf610b8e66a7fefcb8db07ee65686f51e1cb288a (patch)
tree2db9d76d99aa2cae6cdc7997da4c4d3e5d3e195a
parentd155d7a8519987361169459b8d464ae1caef5e9c (diff)
downloadvim-git-af610b8e66a7fefcb8db07ee65686f51e1cb288a.tar.gz
patch 8.1.0616: NSIS installer is outdatedv8.1.0616
Problem: NSIS installer is outdated. Solution: Use modern syntax, MUI2 and make it work better. Add translations. (Ken Takata, closes #3501)
-rw-r--r--Filelist2
-rw-r--r--nsis/gvim.nsi1136
-rw-r--r--nsis/icons/header.bmpbin0 -> 102654 bytes
-rw-r--r--nsis/icons/header.svg265
-rw-r--r--nsis/icons/un_header.bmpbin0 -> 102654 bytes
-rw-r--r--nsis/icons/uninstall.bmpbin0 -> 618006 bytes
-rw-r--r--nsis/icons/welcome.bmpbin0 -> 618006 bytes
-rw-r--r--nsis/icons/welcome.svg268
-rw-r--r--nsis/lang/danish.nsi175
-rw-r--r--nsis/lang/dutch.nsi281
-rw-r--r--nsis/lang/english.nsi280
-rw-r--r--nsis/lang/german.nsi280
-rw-r--r--nsis/lang/italian.nsi290
-rw-r--r--nsis/lang/japanese.nsi287
-rw-r--r--nsis/lang/simpchinese.nsi277
-rw-r--r--nsis/lang/tradchinese.nsi278
-rw-r--r--src/dosinst.c142
-rw-r--r--src/version.c2
18 files changed, 3623 insertions, 340 deletions
diff --git a/Filelist b/Filelist
index f47500456..6daf111f5 100644
--- a/Filelist
+++ b/Filelist
@@ -477,6 +477,7 @@ SRC_DOS = \
nsis/gvim_version.nsh \
nsis/vimrc.ini \
nsis/README.txt \
+ nsis/lang/*.nsi \
uninstal.txt \
src/VisVim/Commands.cpp \
src/VisVim/Commands.h \
@@ -517,6 +518,7 @@ SRC_DOS_BIN = \
src/xpm/x86/lib-vc14/libXpm.lib \
nsis/icons/*.bmp \
nsis/icons/*.ico \
+ nsis/icons/*.svg \
# source files for Amiga, DOS, etc. (also in the extra archive)
SRC_AMI_DOS = \
diff --git a/nsis/gvim.nsi b/nsis/gvim.nsi
index 55bb4ce00..12a55bb61 100644
--- a/nsis/gvim.nsi
+++ b/nsis/gvim.nsi
@@ -1,7 +1,9 @@
# NSIS file to create a self-installing exe for Vim.
-# It requires NSIS version 2.0 or later.
+# It requires NSIS version 3.0 or later.
# Last Change: 2014 Nov 5
+Unicode true
+
# WARNING: if you make changes to this script, look out for $0 to be valid,
# because uninstall deletes most files in $0.
@@ -31,171 +33,288 @@
# Get it at https://upx.github.io/
!define HAVE_UPX
-# comment the next line if you do not want to add Native Language Support
+# Comment the next line if you do not want to add Native Language Support
!define HAVE_NLS
+# Uncomment the next line if you want to include VisVim extension:
+#!define HAVE_VIS_VIM
+
+# Comment the following line to create a multilanguage installer:
+!define HAVE_MULTI_LANG
+
+# Uncomment the next line if you want to create a 64-bit installer.
+#!define WIN64
+
!include gvim_version.nsh # for version number
# ----------- No configurable settings below this line -----------
-!include UpgradeDLL.nsh # for VisVim.dll
-!include LogicLib.nsh
-!include x64.nsh
-
-Name "Vim ${VER_MAJOR}.${VER_MINOR}"
+!include "Library.nsh" # For DLL install
+!ifdef HAVE_VIS_VIM
+ !include "UpgradeDLL.nsh" # for VisVim.dll
+!endif
+!include "LogicLib.nsh"
+!include "MUI2.nsh"
+!include "nsDialogs.nsh"
+!include "Sections.nsh"
+!include "x64.nsh"
+
+!define PRODUCT "Vim ${VER_MAJOR}.${VER_MINOR}"
+!define UNINST_REG_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall"
+!define UNINST_REG_KEY_VIM "${UNINST_REG_KEY}\${PRODUCT}"
+
+!ifdef WIN64
+Name "${PRODUCT} (x64)"
+!else
+Name "${PRODUCT}"
+!endif
OutFile gvim${VER_MAJOR}${VER_MINOR}.exe
CRCCheck force
SetCompressor /SOLID lzma
+SetCompressorDictSize 64
+ManifestDPIAware true
SetDatablockOptimize on
RequestExecutionLevel highest
-XPStyle on
-
-ComponentText "This will install Vim ${VER_MAJOR}.${VER_MINOR} on your computer."
-DirText "Choose a directory to install Vim (should contain 'vim')"
-Icon icons\vim_16c.ico
-# NSIS2 uses a different strategy with six different images in a strip...
-#EnabledBitmap icons\enabled.bmp
-#DisabledBitmap icons\disabled.bmp
-UninstallText "This will uninstall Vim ${VER_MAJOR}.${VER_MINOR} from your system."
-UninstallIcon icons\vim_uninst_16c.ico
-
-# On NSIS 2 using the BGGradient causes trouble on Windows 98, in combination
-# with the BringToFront.
-# BGGradient 004000 008200 FFFFFF
-LicenseText "You should read the following before installing:"
-LicenseData ${VIMRT}\doc\uganda.nsis.txt
!ifdef HAVE_UPX
!packhdr temp.dat "upx --best --compress-icons=1 temp.dat"
!endif
-# This adds '\vim' to the user choice automagically. The actual value is
-# obtained below with ReadINIStr.
+!ifdef WIN64
+!define BIT 64
+!else
+!define BIT 32
+!endif
+
+##########################################################
+# MUI2 settings
+
+!define MUI_ABORTWARNING
+!define MUI_UNABORTWARNING
+
+!define MUI_ICON "icons\vim_16c.ico"
+!define MUI_UNICON "icons\vim_uninst_16c.ico"
+
+# Show all languages, despite user's codepage:
+!define MUI_LANGDLL_ALLLANGUAGES
+!define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
+!define MUI_LANGDLL_REGISTRY_KEY "Software\Vim"
+!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
+
+!define MUI_WELCOMEFINISHPAGE_BITMAP "icons\welcome.bmp"
+!define MUI_UNWELCOMEFINISHPAGE_BITMAP "icons\uninstall.bmp"
+!define MUI_HEADERIMAGE
+!define MUI_HEADERIMAGE_BITMAP "icons\header.bmp"
+!define MUI_HEADERIMAGE_UNBITMAP "icons\un_header.bmp"
+
+!define MUI_WELCOMEFINISHPAGE_BITMAP_STRETCH "AspectFitHeight"
+!define MUI_UNWELCOMEFINISHPAGE_BITMAP_STRETCH "AspectFitHeight"
+!define MUI_HEADERIMAGE_BITMAP_STRETCH "AspectFitHeight"
+!define MUI_HEADERIMAGE_UNBITMAP_STRETCH "AspectFitHeight"
+
+!define MUI_COMPONENTSPAGE_SMALLDESC
+!define MUI_LICENSEPAGE_CHECKBOX
+!define MUI_FINISHPAGE_RUN "$0\gvim.exe"
+!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.
+!ifdef WIN64
+InstallDir "$PROGRAMFILES64\Vim"
+!else
InstallDir "$PROGRAMFILES\Vim"
+!endif
# Types of installs we can perform:
-InstType Typical
-InstType Minimal
-InstType Full
+InstType $(str_type_typical)
+InstType $(str_type_minimal)
+InstType $(str_type_full)
SilentInstall normal
-# These are the pages we use
-Page license
-Page components
-Page custom SetCustom ValidateCustom ": _vimrc setting"
-Page directory "" "" CheckInstallDir
-Page instfiles
-UninstPage uninstConfirm
-UninstPage instfiles
-
-# Reserve files
-# Needed for showing the _vimrc setting page faster.
-ReserveFile /plugin InstallOptions.dll
-ReserveFile vimrc.ini
+# General custom functions for MUI2:
+#!define MUI_CUSTOMFUNCTION_ABORT VimOnUserAbort
+#!define MUI_CUSTOMFUNCTION_UNABORT un.VimOnUserAbort
+
+# Installer pages
+!insertmacro MUI_PAGE_WELCOME
+!insertmacro MUI_PAGE_LICENSE "${VIMRT}\doc\uganda.nsis.txt"
+!insertmacro MUI_PAGE_COMPONENTS
+Page custom SetCustom ValidateCustom
+#!define MUI_PAGE_CUSTOMFUNCTION_LEAVE VimFinalCheck
+!insertmacro MUI_PAGE_DIRECTORY
+!insertmacro MUI_PAGE_INSTFILES
+!define MUI_FINISHPAGE_NOREBOOTSUPPORT
+!insertmacro MUI_PAGE_FINISH
+
+# Uninstaller pages:
+!insertmacro MUI_UNPAGE_CONFIRM
+#!define MUI_PAGE_CUSTOMFUNCTION_LEAVE un.VimCheckRunning
+!insertmacro MUI_UNPAGE_COMPONENTS
+!insertmacro MUI_UNPAGE_INSTFILES
+!define MUI_FINISHPAGE_NOREBOOTSUPPORT
+!insertmacro MUI_UNPAGE_FINISH
##########################################################
-# Functions
-
-Function .onInit
- MessageBox MB_YESNO|MB_ICONQUESTION \
- "This will install Vim ${VER_MAJOR}.${VER_MINOR} on your computer.$\n Continue?" \
- /SD IDYES \
- IDYES NoAbort
- Abort ; causes installer to quit.
- NoAbort:
-
- # run the install program to check for already installed versions
- SetOutPath $TEMP
- File /oname=install.exe ${VIMSRC}\installw32.exe
- ExecWait "$TEMP\install.exe -uninstall-check"
- Delete $TEMP\install.exe
-
- # We may have been put to the background when uninstall did something.
- BringToFront
-
- # Install will have created a file for us that contains the directory where
- # we should install. This is $VIM if it's set. This appears to be the only
- # way to get the value of $VIM here!?
- ReadINIStr $INSTDIR $TEMP\vimini.ini vimini dir
- Delete $TEMP\vimini.ini
-
- # If ReadINIStr failed or did not find a path: use the default dir.
- StrCmp $INSTDIR "" 0 IniOK
- StrCpy $INSTDIR "$PROGRAMFILES\Vim"
- IniOK:
-
- # Should check for the value of $VIM and use it. Unfortunately I don't know
- # how to obtain the value of $VIM
- # IfFileExists "$VIM" 0 No_Vim
- # StrCpy $INSTDIR "$VIM"
- # No_Vim:
-
- # User variables:
- # $0 - holds the directory the executables are installed to
- # $1 - holds the parameters to be passed to install.exe. Starts with OLE
- # registration (since a non-OLE gvim will not complain, and we want to
- # always register an OLE gvim).
- # $2 - holds the names to create batch files for
- StrCpy $0 "$INSTDIR\vim${VER_MAJOR}${VER_MINOR}"
- StrCpy $1 "-register-OLE"
- StrCpy $2 "gvim evim gview gvimdiff vimtutor"
+# Languages Files
+
+!insertmacro MUI_RESERVEFILE_LANGDLL
+!include "lang\english.nsi"
+
+# Include support for other languages:
+!ifdef HAVE_MULTI_LANG
+ !include "lang\danish.nsi"
+ !include "lang\dutch.nsi"
+ !include "lang\german.nsi"
+ !include "lang\italian.nsi"
+ !include "lang\japanese.nsi"
+ !include "lang\simpchinese.nsi"
+ !include "lang\tradchinese.nsi"
+!endif
- # Extract InstallOptions files
- # $PLUGINSDIR will automatically be removed when the installer closes
- InitPluginsDir
- File /oname=$PLUGINSDIR\vimrc.ini "vimrc.ini"
-FunctionEnd
-Function .onUserAbort
- MessageBox MB_YESNO|MB_ICONQUESTION "Abort install?" IDYES NoCancelAbort
- Abort ; causes installer to not quit.
- NoCancelAbort:
-FunctionEnd
+# Global variables
+Var vim_dialog
+Var vim_nsd_compat
+Var vim_nsd_keymap
+Var vim_nsd_mouse
+Var vim_compat_stat
+Var vim_keymap_stat
+Var vim_mouse_stat
-# We only accept the directory if it ends in "vim". Using .onVerifyInstDir has
-# the disadvantage that the browse dialog is difficult to use.
-Function CheckInstallDir
-FunctionEnd
-Function .onInstSuccess
- WriteUninstaller vim${VER_MAJOR}${VER_MINOR}\uninstall-gui.exe
- MessageBox MB_YESNO|MB_ICONQUESTION \
- "The installation process has been successful. Happy Vimming! \
- $\n$\n Do you want to see the README file now?" IDNO NoReadme
- Exec '$0\gvim.exe -R "$0\README.txt"'
- NoReadme:
-FunctionEnd
-
-Function .onInstFailed
- MessageBox MB_OK|MB_ICONEXCLAMATION "Installation failed. Better luck next time."
-FunctionEnd
+# Reserve files
+ReserveFile ${VIMSRC}\installw32.exe
-Function un.onUnInstSuccess
- MessageBox MB_OK|MB_ICONINFORMATION \
- "Vim ${VER_MAJOR}.${VER_MINOR} has been (partly) removed from your system"
-FunctionEnd
+##########################################################
+# Functions
-Function un.GetParent
+# Get parent directory
+# Share this function both on installer and uninstaller
+!macro GetParent un
+Function ${un}GetParent
Exch $0 ; old $0 is on top of stack
Push $1
Push $2
StrCpy $1 -1
- loop:
+ ${Do}
StrCpy $2 $0 1 $1
- StrCmp $2 "" exit
- StrCmp $2 "\" exit
+ ${If} $2 == ""
+ ${OrIf} $2 == "\"
+ ${ExitDo}
+ ${EndIf}
IntOp $1 $1 - 1
- Goto loop
- exit:
- StrCpy $0 $0 $1
- Pop $2
- Pop $1
- Exch $0 ; put $0 on top of stack, restore $0 to original value
+ ${Loop}
+ StrCpy $0 $0 $1
+ Pop $2
+ Pop $1
+ Exch $0 ; put $0 on top of stack, restore $0 to original value
+FunctionEnd
+!macroend
+
+!insertmacro GetParent ""
+!insertmacro GetParent "un."
+
+# Check if Vim is already installed.
+# return: Installed directory. If not found, it will be empty.
+Function CheckOldVim
+ Push $0
+ Push $R0
+ Push $R1
+ Push $R2
+
+ ${If} ${RunningX64}
+ SetRegView 64
+ ${EndIf}
+
+ ClearErrors
+ StrCpy $0 "" # Installed directory
+ StrCpy $R0 0 # Sub-key index
+ StrCpy $R1 "" # Sub-key
+ ${Do}
+ # Eumerate the sub-key:
+ EnumRegKey $R1 HKLM ${UNINST_REG_KEY} $R0
+
+ # Stop if no more sub-key:
+ ${If} ${Errors}
+ ${OrIf} $R1 == ""
+ ${ExitDo}
+ ${EndIf}
+
+ # Move to the next sub-key:
+ IntOp $R0 $R0 + 1
+
+ # Check if the key is Vim uninstall key or not:
+ StrCpy $R2 $R1 4
+ ${If} $R2 S!= "Vim "
+ ${Continue}
+ ${EndIf}
+
+ # Verifies required sub-keys:
+ ReadRegStr $R2 HKLM "${UNINST_REG_KEY}\$R1" "DisplayName"
+ ${If} ${Errors}
+ ${OrIf} $R2 == ""
+ ${Continue}
+ ${EndIf}
+
+ ReadRegStr $R2 HKLM "${UNINST_REG_KEY}\$R1" "UninstallString"
+ ${If} ${Errors}
+ ${OrIf} $R2 == ""
+ ${Continue}
+ ${EndIf}
+
+ # Found
+ Push $R2
+ call GetParent
+ call GetParent
+ Pop $0 # Vim directory
+ ${ExitDo}
+
+ ${Loop}
+
+ ${If} ${RunningX64}
+ SetRegView lastused
+ ${EndIf}
+
+ Pop $R2
+ Pop $R1
+ Pop $R0
+ Exch $0 # put $0 on top of stack, restore $0 to original value
FunctionEnd
##########################################################
-Section "Vim executables and runtime files"
+Section "$(str_section_old_ver)" id_section_old_ver
+ SectionIn 1 2 3 RO
+
+ # run the install program to check for already installed versions
+ SetOutPath $TEMP
+ File /oname=install.exe ${VIMSRC}\installw32.exe
+ DetailPrint "$(str_msg_uninstalling)"
+ ${Do}
+ nsExec::Exec "$TEMP\install.exe -uninstall-check"
+ Pop $3
+
+ call CheckOldVim
+ Pop $3
+ ${If} $3 == ""
+ ${ExitDo}
+ ${Else}
+ # It seems that the old version is still remaining.
+ # TODO: Should we show a warning and run the uninstaller again?
+
+ ${ExitDo} # Just ignore for now.
+ ${EndIf}
+ ${Loop}
+ Delete $TEMP\install.exe
+ Delete $TEMP\vimini.ini # install.exe creates this, but we don't need it.
+
+ # We may have been put to the background when uninstall did something.
+ BringToFront
+SectionEnd
+
+##########################################################
+Section "$(str_section_exe)" id_section_exe
SectionIn 1 2 3 RO
# we need also this here if the user changes the instdir
@@ -215,7 +334,7 @@ Section "Vim executables and runtime files"
File ${VIMRT}\rgb.txt
File ${VIMTOOLS}\diff.exe
- File ${VIMTOOLS}\winpty32.dll
+ File ${VIMTOOLS}\winpty${BIT}.dll
File ${VIMTOOLS}\winpty-agent.exe
SetOutPath $0\colors
@@ -299,120 +418,63 @@ Section "Vim executables and runtime files"
SectionEnd
##########################################################
-Section "Vim console program (vim.exe)"
+Section "$(str_section_console)" id_section_console
SectionIn 1 3
SetOutPath $0
- ReadRegStr $R0 HKLM \
- "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
- IfErrors 0 lbl_winnt
- # Windows 95/98/ME: not supported
- Goto lbl_done
- lbl_winnt:
- # Windows NT/2000/XP and later
- File /oname=vim.exe ${VIMSRC}\vimw32.exe
- lbl_done:
+ File /oname=vim.exe ${VIMSRC}\vimw32.exe
StrCpy $2 "$2 vim view vimdiff"
SectionEnd
##########################################################
-Section "Create .bat files for command line use"
+Section "$(str_section_batch)" id_section_batch
SectionIn 3
StrCpy $1 "$1 -create-batfiles $2"
SectionEnd
##########################################################
-Section "Create icons on the Desktop"
- SectionIn 1 3
+SectionGroup $(str_group_icons) id_group_icons
+ Section "$(str_section_desktop)" id_section_desktop
+ SectionIn 1 3
- StrCpy $1 "$1 -install-icons"
-SectionEnd
+ StrCpy $1 "$1 -install-icons"
+ SectionEnd
-##########################################################
-Section "Add Vim to the Start Menu"
- SectionIn 1 3
+ Section "$(str_section_start_menu)" id_section_startmenu
+ SectionIn 1 3
- StrCpy $1 "$1 -add-start-menu"
-SectionEnd
+ StrCpy $1 "$1 -add-start-menu"
+ SectionEnd
+SectionGroupEnd
##########################################################
-Section "Add an Edit-with-Vim context menu entry"
+Section "$(str_section_edit_with)" id_section_editwith
SectionIn 1 3
- # Be aware of this sequence of events:
- # - user uninstalls Vim, gvimext.dll can't be removed (it's in use) and
- # is scheduled to be removed at next reboot.
- # - user installs Vim in same directory, gvimext.dll still exists.
- # If we now skip installing gvimext.dll, it will disappear at the next
- # reboot. Thus when copying gvimext.dll fails always schedule it to be
- # installed at the next reboot. Can't use UpgradeDLL!
- # We don't ask the user to reboot, the old dll will keep on working.
SetOutPath $0
- ClearErrors
- SetOverwrite try
${If} ${RunningX64}
# Install 64-bit gvimext.dll into the GvimExt64 directory.
SetOutPath $0\GvimExt64
ClearErrors
- File /oname=gvimext.dll ${VIMSRC}\GvimExt\gvimext64.dll
-!ifdef HAVE_NLS
- File ${GETTEXT}\gettext64\libintl-8.dll
- File ${GETTEXT}\gettext64\libiconv-2.dll
-!endif
-
- IfErrors 0 GvimExt64Done
-
- # Can't copy gvimext.dll, create it under another name and rename it
- # on next reboot.
- GetTempFileName $3 $0\GvimExt64
- File /oname=$3 ${VIMSRC}\GvimExt\gvimext64.dll
- Rename /REBOOTOK $3 $0\GvimExt64\gvimext.dll
-!ifdef HAVE_NLS
- GetTempFileName $3 $0\GvimExt64
- File /oname=$3 ${GETTEXT}\gettext64\libintl-8.dll
- Rename /REBOOTOK $3 $0\GvimExt64\libintl-8.dll
- GetTempFileName $3 $0\GvimExt64
- File /oname=$3 ${GETTEXT}\gettext64\libiconv-2.dll
- Rename /REBOOTOK $3 $0\GvimExt64\libiconv-2.dll
-!endif
+ !define LIBRARY_SHELL_EXTENSION
+ !define LIBRARY_X64
+ !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "${VIMSRC}\GvimExt\gvimext64.dll" \
+ "$0\GvimExt64\gvimext.dll" "$0"
+ !undef LIBRARY_X64
+ !undef LIBRARY_SHELL_EXTENSION
${EndIf}
- GvimExt64Done:
-
# Install 32-bit gvimext.dll into the GvimExt32 directory.
SetOutPath $0\GvimExt32
ClearErrors
-
- File /oname=gvimext.dll ${VIMSRC}\GvimExt\gvimext.dll
-!ifdef HAVE_NLS
- File ${GETTEXT}\gettext32\libintl-8.dll
- File ${GETTEXT}\gettext32\libiconv-2.dll
- File ${GETTEXT}\gettext32\libgcc_s_sjlj-1.dll
-!endif
-
- IfErrors 0 GvimExt32Done
-
- # Can't copy gvimext.dll, create it under another name and rename it on
- # next reboot.
- GetTempFileName $3 $0\GvimExt32
- File /oname=$3 ${VIMSRC}\GvimExt\gvimext.dll
- Rename /REBOOTOK $3 $0\GvimExt32\gvimext.dll
-!ifdef HAVE_NLS
- GetTempFileName $3 $0\GvimExt32
- File /oname=$3 ${GETTEXT}\gettext32\libintl-8.dll
- Rename /REBOOTOK $3 $0\GvimExt32\libintl-8.dll
- GetTempFileName $3 $0\GvimExt32
- File /oname=$3 ${GETTEXT}\gettext32\libiconv-2.dll
- Rename /REBOOTOK $3 $0\GvimExt32\libiconv-2.dll
- GetTempFileName $3 $0\GvimExt32
- File /oname=$3 ${GETTEXT}\gettext32\libgcc_s_sjlj-1.dll
- Rename /REBOOTOK $3 $0\GvimExt32\libgcc_s_sjlj-1.dll
-!endif
-
- GvimExt32Done:
- SetOverwrite lastused
+ !define LIBRARY_SHELL_EXTENSION
+ !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "${VIMSRC}\GvimExt\gvimext.dll" \
+ "$0\GvimExt32\gvimext.dll" "$0"
+ !undef LIBRARY_SHELL_EXTENSION
# We don't have a separate entry for the "Open With..." menu, assume
# the user wants either both or none.
@@ -420,130 +482,563 @@ Section "Add an Edit-with-Vim context menu entry"
SectionEnd
##########################################################
-Section "Create a _vimrc if it doesn't exist" sec_vimrc_id
+Section "$(str_section_vim_rc)" id_section_vimrc
SectionIn 1 3
StrCpy $1 "$1 -create-vimrc"
-SectionEnd
-##########################################################
-Section "Create plugin directories in HOME or VIM"
- SectionIn 1 3
+ ${If} ${RunningX64}
+ SetRegView 64
+ ${EndIf}
+ WriteRegStr HKLM "${UNINST_REG_KEY_VIM}" "vim_compat" "$vim_compat_stat"
+ WriteRegStr HKLM "${UNINST_REG_KEY_VIM}" "vim_keyremap" "$vim_keymap_stat"
+ WriteRegStr HKLM "${UNINST_REG_KEY_VIM}" "vim_mouse" "$vim_mouse_stat"
+ ${If} ${RunningX64}
+ SetRegView lastused
+ ${EndIf}
+
+ ${If} $vim_compat_stat == "vi"
+ StrCpy $1 "$1 -vimrc-compat vi"
+ ${ElseIf} $vim_compat_stat == "vim"
+ StrCpy $1 "$1 -vimrc-compat vim"
+ ${ElseIf} $vim_compat_stat == "defaults"
+ StrCpy $1 "$1 -vimrc-compat defaults"
+ ${Else}
+ StrCpy $1 "$1 -vimrc-compat all"
+ ${EndIf}
+
+ ${If} $vim_keymap_stat == "default"
+ StrCpy $1 "$1 -vimrc-remap no"
+ ${Else}
+ StrCpy $1 "$1 -vimrc-remap win"
+ ${EndIf}
+
+ ${If} $vim_mouse_stat == "default"
+ StrCpy $1 "$1 -vimrc-behave default"
+ ${ElseIf} $vim_mouse_stat == "windows"
+ StrCpy $1 "$1 -vimrc-behave mswin"
+ ${Else}
+ StrCpy $1 "$1 -vimrc-behave unix"
+ ${EndIf}
- StrCpy $1 "$1 -create-directories home"
SectionEnd
##########################################################
-Section "Create plugin directories in VIM"
- SectionIn 3
+SectionGroup $(str_group_plugin) id_group_plugin
+ Section "$(str_section_plugin_home)" id_section_pluginhome
+ SectionIn 1 3
- StrCpy $1 "$1 -create-directories vim"
-SectionEnd
+ StrCpy $1 "$1 -create-directories home"
+ SectionEnd
+
+ Section "$(str_section_plugin_vim)" id_section_pluginvim
+ SectionIn 3
+
+ StrCpy $1 "$1 -create-directories vim"
+ SectionEnd
+SectionGroupEnd
##########################################################
-Section "VisVim Extension for MS Visual Studio"
+!ifdef HAVE_VIS_VIM
+Section "$(str_section_vis_vim)" id_section_visvim
SectionIn 3
SetOutPath $0
!insertmacro UpgradeDLL "${VIMSRC}\VisVim\VisVim.dll" "$0\VisVim.dll" "$0"
File ${VIMSRC}\VisVim\README_VisVim.txt
SectionEnd
+!endif
##########################################################
!ifdef HAVE_NLS
- Section "Native Language Support"
- SectionIn 1 3
+Section "$(str_section_nls)" id_section_nls
+ SectionIn 1 3
- SetOutPath $0\lang
- File /r ${VIMRT}\lang\*.*
- SetOutPath $0\keymap
- File ${VIMRT}\keymap\README.txt
- File ${VIMRT}\keymap\*.vim
- SetOutPath $0
- File ${GETTEXT}\gettext32\libintl-8.dll
- File ${GETTEXT}\gettext32\libiconv-2.dll
- #File /nonfatal ${VIMRT}\libwinpthread-1.dll
- File /nonfatal ${GETTEXT}\gettext32\libgcc_s_sjlj-1.dll
- SectionEnd
+ SetOutPath $0\lang
+ File /r ${VIMRT}\lang\*.*
+ SetOutPath $0\keymap
+ File ${VIMRT}\keymap\README.txt
+ File ${VIMRT}\keymap\*.vim
+ SetOutPath $0
+ !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "${GETTEXT}\gettext${BIT}\libintl-8.dll" \
+ "$0\libintl-8.dll" "$0"
+ !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "${GETTEXT}\gettext${BIT}\libiconv-2.dll" \
+ "$0\libiconv-2.dll" "$0"
+ !if /FileExists "${GETTEXT}\gettext${BIT}\libgcc_s_sjlj-1.dll"
+ # Install libgcc_s_sjlj-1.dll only if it is needed.
+ !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "${GETTEXT}\gettext${BIT}\libgcc_s_sjlj-1.dll" \
+ "$0\libgcc_s_sjlj-1.dll" "$0"
+ !endif
+
+ ${If} ${SectionIsSelected} ${id_section_editwith}
+ ${If} ${RunningX64}
+ # Install DLLs for 64-bit gvimext.dll into the GvimExt64 directory.
+ SetOutPath $0\GvimExt64
+ ClearErrors
+ !define LIBRARY_X64
+ !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "${GETTEXT}\gettext64\libintl-8.dll" \
+ "$0\GvimExt64\libintl-8.dll" "$0\GvimExt64"
+ !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "${GETTEXT}\gettext64\libiconv-2.dll" \
+ "$0\GvimExt64\libiconv-2.dll" "$0\GvimExt64"
+ !undef LIBRARY_X64
+ ${EndIf}
+
+ # Install DLLs for 32-bit gvimext.dll into the GvimExt32 directory.
+ SetOutPath $0\GvimExt32
+ ClearErrors
+ !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "${GETTEXT}\gettext32\libintl-8.dll" \
+ "$0\GvimExt32\libintl-8.dll" "$0\GvimExt32"
+ !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "${GETTEXT}\gettext32\libiconv-2.dll" \
+ "$0\GvimExt32\libiconv-2.dll" "$0\GvimExt32"
+ !if /FileExists "${GETTEXT}\gettext32\libgcc_s_sjlj-1.dll"
+ # Install libgcc_s_sjlj-1.dll only if it is needed.
+ !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "${GETTEXT}\gettext32\libgcc_s_sjlj-1.dll" \
+ "$0\GvimExt32\libgcc_s_sjlj-1.dll" "$0\GvimExt32"
+ !endif
+ ${EndIf}
+SectionEnd
!endif
##########################################################
Section -call_install_exe
SetOutPath $0
- ExecWait "$0\install.exe $1"
+ DetailPrint "$(str_msg_registering)"
+ nsExec::Exec "$0\install.exe $1"
+ Pop $3
SectionEnd
##########################################################
+!macro SaveSectionSelection section_id reg_value
+ ${If} ${SectionIsSelected} ${section_id}
+ WriteRegDWORD HKLM "${UNINST_REG_KEY_VIM}" ${reg_value} 1
+ ${Else}
+ WriteRegDWORD HKLM "${UNINST_REG_KEY_VIM}" ${reg_value} 0
+ ${EndIf}
+!macroend
+
Section -post
+
+ # Get estimated install size
+ SectionGetSize ${id_section_exe} $3
+ ${If} ${SectionIsSelected} ${id_section_console}
+ SectionGetSize ${id_section_console} $4
+ IntOp $3 $3 + $4
+ ${EndIf}
+ ${If} ${SectionIsSelected} ${id_section_editwith}
+ SectionGetSize ${id_section_editwith} $4
+ IntOp $3 $3 + $4
+ ${EndIf}
+!ifdef HAVE_VIS_VIM
+ ${If} ${SectionIsSelected} ${id_section_visvim}
+ SectionGetSize ${id_section_visvim} $4
+ IntOp $3 $3 + $4
+ ${EndIf}
+!endif
+!ifdef HAVE_NLS
+ ${If} ${SectionIsSelected} ${id_section_nls}
+ SectionGetSize ${id_section_nls} $4
+ IntOp $3 $3 + $4
+ ${EndIf}
+!endif
+
+ # Register EstimatedSize and AllowSilent.
+ # Other information will be set by the install.exe (dosinst.c).
+ ${If} ${RunningX64}
+ SetRegView 64
+ ${EndIf}
+ WriteRegDWORD HKLM "${UNINST_REG_KEY_VIM}" "EstimatedSize" $3
+ WriteRegDWORD HKLM "${UNINST_REG_KEY_VIM}" "AllowSilent" 1
+ ${If} ${RunningX64}
+ SetRegView lastused
+ ${EndIf}
+
+ # Store the selections to the registry.
+ ${If} ${RunningX64}
+ SetRegView 64
+ ${EndIf}
+ !insertmacro SaveSectionSelection ${id_section_console} "select_console"
+ !insertmacro SaveSectionSelection ${id_section_batch} "select_batch"
+ !insertmacro SaveSectionSelection ${id_section_desktop} "select_desktop"
+ !insertmacro SaveSectionSelection ${id_section_startmenu} "select_startmenu"
+ !insertmacro SaveSectionSelection ${id_section_editwith} "select_editwith"
+ !insertmacro SaveSectionSelection ${id_section_vimrc} "select_vimrc"
+ !insertmacro SaveSectionSelection ${id_section_pluginhome} "select_pluginhome"
+ !insertmacro SaveSectionSelection ${id_section_pluginvim} "select_pluginvim"
+!ifdef HAVE_VIS_VIM
+ !insertmacro SaveSectionSelection ${id_section_visvim} "select_visvim"
+!endif
+!ifdef HAVE_NLS
+ !insertmacro SaveSectionSelection ${id_section_nls} "select_nls"
+!endif
+ ${If} ${RunningX64}
+ SetRegView lastused
+ ${EndIf}
+
BringToFront
SectionEnd
##########################################################
+!macro LoadSectionSelection section_id reg_value
+ ClearErrors
+ ReadRegDWORD $3 HKLM "${UNINST_REG_KEY_VIM}" ${reg_value}
+ ${IfNot} ${Errors}
+ ${If} $3 = 1
+ !insertmacro SelectSection ${section_id}
+ ${Else}
+ !insertmacro UnselectSection ${section_id}
+ ${EndIf}
+ ${EndIf}
+!macroend
+
+Function .onInit
+!ifdef HAVE_MULTI_LANG
+ # Select a language (or read from the registry).
+ !insertmacro MUI_LANGDLL_DISPLAY
+!endif
+
+ # Check $VIM
+ ReadEnvStr $INSTDIR "VIM"
+
+ call CheckOldVim
+ Pop $3
+ ${If} $3 == ""
+ # No old versions of Vim found. Unselect and hide the section.
+ !insertmacro UnselectSection ${id_section_old_ver}
+ SectionSetInstTypes ${id_section_old_ver} 0
+ SectionSetText ${id_section_old_ver} ""
+ ${Else}
+ ${If} $INSTDIR == ""
+ StrCpy $INSTDIR $3
+ ${EndIf}
+ ${EndIf}
+
+ # If did not find a path: use the default dir.
+ ${If} $INSTDIR == ""
+!ifdef WIN64
+ StrCpy $INSTDIR "$PROGRAMFILES64\Vim"
+!else
+ StrCpy $INSTDIR "$PROGRAMFILES\Vim"
+!endif
+ ${EndIf}
+
+# Load the selections from the registry (if any).
+ ${If} ${RunningX64}
+ SetRegView 64
+ ${EndIf}
+ !insertmacro LoadSectionSelection ${id_section_console} "select_console"
+ !insertmacro LoadSectionSelection ${id_section_batch} "select_batch"
+ !insertmacro LoadSectionSelection ${id_section_desktop} "select_desktop"
+ !insertmacro LoadSectionSelection ${id_section_startmenu} "select_startmenu"
+ !insertmacro LoadSectionSelection ${id_section_editwith} "select_editwith"
+ !insertmacro LoadSectionSelection ${id_section_vimrc} "select_vimrc"
+ !insertmacro LoadSectionSelection ${id_section_pluginhome} "select_pluginhome"
+ !insertmacro LoadSectionSelection ${id_section_pluginvim} "select_pluginvim"
+!ifdef HAVE_VIS_VIM
+ !insertmacro LoadSectionSelection ${id_section_visvim} "select_visvim"
+!endif
+!ifdef HAVE_NLS
+ !insertmacro LoadSectionSelection ${id_section_nls} "select_nls"
+!endif
+ ${If} ${RunningX64}
+ SetRegView lastused
+ ${EndIf}
+
+ # User variables:
+ # $0 - holds the directory the executables are installed to
+ # $1 - holds the parameters to be passed to install.exe. Starts with OLE
+ # registration (since a non-OLE gvim will not complain, and we want to
+ # always register an OLE gvim).
+ # $2 - holds the names to create batch files for
+ StrCpy $0 "$INSTDIR\vim${VER_MAJOR}${VER_MINOR}"
+ StrCpy $1 "-register-OLE"
+ StrCpy $2 "gvim evim gview gvimdiff vimtutor"
+FunctionEnd
+
+Function .onInstSuccess
+ WriteUninstaller vim${VER_MAJOR}${VER_MINOR}\uninstall-gui.exe
+FunctionEnd
+
+Function .onInstFailed
+ MessageBox MB_OK|MB_ICONEXCLAMATION "$(str_msg_install_fail)" /SD IDOK
+FunctionEnd
+
+##########################################################
Function SetCustom
- # Display the InstallOptions dialog
+ # Display the _vimrc setting dialog using nsDialogs.
# Check if a _vimrc should be created
- SectionGetFlags ${sec_vimrc_id} $3
- IntOp $3 $3 & 1
- StrCmp $3 "1" +2 0
+ ${IfNot} ${SectionIsSelected} ${id_section_vimrc}
+ Abort
+ ${EndIf}
+
+ !insertmacro MUI_HEADER_TEXT \
+ $(str_vimrc_page_title) $(str_vimrc_page_subtitle)
+
+ nsDialogs::Create 1018
+ Pop $vim_dialog
+
+ ${If} $vim_dialog == error
Abort
+ ${EndIf}
+
+ ${If} ${RunningX64}
+ SetRegView 64
+ ${EndIf}
+
+ GetFunctionAddress $3 ValidateCustom
+ nsDialogs::OnBack $3
+
+
+ # 1st group - Compatibility
+ ${NSD_CreateGroupBox} 0 0 100% 32% $(str_msg_compat_title)
+ Pop $3
+
+ ${NSD_CreateLabel} 5% 10% 35% 8% $(str_msg_compat_desc)
+ Pop $3
+ ${NSD_CreateDropList} 18% 19% 75% 8% ""
+ Pop $vim_nsd_compat
+ ${NSD_CB_AddString} $vim_nsd_compat $(str_msg_compat_vi)
+ ${NSD_CB_AddString} $vim_nsd_compat $(str_msg_compat_vim)
+ ${NSD_CB_AddString} $vim_nsd_compat $(str_msg_compat_defaults)
+ ${NSD_CB_AddString} $vim_nsd_compat $(str_msg_compat_all)
+
+ # Default selection
+ ${If} $vim_compat_stat == ""
+ ReadRegStr $3 HKLM "${UNINST_REG_KEY_VIM}" "vim_compat"
+ ${Else}
+ StrCpy $3 $vim_compat_stat
+ ${EndIf}
+ ${If} $3 == "defaults"
+ StrCpy $4 2
+ ${ElseIf} $3 == "vim"
+ StrCpy $4 1
+ ${ElseIf} $3 == "vi"
+ StrCpy $4 0
+ ${Else} # default
+ StrCpy $4 3
+ ${EndIf}
+ ${NSD_CB_SetSelectionIndex} $vim_nsd_compat $4
+
+
+ # 2nd group - Key remapping
+ ${NSD_CreateGroupBox} 0 35% 100% 31% $(str_msg_keymap_title)
+ Pop $3
+
+ ${NSD_CreateLabel} 5% 45% 90% 8% $(str_msg_keymap_desc)
+ Pop $3
+ ${NSD_CreateDropList} 38% 54% 55% 8% ""
+ Pop $vim_nsd_keymap
+ ${NSD_CB_AddString} $vim_nsd_keymap $(str_msg_keymap_default)
+ ${NSD_CB_AddString} $vim_nsd_keymap $(str_msg_keymap_windows)
+
+ # Default selection
+ ${If} $vim_keymap_stat == ""
+ ReadRegStr $3 HKLM "${UNINST_REG_KEY_VIM}" "vim_keyremap"
+ ${Else}
+ StrCpy $3 $vim_keymap_stat
+ ${EndIf}
+ ${If} $3 == "windows"
+ StrCpy $4 1
+ ${Else} # default
+ StrCpy $4 0
+ ${EndIf}
+ ${NSD_CB_SetSelectionIndex} $vim_nsd_keymap $4
+
- InstallOptions::dialog "$PLUGINSDIR\vimrc.ini"
+ # 3rd group - Mouse behavior
+ ${NSD_CreateGroupBox} 0 69% 100% 31% $(str_msg_mouse_title)
Pop $3
+
+ ${NSD_CreateLabel} 5% 79% 90% 8% $(str_msg_mouse_desc)
+ Pop $3
+ ${NSD_CreateDropList} 23% 87% 70% 8% ""
+ Pop $vim_nsd_mouse
+ ${NSD_CB_AddString} $vim_nsd_mouse $(str_msg_mouse_default)
+ ${NSD_CB_AddString} $vim_nsd_mouse $(str_msg_mouse_windows)
+ ${NSD_CB_AddString} $vim_nsd_mouse $(str_msg_mouse_unix)
+
+ # Default selection
+ ${If} $vim_mouse_stat == ""
+ ReadRegStr $3 HKLM "${UNINST_REG_KEY_VIM}" "vim_mouse"
+ ${Else}
+ StrCpy $3 $vim_mouse_stat
+ ${EndIf}
+ ${If} $3 == "xterm"
+ StrCpy $4 2
+ ${ElseIf} $3 == "windows"
+ StrCpy $4 1
+ ${Else} # default
+ StrCpy $4 0
+ ${EndIf}
+ ${NSD_CB_SetSelectionIndex} $vim_nsd_mouse $4
+
+ ${If} ${RunningX64}
+ SetRegView lastused
+ ${EndIf}
+
+ nsDialogs::Show
FunctionEnd
Function ValidateCustom
- ReadINIStr $3 "$PLUGINSDIR\vimrc.ini" "Field 2" "State"
- StrCmp $3 "1" 0 +3
- StrCpy $1 "$1 -vimrc-remap no"
- Goto behave
+ ${NSD_CB_GetSelectionIndex} $vim_nsd_compat $3
+ ${If} $3 = 0
+ StrCpy $vim_compat_stat "vi"
+ ${ElseIf} $3 = 1
+ StrCpy $vim_compat_stat "vim"
+ ${ElseIf} $3 = 2
+ StrCpy $vim_compat_stat "defaults"
+ ${Else}
+ StrCpy $vim_compat_stat "all"
+ ${EndIf}
- StrCpy $1 "$1 -vimrc-remap win"
+ ${NSD_CB_GetSelectionIndex} $vim_nsd_keymap $3
+ ${If} $3 = 0
+ StrCpy $vim_keymap_stat "default"
+ ${Else}
+ StrCpy $vim_keymap_stat "windows"
+ ${EndIf}
- behave:
- ReadINIStr $3 "$PLUGINSDIR\vimrc.ini" "Field 5" "State"
- StrCmp $3 "1" 0 +3
- StrCpy $1 "$1 -vimrc-behave unix"
- Goto done
+ ${NSD_CB_GetSelectionIndex} $vim_nsd_mouse $3
+ ${If} $3 = 0
+ StrCpy $vim_mouse_stat "default"
+ ${ElseIf} $3 = 1
+ StrCpy $vim_mouse_stat "windows"
+ ${Else}
+ StrCpy $vim_mouse_stat "xterm"
+ ${EndIf}
+FunctionEnd
- ReadINIStr $3 "$PLUGINSDIR\vimrc.ini" "Field 6" "State"
- StrCmp $3 "1" 0 +3
- StrCpy $1 "$1 -vimrc-behave mswin"
- Goto done
+##########################################################
+# Description for Installer Sections
+
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+ !insertmacro MUI_DESCRIPTION_TEXT ${id_section_old_ver} $(str_desc_old_ver)
+ !insertmacro MUI_DESCRIPTION_TEXT ${id_section_exe} $(str_desc_exe)
+ !insertmacro MUI_DESCRIPTION_TEXT ${id_section_console} $(str_desc_console)
+ !insertmacro MUI_DESCRIPTION_TEXT ${id_section_batch} $(str_desc_batch)
+ !insertmacro MUI_DESCRIPTION_TEXT ${id_group_icons} $(str_desc_icons)
+ !insertmacro MUI_DESCRIPTION_TEXT ${id_section_desktop} $(str_desc_desktop)
+ !insertmacro MUI_DESCRIPTION_TEXT ${id_section_startmenu} $(str_desc_start_menu)
+ !insertmacro MUI_DESCRIPTION_TEXT ${id_section_editwith} $(str_desc_edit_with)
+ !insertmacro MUI_DESCRIPTION_TEXT ${id_section_vimrc} $(str_desc_vim_rc)
+ !insertmacro MUI_DESCRIPTION_TEXT ${id_group_plugin} $(str_desc_plugin)
+ !insertmacro MUI_DESCRIPTION_TEXT ${id_section_pluginhome} $(str_desc_plugin_home)
+ !insertmacro MUI_DESCRIPTION_TEXT ${id_section_pluginvim} $(str_desc_plugin_vim)
+!ifdef HAVE_VIS_VIM
+ !insertmacro MUI_DESCRIPTION_TEXT ${id_section_visvim} $(str_desc_vis_vim)
+!endif
+!ifdef HAVE_NLS
+ !insertmacro MUI_DESCRIPTION_TEXT ${id_section_nls} $(str_desc_nls)
+!endif
+!insertmacro MUI_FUNCTION_DESCRIPTION_END
- StrCpy $1 "$1 -vimrc-behave default"
- done:
-FunctionEnd
##########################################################
-Section Uninstall
+# Uninstaller Functions and Sections
+
+Function un.onInit
+!ifdef HAVE_MULTI_LANG
+ # Get the language from the registry.
+ !insertmacro MUI_UNGETLANGUAGE
+!endif
+FunctionEnd
+
+Section "un.$(str_unsection_register)" id_unsection_register
+ SectionIn RO
+
# Apparently $INSTDIR is set to the directory where the uninstaller is
# created. Thus the "vim61" directory is included in it.
StrCpy $0 "$INSTDIR"
+!ifdef HAVE_VIS_VIM
# If VisVim was installed, unregister the DLL.
- IfFileExists "$0\VisVim.dll" Has_VisVim No_VisVim
- Has_VisVim:
- ExecWait "regsvr32.exe /u /s $0\VisVim.dll"
-
- No_VisVim:
+ ${If} ${FileExists} "$0\VisVim.dll"
+ ExecWait "regsvr32.exe /u /s $0\VisVim.dll"
+ ${EndIf}
+!endif
# delete the context menu entry and batch files
- ExecWait "$0\uninstal.exe -nsis"
+ DetailPrint "$(str_msg_unregistering)"
+ nsExec::Exec "$0\uninstal.exe -nsis"
+ Pop $3
# We may have been put to the background when uninstall did something.
BringToFront
- # ask the user if the Vim version dir must be removed
- MessageBox MB_YESNO|MB_ICONQUESTION \
- "Would you like to delete $0?$\n \
- $\nIt contains the Vim executables and runtime files." IDNO NoRemoveExes
+ # Delete the installer language setting.
+ DeleteRegKey ${MUI_LANGDLL_REGISTRY_ROOT} ${MUI_LANGDLL_REGISTRY_KEY}
+SectionEnd
+
+Section "un.$(str_unsection_exe)" id_unsection_exe
+
+ StrCpy $0 "$INSTDIR"
+
+ # Delete gettext and iconv DLLs
+ ${If} ${FileExists} "$0\libiconv-2.dll"
+ !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "$0\libiconv-2.dll"
+ ${EndIf}
+ ${If} ${FileExists} "$0\libintl-8.dll"
+ !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "$0\libintl-8.dll"
+ ${EndIf}
+ ${If} ${FileExists} "$0\libgcc_s_sjlj-1.dll"
+ !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "$0\libgcc_s_sjlj-1.dll"
+ ${EndIf}
+ # Delete other DLLs
Delete /REBOOTOK $0\*.dll
- Delete /REBOOTOK $0\GvimExt32\*.dll
+
+ # Delete 64-bit GvimExt
${If} ${RunningX64}
- Delete /REBOOTOK $0\GvimExt64\*.dll
+ !define LIBRARY_X64
+ ${If} ${FileExists} "$0\GvimExt64\gvimext.dll"
+ !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "$0\GvimExt64\gvimext.dll"
+ ${EndIf}
+ ${If} ${FileExists} "$0\GvimExt64\libiconv-2.dll"
+ !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "$0\GvimExt64\libiconv-2.dll"
+ ${EndIf}
+ ${If} ${FileExists} "$0\GvimExt64\libintl-8.dll"
+ !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "$0\GvimExt64\libintl-8.dll"
+ ${EndIf}
+ ${If} ${FileExists} "$0\GvimExt64\libwinpthread-1.dll"
+ !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "$0\GvimExt64\libwinpthread-1.dll"
+ ${EndIf}
+ !undef LIBRARY_X64
+ RMDir /r $0\GvimExt64
+ ${EndIf}
+
+ # Delete 32-bit GvimExt
+ ${If} ${FileExists} "$0\GvimExt32\gvimext.dll"
+ !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "$0\GvimExt32\gvimext.dll"
+ ${EndIf}
+ ${If} ${FileExists} "$0\GvimExt32\libiconv-2.dll"
+ !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "$0\GvimExt32\libiconv-2.dll"
${EndIf}
+ ${If} ${FileExists} "$0\GvimExt32\libintl-8.dll"
+ !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "$0\GvimExt32\libintl-8.dll"
+ ${EndIf}
+ ${If} ${FileExists} "$0\GvimExt32\libgcc_s_sjlj-1.dll"
+ !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \
+ "$0\GvimExt32\libgcc_s_sjlj-1.dll"
+ ${EndIf}
+ RMDir /r $0\GvimExt32
ClearErrors
# Remove everything but *.dll files. Avoids that
@@ -555,12 +1050,15 @@ Section Uninstall
RMDir /r $0\ftplugin
RMDir /r $0\indent
RMDir /r $0\macros
+ RMDir /r $0\pack
RMDir /r $0\plugin
RMDir /r $0\spell
RMDir /r $0\syntax
RMDir /r $0\tools
RMDir /r $0\tutor
+!ifdef HAVE_VIS_VIM
RMDir /r $0\VisVim
+!endif
RMDir /r $0\lang
RMDir /r $0\keymap
Delete $0\*.exe
@@ -568,46 +1066,78 @@ Section Uninstall
Delete $0\*.vim
Delete $0\*.txt
- IfErrors ErrorMess NoErrorMess
- ErrorMess:
- MessageBox MB_OK|MB_ICONEXCLAMATION \
- "Some files in $0 have not been deleted!$\nYou must do it manually."
- NoErrorMess:
+ ${If} ${Errors}
+ MessageBox MB_OK|MB_ICONEXCLAMATION $(str_msg_rm_exe_fail) /SD IDOK
+ ${EndIf}
# No error message if the "vim62" directory can't be removed, the
# gvimext.dll may still be there.
RMDir $0
+SectionEnd
+
+# Remove "vimfiles" directory under the specified directory.
+!macro RemoveVimfiles dir
+ ${If} ${FileExists} ${dir}\vimfiles
+ RMDir ${dir}\vimfiles\colors
+ RMDir ${dir}\vimfiles\compiler
+ RMDir ${dir}\vimfiles\doc
+ RMDir ${dir}\vimfiles\ftdetect
+ RMDir ${dir}\vimfiles\ftplugin
+ RMDir ${dir}\vimfiles\indent
+ RMDir ${dir}\vimfiles\keymap
+ RMDir ${dir}\vimfiles\plugin
+ RMDir ${dir}\vimfiles\syntax
+ RMDir ${dir}\vimfiles
+ ${EndIf}
+!macroend
+
+SectionGroup "un.$(str_ungroup_plugin)" id_ungroup_plugin
+ Section /o "un.$(str_unsection_plugin_home)" id_unsection_plugin_home
+ # get the home dir
+ ReadEnvStr $0 "HOME"
+ ${If} $0 == ""
+ ReadEnvStr $0 "HOMEDRIVE"
+ ReadEnvStr $1 "HOMEPATH"
+ StrCpy $0 "$0$1"
+ ${If} $0 == ""
+ ReadEnvStr $0 "USERPROFILE"
+ ${EndIf}
+ ${EndIf}
+
+ ${If} $0 != ""
+ !insertmacro RemoveVimfiles $0
+ ${EndIf}
+ SectionEnd
- NoRemoveExes:
+ Section "un.$(str_unsection_plugin_vim)" id_unsection_plugin_vim
+ # get the parent dir of the installation
+ Push $INSTDIR
+ Call un.GetParent
+ Pop $0
+
+ # if a plugin dir was created at installation remove it
+ !insertmacro RemoveVimfiles $0
+ SectionEnd
+SectionGroupEnd
+
+Section "un.$(str_unsection_rootdir)" id_unsection_rootdir
# get the parent dir of the installation
Push $INSTDIR
Call un.GetParent
Pop $0
- StrCpy $1 $0
-
- # if a plugin dir was created at installation ask the user to remove it
- # first look in the root of the installation then in HOME
- IfFileExists $1\vimfiles AskRemove 0
- ReadEnvStr $1 "HOME"
- StrCmp $1 "" NoRemove 0
-
- IfFileExists $1\vimfiles 0 NoRemove
-
- AskRemove:
- MessageBox MB_YESNO|MB_ICONQUESTION \
- "Remove all files in your $1\vimfiles directory?$\n \
- $\nCAREFUL: If you have created something there that you want to keep, click No" IDNO Fin
- RMDir /r $1\vimfiles
- NoRemove:
-
- # ask the user if the Vim root dir must be removed
- MessageBox MB_YESNO|MB_ICONQUESTION \
- "Would you like to remove $0?$\n \
- $\nIt contains your Vim configuration files!" IDNO NoDelete
- RMDir /r $0 ; skipped if no
- NoDelete:
-
- Fin:
- Call un.onUnInstSuccess
+ Delete $0\_vimrc
+ RMDir $0
SectionEnd
+
+##########################################################
+# Description for Uninstaller Sections
+
+!insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN
+ !insertmacro MUI_DESCRIPTION_TEXT ${id_unsection_register} $(str_desc_unregister)
+ !insertmacro MUI_DESCRIPTION_TEXT ${id_unsection_exe} $(str_desc_rm_exe)
+ !insertmacro MUI_DESCRIPTION_TEXT ${id_ungroup_plugin} $(str_desc_rm_plugin)
+ !insertmacro MUI_DESCRIPTION_TEXT ${id_unsection_plugin_home} $(str_desc_rm_plugin_home)
+ !insertmacro MUI_DESCRIPTION_TEXT ${id_unsection_plugin_vim} $(str_desc_rm_plugin_vim)
+ !insertmacro MUI_DESCRIPTION_TEXT ${id_unsection_rootdir} $(str_desc_rm_rootdir)
+!insertmacro MUI_UNFUNCTION_DESCRIPTION_END
diff --git a/nsis/icons/header.bmp b/nsis/icons/header.bmp
new file mode 100644
index 000000000..c2f426953
--- /dev/null
+++ b/nsis/icons/header.bmp
Binary files differ
diff --git a/nsis/icons/header.svg b/nsis/icons/header.svg
new file mode 100644
index 000000000..21e60fbc4
--- /dev/null
+++ b/nsis/icons/header.svg
@@ -0,0 +1,265 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="300"
+ height="114"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="header.svg"
+ inkscape:export-filename="header.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs4">
+ <filter
+ id="filter2840"
+ inkscape:label="Drop shadow"
+ width="1.5"
+ height="1.5"
+ x="-.25"
+ y="-.25">
+ <feGaussianBlur
+ id="feGaussianBlur2842"
+ in="SourceAlpha"
+ stdDeviation="3.000000"
+ result="blur" />
+ <feColorMatrix
+ id="feColorMatrix2844"
+ result="bluralpha"
+ type="matrix"
+ values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.600000 0 " />
+ <feOffset
+ id="feOffset2846"
+ in="bluralpha"
+ dx="-5.000000"
+ dy="5.000000"
+ result="offsetBlur" />
+ <feMerge
+ id="feMerge2848">
+ <feMergeNode
+ id="feMergeNode2850"
+ in="offsetBlur" />
+ <feMergeNode
+ id="feMergeNode2852"
+ in="SourceGraphic" />
+ </feMerge>
+ </filter>
+ <filter
+ id="filter2910"
+ inkscape:label="Drop shadow"
+ width="1.5"
+ height="1.5"
+ x="-.25"
+ y="-.25">
+ <feGaussianBlur
+ id="feGaussianBlur2912"
+ in="SourceAlpha"
+ stdDeviation="2.500000"
+ result="blur" />
+ <feColorMatrix
+ id="feColorMatrix2914"
+ result="bluralpha"
+ type="matrix"
+ values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.600000 0 " />
+ <feOffset
+ id="feOffset2916"
+ in="bluralpha"
+ dx="-3.000000"
+ dy="3.000000"
+ result="offsetBlur" />
+ <feMerge
+ id="feMerge2918">
+ <feMergeNode
+ id="feMergeNode2920"
+ in="offsetBlur" />
+ <feMergeNode
+ id="feMergeNode2922"
+ in="SourceGraphic" />
+ </feMerge>
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.1369427"
+ inkscape:cx="130.27686"
+ inkscape:cy="77.09629"
+ inkscape:document-units="px"
+ inkscape:current-layer="header"
+ showgrid="false"
+ inkscape:window-width="1280"
+ inkscape:window-height="942"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:snap-global="true"
+ inkscape:showpageshadow="false" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="header"
+ transform="translate(0,-938.36218)">
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ id="text3026"
+ x="4.0525044"
+ y="-8.7699928">The editor</text>
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:100%;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;filter:url(#filter2910)"
+ x="178.45901"
+ y="988.47156"
+ id="text3198"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan3200"
+ x="178.45901"
+ y="988.47156"
+ style="font-size:36px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Courier New;-inkscape-font-specification:Courier New Bold">The</tspan><tspan
+ sodipodi:role="line"
+ x="178.45901"
+ y="1024.4716"
+ id="tspan3202"
+ style="font-size:36px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Courier New;-inkscape-font-specification:Courier New Bold">editor</tspan></text>
+ <g
+ id="g2916"
+ style="filter:url(#filter2840)">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2999"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="M 107.53604,994.85892 57.991535,946.32092 9.4535173,995.84025 57.991535,1044.4034 107.53604,994.85892" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3003"
+ style="fill:#006b05;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 102.57907,994.85892 2.96915,0 -47.556685,47.55668 0,-2.9691 44.587535,-44.58758" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3007"
+ style="fill:#007d17;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 11.441335,995.84025 2.969148,0 43.581052,43.60625 0,2.9691 -46.5502,-46.57535" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3011"
+ style="fill:#66ff99;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 57.991535,951.25272 0,-2.94398 -46.5502,47.53151 2.969148,0 43.581052,-44.58753" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3015"
+ style="fill:#45ff02;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 57.991535,948.30873 0,2.94399 44.587535,43.6062 2.96915,0 -47.556685,-46.55019" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3019"
+ style="fill:#009933;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 57.991535,1039.4465 44.587535,-44.58758 -44.587535,-43.6062 -43.581052,44.58753 43.581052,43.60625" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3023"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 67.25125,961.16664 2.969146,2.99431 0,0 -20.482085,20.78405 0,-20.78405 1.987817,0 2.969148,-2.99431 0,-7.90094 -2.969148,-2.99431 -33.012896,0 -2.969149,2.99431 0,7.90094 2.969149,2.99431 2.314928,0 0,67.35935 3.623367,2.9692 10.241043,0 70.98276,-73.32286 0,-7.90094 -2.96915,-2.99431 -32.358674,0 -3.296256,2.99431 0,7.90094" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3027"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 19.694561,962.17314 -1.987821,-1.98782 0,-5.9383 1.987821,-1.98782 31.05024,-0.0252 1.962656,2.01298 -1.962656,0.95617 -1.00649,-0.95617 -30.04375,4.9318 0,2.99432" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3031"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 25.632856,1032.5017 -2.314928,-1.9878 0,-68.36592 2.314928,-1.96266 0,72.31638" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3035"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 75.177364,962.17314 1.987819,-1.98782 0,3.97563 -33.038059,33.66712 3.64853,-7.9261 27.40171,-27.72883" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3039"
+ style="fill:#7f7f7f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 26.312236,959.20399 -0.67938,0.98133 -2.314928,1.98782 -3.623367,0 0,-3.97563 6.617675,1.00648" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3043"
+ style="fill:#7f7f7f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 47.775654,962.17314 0,27.72883 -3.64853,7.90094 0,-37.64275 5.611187,0 1.00649,-0.98133 -1.00649,-4.93181 2.969146,0 0,5.9383 -1.962656,1.98782 -2.969147,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3047"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 71.201725,962.17314 -1.962656,-1.98782 0,-5.9383 2.289766,-1.98782 30.068915,0 2.31493,1.98782 -3.32142,2.96915 -29.389535,1.96265 0,2.99432" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3051"
+ style="fill:#7f7f7f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 103.91268,960.18532 -69.699491,72.31638 -8.580333,0 0,-2.9692 6.290568,0 69.674326,-71.33499 -1.00649,-3.95049 3.32142,0 0,5.9383" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3055"
+ style="fill:#7f7f7f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 77.819404,959.20399 -0.679382,0.98133 -1.962658,1.98782 -3.975639,0 0,-3.97563 6.617679,1.00648" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3059"
+ style="fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 44.127124,997.80291 0,-37.64275 5.611187,0 1.00649,-0.98134 0,-3.97563 -1.00649,-0.98133 -29.062421,0 -0.981329,0.98133 0,3.97563 0.981329,0.98134 4.956966,0 0,69.37234 1.283276,0.9814 5.661511,0 69.347217,-72.31639 0,-2.84335 -1.00649,-1.1323 -28.710153,0 -1.006492,0.98133 0,4.0008 1.006492,0.98133 4.956966,0 0,3.97563 -33.038059,33.64196" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3063"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 62.143307,997.85323 2.31493,-1.98781 5.938295,0 1.660709,1.98781 -1.987817,5.93827 -2.289767,1.9879 -5.938295,0 -1.685872,-1.9879 1.987817,-5.93827" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3067"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 64.131127,1030.539 5.963458,-17.8149 -1.987818,0 1.987818,-5.9634 8.882281,0 1.987818,1.9878 1.333602,0 1.962657,-1.9878 6.617676,0 1.98782,1.9878 1.308439,0 1.987818,-1.9878 7.246734,0 2.64204,3.9756 -4.32791,14.0909 1.96265,0 -1.91233,5.7118 -11.901751,0 4.655019,-13.8644 -2.969147,0 -2.742688,8.1023 1.962658,0 -1.862008,5.7621 -11.901753,0 4.629856,-13.8644 -2.969146,0 -2.767852,8.1526 1.987821,0 -1.862008,5.7118 -11.901754,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3071"
+ style="fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 102.50359,1008.7485 1.53489,2.1891 -4.881475,15.6509 1.962655,0 -0.65422,1.9627 -7.92611,0 4.629858,-13.8644 -6.944788,0 -3.950475,11.9017 1.962657,0 -0.654219,1.9627 -7.926114,0 4.629855,-13.8644 -6.944785,0 -3.950476,11.9017 1.987818,0 -0.67938,1.9627 -7.926116,0 5.963458,-17.8149 -1.987818,0 0.654217,-1.9878 7.271898,0 1.987818,1.9878 1.962657,0 1.987819,-1.9878 5.938295,0 1.987821,1.9878 1.987818,0 1.987821,-1.9878 5.988621,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3075"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 69.088095,1006.7607 -6.064107,18.0413 2.063305,0 -1.962657,5.737 -11.876589,0 5.938295,-17.8149 -1.98782,0 13.889573,-5.9634 z m -13.889573,5.9634 1.98782,-5.9634 11.901753,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3079"
+ style="fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 61.816199,1028.5512 0.654219,-1.9627 -1.987819,0 5.963458,-17.84 -8.253225,0 -0.67938,1.9878 2.314928,0 -5.938297,17.8149 7.926116,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3083"
+ style="fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07548681;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ d="m 68.408713,1002.8102 1.333602,-3.97563 -0.65422,-0.98134 -3.975639,0 -1.308438,0.98134 -1.333601,3.97563 0.679382,0.9813 3.975639,0 1.283275,-0.9813" />
+ </g>
+ </g>
+</svg>
diff --git a/nsis/icons/un_header.bmp b/nsis/icons/un_header.bmp
new file mode 100644
index 000000000..4b6516951
--- /dev/null
+++ b/nsis/icons/un_header.bmp
Binary files differ
diff --git a/nsis/icons/uninstall.bmp b/nsis/icons/uninstall.bmp
new file mode 100644
index 000000000..223d6a45d
--- /dev/null
+++ b/nsis/icons/uninstall.bmp
Binary files differ
diff --git a/nsis/icons/welcome.bmp b/nsis/icons/welcome.bmp
new file mode 100644
index 000000000..6ef2a9b99
--- /dev/null
+++ b/nsis/icons/welcome.bmp
Binary files differ
diff --git a/nsis/icons/welcome.svg b/nsis/icons/welcome.svg
new file mode 100644
index 000000000..bf9919430
--- /dev/null
+++ b/nsis/icons/welcome.svg
@@ -0,0 +1,268 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="328"
+ height="628"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="welcome.svg"
+ inkscape:export-filename="welcome.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs4">
+ <filter
+ id="filter3356"
+ inkscape:label="Drop shadow"
+ width="1.5"
+ height="1.5"
+ x="-.25"
+ y="-.25">
+ <feGaussianBlur
+ id="feGaussianBlur3358"
+ in="SourceAlpha"
+ stdDeviation="5.000000"
+ result="blur" />
+ <feColorMatrix
+ id="feColorMatrix3360"
+ result="bluralpha"
+ type="matrix"
+ values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.600000 0 " />
+ <feOffset
+ id="feOffset3362"
+ in="bluralpha"
+ dx="-10.000000"
+ dy="10.000000"
+ result="offsetBlur" />
+ <feMerge
+ id="feMerge3364">
+ <feMergeNode
+ id="feMergeNode3366"
+ in="offsetBlur" />
+ <feMergeNode
+ id="feMergeNode3368"
+ in="SourceGraphic" />
+ </feMerge>
+ </filter>
+ <filter
+ id="filter3496"
+ inkscape:label="Drop shadow"
+ width="1.5"
+ height="1.5"
+ x="-.25"
+ y="-.25">
+ <feGaussianBlur
+ id="feGaussianBlur3498"
+ in="SourceAlpha"
+ stdDeviation="3.000000"
+ result="blur" />
+ <feColorMatrix
+ id="feColorMatrix3500"
+ result="bluralpha"
+ type="matrix"
+ values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.600000 0 " />
+ <feOffset
+ id="feOffset3502"
+ in="bluralpha"
+ dx="-5.000000"
+ dy="5.000000"
+ result="offsetBlur" />
+ <feMerge
+ id="feMerge3504">
+ <feMergeNode
+ id="feMergeNode3506"
+ in="offsetBlur" />
+ <feMergeNode
+ id="feMergeNode3508"
+ in="SourceGraphic" />
+ </feMerge>
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.0716561"
+ inkscape:cx="122.81449"
+ inkscape:cy="381.22777"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1280"
+ inkscape:window-height="942"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:snap-global="true"
+ inkscape:showpageshadow="false" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-424.36218)">
+ <rect
+ style="fill:#eeffcc;fill-opacity:1;stroke:#007f00;stroke-width:2.0138948;stroke-miterlimit:2.6099999;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3510"
+ width="327.98608"
+ height="635.98608"
+ x="-0.99305254"
+ y="420.36914" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#ffffff;fill-opacity:0;stroke:none"
+ id="path3795"
+ sodipodi:cx="92.889717"
+ sodipodi:cy="94.761551"
+ sodipodi:rx="83.062592"
+ sodipodi:ry="84.466469"
+ d="m 175.95231,94.761551 c 0,46.649539 -37.18839,84.466469 -83.062593,84.466469 -45.874202,0 -83.0625915,-37.81693 -83.0625915,-84.466469 0,-46.649543 37.1883895,-84.466469 83.0625915,-84.466469 45.874203,0 83.062593,37.816926 83.062593,84.466469 z"
+ transform="matrix(0,-2.3099964,-2.3548838,0,387.15244,952.93709)" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;filter:url(#filter3496)"
+ id="text3026"><textPath
+ xlink:href="#path3795"
+ startOffset="50%"
+ id="textPath3036"
+ style="font-size:58;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Courier New;-inkscape-font-specification:Courier New Bold;">The editor</textPath></text>
+ <g
+ id="g2968"
+ style="filter:url(#filter3356)">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2999"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="M 299.80052,736.9686 162.60646,602.56167 28.199478,739.68603 162.60646,874.16269 299.80052,736.9686" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3003"
+ style="fill:#006b05;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="m 286.07415,736.9686 8.22189,0 -131.68958,131.68962 0,-8.2219 123.46769,-123.46772" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3007"
+ style="fill:#007d17;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="m 33.703958,739.68603 8.221891,0 120.680611,120.75029 0,8.2219 L 33.703958,739.68603" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3011"
+ style="fill:#66ff99;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="m 162.60646,616.21837 0,-8.15223 -128.902502,131.61989 8.221891,0 120.680611,-123.46766" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3015"
+ style="fill:#45ff02;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="m 162.60646,608.06614 0,8.15223 123.46769,120.75023 8.22189,0 -131.68958,-128.90246" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3019"
+ style="fill:#009933;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="M 162.60646,860.43632 286.07415,736.9686 162.60646,616.21837 41.925849,739.68603 162.60646,860.43632" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3023"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="m 188.24761,643.67106 8.22188,8.29158 0,0 -56.71709,57.55326 0,-57.55326 5.50448,0 8.22189,-8.29158 0,-21.87855 -8.22189,-8.29157 -91.416257,0 -8.221894,8.29157 0,21.87855 8.221894,8.29158 6.410285,0 0,186.52539 10.033492,8.22191 28.358547,0 196.558893,-203.03888 0,-21.87855 -8.22189,-8.29157 -89.60466,0 -9.12768,8.29157 0,21.87855" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3027"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="m 56.558028,646.45817 -5.504489,-5.50448 0,-16.4438 5.504489,-5.50448 85.981452,-0.0697 5.4348,5.57416 -5.4348,2.64775 -2.78708,-2.64775 -83.194372,13.6567 0,8.29158" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3031"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="m 73.001805,841.20547 -6.410285,-5.50448 0,-189.3125 6.410285,-5.4348 0,200.25178" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3035"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="m 210.19587,646.45817 5.50448,-5.50448 0,11.00895 -91.48593,93.22786 10.10317,-21.94822 75.87828,-76.78411" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3039"
+ style="fill:#7f7f7f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="m 74.883082,638.23626 -1.881277,2.71743 -6.410285,5.50448 -10.033492,0 0,-11.00895 18.325054,2.78704" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3043"
+ style="fill:#7f7f7f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="m 134.31759,646.45817 0,76.78411 -10.10317,21.87855 0,-104.23681 15.53798,0 2.78708,-2.71743 -2.78708,-13.6567 8.22188,0 0,16.4438 -5.4348,5.50448 -8.22189,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3047"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="m 199.1869,646.45817 -5.43481,-5.50448 0,-16.4438 6.34061,-5.50448 83.26404,0 6.41029,5.50448 -9.19736,8.2219 -81.38277,5.4348 0,8.29158" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3051"
+ style="fill:#7f7f7f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="m 289.76703,640.95369 -193.005361,200.25177 -23.759864,0 0,-8.2219 17.419257,0 192.935678,-197.53434 -2.78707,-10.93933 9.19736,0 0,16.4438" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3055"
+ style="fill:#7f7f7f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="m 217.51196,638.23626 -1.88128,2.71743 -5.43481,5.50448 -11.00897,0 0,-11.00895 18.32506,2.78704" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3059"
+ style="fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="m 124.21442,745.12082 0,-104.23681 15.53798,0 2.78708,-2.71742 0,-11.00895 -2.78708,-2.71743 -80.476968,0 -2.717404,2.71743 0,11.00895 2.717404,2.71742 13.726373,0 0,192.09955 3.553528,2.71743 15.677333,0 192.029884,-200.25177 0,-7.87353 -2.78708,-3.13548 -79.50149,0 -2.78708,2.71743 0,11.07862 2.78708,2.71743 13.72637,0 0,11.00895 -91.48593,93.15818" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3063"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="m 174.10317,745.26018 6.41029,-5.50448 16.44377,0 4.59868,5.50448 -5.50447,16.4438 -6.34062,5.50448 -16.44377,0 -4.66836,-5.50448 5.50448,-16.4438" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3067"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="m 179.60765,835.77066 16.51346,-49.33135 -5.50448,0 5.50448,-16.51342 24.59599,0 5.50448,5.50447 3.69289,0 5.43481,-5.50447 18.32505,0 5.50449,5.50447 3.62321,0 5.50448,-5.50447 20.06698,0 7.31609,11.00895 -11.98445,39.01911 5.43481,0 -5.29546,15.81671 -32.95723,0 12.89025,-38.39208 -8.22189,0 -7.59479,22.43602 5.43481,0 -5.1561,15.95606 -32.95724,0 12.82057,-38.39208 -8.22188,0 -7.66448,22.57537 5.50449,0 -5.1561,15.81671 -32.95724,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3071"
+ style="fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="m 285.86512,775.43036 4.25029,6.06188 -13.51734,43.3391 5.43481,0 -1.8116,5.43485 -21.94826,0 12.82057,-38.39208 -19.23086,0 -10.93929,32.95723 5.43481,0 -1.81161,5.43485 -21.94826,0 12.82057,-38.39208 -19.23086,0 -10.93929,32.95723 5.50448,0 -1.88127,5.43485 -21.94827,0 16.51346,-49.33135 -5.50449,0 1.8116,-5.50448 20.13667,0 5.50448,5.50448 5.43481,0 5.50448,-5.50448 16.44378,0 5.50449,5.50448 5.50448,0 5.50449,-5.50448 16.58312,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3075"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="m 193.33403,769.92588 -16.79216,49.95839 5.71351,0 -5.43481,15.88639 -32.88755,0 16.44378,-49.33135 -5.50449,0 38.46172,-16.51343 z m -38.46172,16.51343 5.50449,-16.51343 32.95723,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3079"
+ style="fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="m 173.19737,830.26619 1.8116,-5.43485 -5.50448,0 16.51345,-49.40098 -22.85406,0 -1.88128,5.50448 6.41028,0 -16.44378,49.33135 21.94827,0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3083"
+ style="fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20903109000000000;stroke-miterlimit:2.60999990000000004;stroke-opacity:1;stroke-dasharray:none;"
+ d="m 191.45275,758.98656 3.69288,-11.00896 -1.8116,-2.71743 -11.00897,0 -3.62321,2.71743 -3.69288,11.00896 1.88128,2.71742 11.00897,0 3.55353,-2.71742" />
+ </g>
+ </g>
+</svg>
diff --git a/nsis/lang/danish.nsi b/nsis/lang/danish.nsi
new file mode 100644
index 000000000..fc3720a92
--- /dev/null
+++ b/nsis/lang/danish.nsi
@@ -0,0 +1,175 @@
+# vi:set ts=8 sts=4 sw=4 et fdm=marker:
+#
+# danish.nsi: Danish language strings for gvim NSIS installer.
+#
+# Locale ID : 1030
+# fileencoding : UTF-8
+# Author : scootergrisen
+
+!insertmacro MUI_LANGUAGE "Danish"
+
+
+# Overwrite the default translation.
+# These string should be always English. Otherwise dosinst.c fails.
+LangString ^SetupCaption ${LANG_DANISH} "$(^Name) Setup"
+LangString ^UninstallCaption ${LANG_DANISH} "$(^Name) Uninstall"
+
+##############################################################################
+# MUI Configuration Strings {{{1
+##############################################################################
+
+#LangString str_dest_folder ${LANG_DANISH} "Destinationsmappe (skal slutte med $\"vim$\")"
+
+LangString str_show_readme ${LANG_DANISH} "Vis README efter installationen er gennemført"
+
+# Install types:
+LangString str_type_typical ${LANG_DANISH} "Typisk"
+
+LangString str_type_minimal ${LANG_DANISH} "Minimal"
+
+LangString str_type_full ${LANG_DANISH} "Fuld"
+
+
+##############################################################################
+# Section Titles & Description {{{1
+##############################################################################
+
+LangString str_section_old_ver ${LANG_DANISH} "Afinstaller eksisterende version(er)"
+LangString str_desc_old_ver ${LANG_DANISH} "Afinstaller eksisterende Vim-version(er) fra dit system."
+
+LangString str_section_exe ${LANG_DANISH} "Vim GUI og afviklingsfiler"
+LangString str_desc_exe ${LANG_DANISH} "Vim GUI-eksekverbare- og afviklingsfiler. Komponenten kræves."
+
+LangString str_section_console ${LANG_DANISH} "Vim-konsolprogram"
+LangString str_desc_console ${LANG_DANISH} "Konsolversion af Vim (vim.exe)."
+
+LangString str_section_batch ${LANG_DANISH} "Opret .bat-filer"
+LangString str_desc_batch ${LANG_DANISH} "Opret .bat-filer til Vim-varianter i Windows-mappen til brug fra kommandolinjen."
+
+LangString str_group_icons ${LANG_DANISH} "Opret ikoner til Vim"
+LangString str_desc_icons ${LANG_DANISH} "Opret ikoner til Vim diverse steder for at hjælpe med at gøre adgangen let."
+
+LangString str_section_desktop ${LANG_DANISH} "På skrivebordet"
+LangString str_desc_desktop ${LANG_DANISH} "Opret ikoner til gVim-eksekverbare på skrivebordet."
+
+LangString str_section_start_menu ${LANG_DANISH} "I Programmer-mappen i menuen Start"
+LangString str_desc_start_menu ${LANG_DANISH} "Tilføj Vim i Programmer-mappen i menuen Start."
+
+#LangString str_section_quick_launch ${LANG_DANISH} "I værktøjslinjen Hurtig start"
+#LangString str_desc_quick_launch ${LANG_DANISH} "Tilføj Vim-genvej i værktøjslinjen Hurtig start."
+
+LangString str_section_edit_with ${LANG_DANISH} "Tilføj Vim-genvejsmenu"
+LangString str_desc_edit_with ${LANG_DANISH} "Tilføj Vim til listen i $\"Åbn med...$\"-genvejsmenuen."
+
+#LangString str_section_edit_with32 ${LANG_DANISH} "32-bit-version"
+#LangString str_desc_edit_with32 ${LANG_DANISH} "Tilføj Vim til listen i $\"Åbn med...$\"-genvejsmenuen for 32-bit-programmer."
+
+#LangString str_section_edit_with64 ${LANG_DANISH} "64-bit-version"
+#LangString str_desc_edit_with64 ${LANG_DANISH} "Tilføj Vim til listen i $\"Åbn med...$\"-genvejsmenuen for 64-bit-programmer."
+
+LangString str_section_vim_rc ${LANG_DANISH} "Opret standardkonfiguration"
+LangString str_desc_vim_rc ${LANG_DANISH} "Opret en standardkonfigurationsfil (_vimrc) hvis der ikke allerede findes en."
+
+LangString str_group_plugin ${LANG_DANISH} "Opret plugin-mapper"
+LangString str_desc_plugin ${LANG_DANISH} "Opret plugin-mapper. Plugin-mapper giver mulighed for at udvide Vim ved at slippe en fil i en mappen."
+
+LangString str_section_plugin_home ${LANG_DANISH} "Private"
+LangString str_desc_plugin_home ${LANG_DANISH} "Opret plugin-mapper i HOME-mappen."
+
+LangString str_section_plugin_vim ${LANG_DANISH} "Delte"
+LangString str_desc_plugin_vim ${LANG_DANISH} "Opret plugin-mapper i Vim-installationsmappe, det bruges af alle på systemet."
+
+LangString str_section_vis_vim ${LANG_DANISH} "VisVim-udvidelser"
+LangString str_desc_vis_vim ${LANG_DANISH} "VisVim-udvidelser til integrering i Microsoft Visual Studio."
+
+LangString str_section_nls ${LANG_DANISH} "Understøttelse af modersmål"
+LangString str_desc_nls ${LANG_DANISH} "Installer filer til understøttelse af modersmål."
+
+LangString str_unsection_register ${LANG_DANISH} "Afregistrer Vim"
+LangString str_desc_unregister ${LANG_DANISH} "Afregistrer Vim fra systemet."
+
+LangString str_unsection_exe ${LANG_DANISH} "Fjern Vim-eksekverbare-/afviklingsfiler"
+LangString str_desc_rm_exe ${LANG_DANISH} "Fjern alle Vim-eksekverbare- og afviklingsfiler."
+
+LangString str_ungroup_plugin ${LANG_DANISH} "Fjern plugin-mapper"
+LangString str_desc_rm_plugin ${LANG_DANISH} "Fjern plugin-mapperne hvis de er tomme."
+
+LangString str_unsection_plugin_home ${LANG_DANISH} "Privat"
+LangString str_desc_rm_plugin_home ${LANG_DANISH} "Fjern plugin-mapperne fra HOME-mappen."
+
+LangString str_unsection_plugin_vim ${LANG_DANISH} "Delte"
+LangString str_desc_rm_plugin_vim ${LANG_DANISH} "Fjern plugin-mapperne fra Vim-installationsmappen."
+
+LangString str_unsection_rootdir ${LANG_DANISH} "Fjern Vim-rodmappen"
+LangString str_desc_rm_rootdir ${LANG_DANISH} "Fjern Vim-rodmappen. Den indeholder dine Vim-konfigurationsfiler!"
+
+
+##############################################################################
+# Messages {{{1
+##############################################################################
+
+#LangString str_msg_too_many_ver ${LANG_DANISH} "Fandt $vim_old_ver_count Vim-versioner på dit system.$\r$\nInstallationsguiden kan højst håndtere ${VIM_MAX_OLD_VER}-versioner.$\r$\nFjern venligst nogle versioner og start igen."
+
+#LangString str_msg_invalid_root ${LANG_DANISH} "Ugyldig installationssti: $vim_install_root!$\r$\nDen skal slutte med $\"vim$\"."
+
+#LangString str_msg_bin_mismatch ${LANG_DANISH} "Uoverensstemmelse i binære sti!$\r$\n$\r$\nForventede at den binære sti var $\"$vim_bin_path$\",$\r$\nmen systemet indikerer at den binære sti er $\"$INSTDIR$\"."
+
+#LangString str_msg_vim_running ${LANG_DANISH} "Vim kører stadig på dit system.$\r$\nLuk venligst alle instanser af Vim inden du fortsætter."
+
+#LangString str_msg_register_ole ${LANG_DANISH} "Forsøger at registrere Vim med OLE. Der er ingen meddelelse til at indikere om det virker eller ej."
+
+#LangString str_msg_unreg_ole ${LANG_DANISH} "Forsøger at afregistrere Vim med OLE. Der er ingen meddelelse til at indikere om det virker eller ej."
+
+#LangString str_msg_rm_start ${LANG_DANISH} "Afinstallerer følgende version:"
+
+#LangString str_msg_rm_fail ${LANG_DANISH} "Kunne ikke afinstallere følgende version:"
+
+#LangString str_msg_no_rm_key ${LANG_DANISH} "Kan ikke finde registreringsdatabasenøgle for afinstallationsguiden."
+
+#LangString str_msg_no_rm_reg ${LANG_DANISH} "Kan ikke finde afinstallationsguiden fra registreringsdatabasen."
+
+#LangString str_msg_no_rm_exe ${LANG_DANISH} "Kan ikke tilgå afinstallationsguide."
+
+#LangString str_msg_rm_copy_fail ${LANG_DANISH} "Kunne ikke kopiere afinstallationsguide til midlertidig mappe."
+
+#LangString str_msg_rm_run_fail ${LANG_DANISH} "Kunne ikke køre afinstallationsguide."
+
+#LangString str_msg_abort_install ${LANG_DANISH} "Installationsguiden vil afbryde."
+
+LangString str_msg_install_fail ${LANG_DANISH} "Installationen mislykkedes. Bedre held næste gang."
+
+LangString str_msg_rm_exe_fail ${LANG_DANISH} "Nogle filer i $0 er ikke blevet slettet!$\r$\nDu skal gøre det manuelt."
+
+#LangString str_msg_rm_root_fail ${LANG_DANISH} "ADVARSEL: Kan ikke fjerne $\"$vim_install_root$\", den er ikke tom!"
+
+LangString str_msg_uninstalling ${LANG_DANISH} "Afinstallerer den gamle version..."
+
+LangString str_msg_registering ${LANG_DANISH} "Registrerer..."
+
+LangString str_msg_unregistering ${LANG_DANISH} "Afregistrerer..."
+
+
+##############################################################################
+# Dialog Box {{{1
+##############################################################################
+
+LangString str_vimrc_page_title ${LANG_DANISH} "Vælg _vimrc-indstillinger"
+LangString str_vimrc_page_subtitle ${LANG_DANISH} "Vælg indstillingerne til forbedring, tastatur og mus."
+
+LangString str_msg_compat_title ${LANG_DANISH} " Vi- / Vim-opførsel "
+LangString str_msg_compat_desc ${LANG_DANISH} "&Kompatibilitet og forbedringer"
+LangString str_msg_compat_vi ${LANG_DANISH} "Vi-kompatibel"
+LangString str_msg_compat_vim ${LANG_DANISH} "Vim original"
+LangString str_msg_compat_defaults ${LANG_DANISH} "Vim med nogle forbedringer (indlæs defaults.vim)"
+LangString str_msg_compat_all ${LANG_DANISH} "Vim med alle forbedringer (indlæs vimrc_example.vim) (standard)"
+
+LangString str_msg_keymap_title ${LANG_DANISH} " Tilknytninger "
+LangString str_msg_keymap_desc ${LANG_DANISH} "&Gentilknyt nogle få taster (Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F osv.)"
+LangString str_msg_keymap_default ${LANG_DANISH} "Gentilknyt ikke taster (standard)"
+LangString str_msg_keymap_windows ${LANG_DANISH} "Gentilknyt nogle få taster til Windows"
+
+LangString str_msg_mouse_title ${LANG_DANISH} " Mus "
+LangString str_msg_mouse_desc ${LANG_DANISH} "&Opførsel af højre og venstre knapper"
+LangString str_msg_mouse_default ${LANG_DANISH} "Højre: genvejsmenu, venstre: visuel tilstand (standard)"
+LangString str_msg_mouse_windows ${LANG_DANISH} "Højre: genvejsmenu, venstre: vælg-tilstand (Windows)"
+LangString str_msg_mouse_unix ${LANG_DANISH} "Højre: udvider markering, venstre: visuel tilstand (Unix)"
diff --git a/nsis/lang/dutch.nsi b/nsis/lang/dutch.nsi
new file mode 100644
index 000000000..3ff986dc3
--- /dev/null
+++ b/nsis/lang/dutch.nsi
@@ -0,0 +1,281 @@
+# vi:set ts=8 sts=4 sw=4 et fdm=marker:
+#
+# dutch.nsi : Dutch language strings for gvim NSIS installer.
+#
+# Locale ID : 1043
+# Locale Name : nl
+# fileencoding : UTF-8
+# Author : Peter Odding <peter@peterodding.com>
+
+!insertmacro MUI_LANGUAGE "Dutch"
+
+
+# Overwrite the default translation.
+# These string should be always English. Otherwise dosinst.c fails.
+LangString ^SetupCaption ${LANG_DUTCH} \
+ "$(^Name) Setup"
+LangString ^UninstallCaption ${LANG_DUTCH} \
+ "$(^Name) Uninstall"
+
+##############################################################################
+# MUI Configuration Strings {{{1
+##############################################################################
+
+#LangString str_dest_folder ${LANG_DUTCH} \
+# "Doelmap (moet eindigen op $\"vim$\")"
+
+LangString str_show_readme ${LANG_DUTCH} \
+ "README weergeven na installatie"
+
+# Install types:
+LangString str_type_typical ${LANG_DUTCH} \
+ "Gebruikelijk"
+
+LangString str_type_minimal ${LANG_DUTCH} \
+ "Minimaal"
+
+LangString str_type_full ${LANG_DUTCH} \
+ "Volledig"
+
+
+##############################################################################
+# Section Titles & Description {{{1
+##############################################################################
+
+LangString str_section_old_ver ${LANG_DUTCH} \
+ "Bestaande versie(s) de-installeren"
+LangString str_desc_old_ver ${LANG_DUTCH} \
+ "Bestaande Vim versie(s) van je systeem verwijderen."
+
+LangString str_section_exe ${LANG_DUTCH} \
+ "Vim GUI"
+LangString str_desc_exe ${LANG_DUTCH} \
+ "Vim GUI uitvoerbare bestanden en runtime bestanden. Dit component is vereist."
+
+LangString str_section_console ${LANG_DUTCH} \
+ "Vim console programma"
+LangString str_desc_console ${LANG_DUTCH} \
+ "Console versie van Vim (vim.exe)."
+
+LangString str_section_batch ${LANG_DUTCH} \
+ "Creëer .bat bestanden"
+LangString str_desc_batch ${LANG_DUTCH} \
+ "Creëer .bat bestanden voor Vim varianten in de Windows map voor \
+ commando regel gebruik."
+
+LangString str_group_icons ${LANG_DUTCH} \
+ "Creëer pictogrammen for Vim"
+LangString str_desc_icons ${LANG_DUTCH} \
+ "Creëer pictogrammen voor Vim op verschillende locaties voor gemakkelijke toegang."
+
+LangString str_section_desktop ${LANG_DUTCH} \
+ "Op het bureaublad"
+LangString str_desc_desktop ${LANG_DUTCH} \
+ "Creëer pictogrammen voor Vim uitvoerbare bestanden op het bureaublad."
+
+LangString str_section_start_menu ${LANG_DUTCH} \
+ "In de Programma's map in het start menu"
+LangString str_desc_start_menu ${LANG_DUTCH} \
+ "Voeg Vim toe aan de programma's map in het start menu. \
+ Van toepassing op Windows 95 en later."
+
+#LangString str_section_quick_launch ${LANG_DUTCH} \
+# "In de snel starten balk"
+#LangString str_desc_quick_launch ${LANG_DUTCH} \
+# "Voeg Vim snelkoppeling toe aan de snel starten balk."
+
+LangString str_section_edit_with ${LANG_DUTCH} \
+ "Voeg Vim contextmenu toe"
+LangString str_desc_edit_with ${LANG_DUTCH} \
+ "Voeg Vim toe aan de $\"Openen met...$\" contextmenu lijst."
+
+#LangString str_section_edit_with32 ${LANG_DUTCH} \
+# "32-bit versie"
+#LangString str_desc_edit_with32 ${LANG_DUTCH} \
+# "Voeg Vim toe aan de $\"Openen met...$\" contextmenu lijst \
+# voor 32-bit toepassingen."
+
+#LangString str_section_edit_with64 ${LANG_DUTCH} \
+# "64-bit versie"
+#LangString str_desc_edit_with64 ${LANG_DUTCH} \
+# "Voeg Vim toe aan de $\"Openen met...$\" contextmenu lijst \
+# voor 64-bit toepassingen."
+
+LangString str_section_vim_rc ${LANG_DUTCH} \
+ "Creëer standaard configuratie"
+LangString str_desc_vim_rc ${LANG_DUTCH} \
+ "Creëer een standaard configuratie bestand (_vimrc) als er nog geen bestaat."
+
+LangString str_group_plugin ${LANG_DUTCH} \
+ "Creëer Plugin mappen"
+LangString str_desc_plugin ${LANG_DUTCH} \
+ "Creëer plugin mappen. Plugin mappen maken het mogelijk om \
+ Vim uit te breiden door een bestand in een map te plaatsen."
+
+LangString str_section_plugin_home ${LANG_DUTCH} \
+ "Privé"
+LangString str_desc_plugin_home ${LANG_DUTCH} \
+ "Create plugin directories in HOME directory."
+
+LangString str_section_plugin_vim ${LANG_DUTCH} \
+ "Gedeeld"
+LangString str_desc_plugin_vim ${LANG_DUTCH} \
+ "Creëer plugin mappen in Vim installatie map, deze worden gebruikt \
+ voor iedereen op het systeem."
+
+LangString str_section_vis_vim ${LANG_DUTCH} \
+ "VisVim extensie"
+LangString str_desc_vis_vim ${LANG_DUTCH} \
+ "VisVim extensie voor Microsoft Visual Studio integratie."
+
+LangString str_section_nls ${LANG_DUTCH} \
+ "Ondersteuning voor andere talen"
+LangString str_desc_nls ${LANG_DUTCH} \
+ "Bestanden voor ondersteuning van andere talen dan Engels installeren."
+
+LangString str_unsection_register ${LANG_DUTCH} \
+ "Vim afmelden"
+LangString str_desc_unregister ${LANG_DUTCH} \
+ "Registratie van Vim in het systeem ongedaan maken."
+
+LangString str_unsection_exe ${LANG_DUTCH} \
+ "Vim uitvoerbare/runtime bestanden verwijderen"
+LangString str_desc_rm_exe ${LANG_DUTCH} \
+ "Verwijder alle Vim uitvoerbare bestanden en runtime bestanden."
+
+LangString str_ungroup_plugin ${LANG_DUTCH} \
+ "Remove plugin directories"
+LangString str_desc_rm_plugin ${LANG_DUTCH} \
+ "Remove the plugin directories if they are empty."
+
+LangString str_unsection_plugin_home ${LANG_DUTCH} \
+ "Privé"
+LangString str_desc_rm_plugin_home ${LANG_DUTCH} \
+ "Remove the plugin directories from HOME directory."
+
+LangString str_unsection_plugin_vim ${LANG_DUTCH} \
+ "Gedeeld"
+LangString str_desc_rm_plugin_vim ${LANG_DUTCH} \
+ "Remove the plugin directories from Vim install directory."
+
+LangString str_unsection_rootdir ${LANG_DUTCH} \
+ "Remove the Vim root directory"
+LangString str_desc_rm_rootdir ${LANG_DUTCH} \
+ "Remove the Vim root directory. It contains your Vim configuration files!"
+
+
+##############################################################################
+# Messages {{{1
+##############################################################################
+
+#LangString str_msg_too_many_ver ${LANG_DUTCH} \
+# "Er zijn $vim_old_ver_count Vim versies op je systeem gevonden.$\r$\n\
+# Deze installatie kan omgaan met maximaal ${VIM_MAX_OLD_VER} versies.$\r$\n\
+# Verwijder a.u.b. wat versies en probeer het dan opnieuw."
+
+#LangString str_msg_invalid_root ${LANG_DUTCH} \
+# "Ongeldig installatiepad: $vim_install_root!$\r$\n\
+# Het moet eindelijk op $\"vim$\"."
+
+#LangString str_msg_bin_mismatch ${LANG_DUTCH} \
+# "Binair pad onjuist!$\r$\n$\r$\n\
+# Het binaire pad zou $\"$vim_bin_path$\" moeten zijn,$\r$\n\
+# maar het systeem geeft aan dat het binaire pad $\"$INSTDIR$\" is."
+
+#LangString str_msg_vim_running ${LANG_DUTCH} \
+# "Vim is nog actief op je systeem.$\r$\n\
+# Sluit a.u.b. alle instanties van Vim voordat je verder gaat."
+
+#LangString str_msg_register_ole ${LANG_DUTCH} \
+# "Bezig met proberen om Vim te registreren met OLE. \
+# Er is geen bericht dat aangeeft of deze operatie slaagt."
+
+#LangString str_msg_unreg_ole ${LANG_DUTCH} \
+# "Bezig met proberen om Vim te de-registreren met OLE. \
+# Er is geen bericht dat aangeeft of deze operatie slaagt."
+
+#LangString str_msg_rm_start ${LANG_DUTCH} \
+# "De volgende versies worden verwijderd:"
+
+#LangString str_msg_rm_fail ${LANG_DUTCH} \
+# "De volgende versies konden niet worden verwijderd:"
+
+#LangString str_msg_no_rm_key ${LANG_DUTCH} \
+# "Kan de uninstaller register sleutel niet vinden."
+
+#LangString str_msg_no_rm_reg ${LANG_DUTCH} \
+# "Kan de uninstaller niet vinden via het register."
+
+#LangString str_msg_no_rm_exe ${LANG_DUTCH} \
+# "Kan geen toegang krijgen tot de uninstaller."
+
+#LangString str_msg_rm_copy_fail ${LANG_DUTCH} \
+# "Kon de uninstaller niet naar een tijdelijke map kopiëren."
+
+#LangString str_msg_rm_run_fail ${LANG_DUTCH} \
+# "Kon de uninstaller niet uitvoeren."
+
+#LangString str_msg_abort_install ${LANG_DUTCH} \
+# "Installatie wordt gestopt."
+
+LangString str_msg_install_fail ${LANG_DUTCH} \
+ "Installatie is mislukt."
+
+LangString str_msg_rm_exe_fail ${LANG_DUTCH} \
+ "Sommige bestanden in $0 zijn niet verwijderd!$\r$\n\
+ Dit moet je handmatig doen."
+
+#LangString str_msg_rm_root_fail ${LANG_DUTCH} \
+# "WAARSCHUWING: Kan $\"$vim_install_root$\" niet verwijderen omdat het niet leeg is!"
+
+LangString str_msg_uninstalling ${LANG_DUTCH} \
+ "Uninstalling the old version..."
+
+LangString str_msg_registering ${LANG_DUTCH} \
+ "Registering..."
+
+LangString str_msg_unregistering ${LANG_DUTCH} \
+ "Unregistering..."
+
+
+##############################################################################
+# Dialog Box {{{1
+##############################################################################
+
+LangString str_vimrc_page_title ${LANG_DUTCH} \
+ "Choose _vimrc settings"
+LangString str_vimrc_page_subtitle ${LANG_DUTCH} \
+ "Choose the settings for enhancement, keyboard and mouse."
+
+LangString str_msg_compat_title ${LANG_DUTCH} \
+ " Vi / Vim behavior "
+LangString str_msg_compat_desc ${LANG_DUTCH} \
+ "&Compatibility and enhancements"
+LangString str_msg_compat_vi ${LANG_DUTCH} \
+ "Vi compatible"
+LangString str_msg_compat_vim ${LANG_DUTCH} \
+ "Vim original"
+LangString str_msg_compat_defaults ${LANG_DUTCH} \
+ "Vim with some enhancements (load defaults.vim)"
+LangString str_msg_compat_all ${LANG_DUTCH} \
+ "Vim with all enhancements (load vimrc_example.vim) (Default)"
+
+LangString str_msg_keymap_title ${LANG_DUTCH} \
+ " Mappings "
+LangString str_msg_keymap_desc ${LANG_DUTCH} \
+ "&Remap a few keys for Windows (Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F, etc)"
+LangString str_msg_keymap_default ${LANG_DUTCH} \
+ "Do not remap keys (Default)"
+LangString str_msg_keymap_windows ${LANG_DUTCH} \
+ "Remap a few keys"
+
+LangString str_msg_mouse_title ${LANG_DUTCH} \
+ " Mouse "
+LangString str_msg_mouse_desc ${LANG_DUTCH} \
+ "&Behavior of right and left buttons"
+LangString str_msg_mouse_default ${LANG_DUTCH} \
+ "Right: popup menu, Left: visual mode (Default)"
+LangString str_msg_mouse_windows ${LANG_DUTCH} \
+ "Right: popup menu, Left: select mode (Windows)"
+LangString str_msg_mouse_unix ${LANG_DUTCH} \
+ "Right: extends selection, Left: visual mode (Unix)"
diff --git a/nsis/lang/english.nsi b/nsis/lang/english.nsi
new file mode 100644
index 000000000..f8990a595
--- /dev/null
+++ b/nsis/lang/english.nsi
@@ -0,0 +1,280 @@
+# vi:set ts=8 sts=4 sw=4 et fdm=marker:
+#
+# english.nsi: English language strings for gvim NSIS installer.
+#
+# Locale ID : 1033
+# fileencoding : UTF-8
+# Author : Guopeng Wen, Ken Takata
+
+!insertmacro MUI_LANGUAGE "English"
+
+
+# Overwrite the default translation.
+# These string should be always English. Otherwise dosinst.c fails.
+LangString ^SetupCaption ${LANG_ENGLISH} \
+ "$(^Name) Setup"
+LangString ^UninstallCaption ${LANG_ENGLISH} \
+ "$(^Name) Uninstall"
+
+##############################################################################
+# MUI Configuration Strings {{{1
+##############################################################################
+
+#LangString str_dest_folder ${LANG_ENGLISH} \
+# "Destination Folder (Must end with $\"vim$\")"
+
+LangString str_show_readme ${LANG_ENGLISH} \
+ "Show README after installation finish"
+
+# Install types:
+LangString str_type_typical ${LANG_ENGLISH} \
+ "Typical"
+
+LangString str_type_minimal ${LANG_ENGLISH} \
+ "Minimal"
+
+LangString str_type_full ${LANG_ENGLISH} \
+ "Full"
+
+
+##############################################################################
+# Section Titles & Description {{{1
+##############################################################################
+
+LangString str_section_old_ver ${LANG_ENGLISH} \
+ "Uninstall Existing Version(s)"
+LangString str_desc_old_ver ${LANG_ENGLISH} \
+ "Uninstall existing Vim version(s) from your system."
+
+LangString str_section_exe ${LANG_ENGLISH} \
+ "Vim GUI and runtime files"
+LangString str_desc_exe ${LANG_ENGLISH} \
+ "Vim GUI executables and runtime files. This component is required."
+
+LangString str_section_console ${LANG_ENGLISH} \
+ "Vim console program"
+LangString str_desc_console ${LANG_ENGLISH} \
+ "Console version of Vim (vim.exe)."
+
+LangString str_section_batch ${LANG_ENGLISH} \
+ "Create .bat files"
+LangString str_desc_batch ${LANG_ENGLISH} \
+ "Create .bat files for Vim variants in the Windows directory for \
+ command line use."
+
+LangString str_group_icons ${LANG_ENGLISH} \
+ "Create icons for Vim"
+LangString str_desc_icons ${LANG_ENGLISH} \
+ "Create icons for Vim at various locations to facilitate easy access."
+
+LangString str_section_desktop ${LANG_ENGLISH} \
+ "On the Desktop"
+LangString str_desc_desktop ${LANG_ENGLISH} \
+ "Create icons for gVim executables on the desktop."
+
+LangString str_section_start_menu ${LANG_ENGLISH} \
+ "In the Start Menu Programs Folder"
+LangString str_desc_start_menu ${LANG_ENGLISH} \
+ "Add Vim in the programs folder of the start menu."
+
+#LangString str_section_quick_launch ${LANG_ENGLISH} \
+# "In the Quick Launch Bar"
+#LangString str_desc_quick_launch ${LANG_ENGLISH} \
+# "Add Vim shortcut in the quick launch bar."
+
+LangString str_section_edit_with ${LANG_ENGLISH} \
+ "Add Vim Context Menu"
+LangString str_desc_edit_with ${LANG_ENGLISH} \
+ "Add Vim to the $\"Open With...$\" context menu list."
+
+#LangString str_section_edit_with32 ${LANG_ENGLISH} \
+# "32-bit Version"
+#LangString str_desc_edit_with32 ${LANG_ENGLISH} \
+# "Add Vim to the $\"Open With...$\" context menu list \
+# for 32-bit applications."
+
+#LangString str_section_edit_with64 ${LANG_ENGLISH} \
+# "64-bit Version"
+#LangString str_desc_edit_with64 ${LANG_ENGLISH} \
+# "Add Vim to the $\"Open With...$\" context menu list \
+# for 64-bit applications."
+
+LangString str_section_vim_rc ${LANG_ENGLISH} \
+ "Create Default Config"
+LangString str_desc_vim_rc ${LANG_ENGLISH} \
+ "Create a default config file (_vimrc) if one does not already exist."
+
+LangString str_group_plugin ${LANG_ENGLISH} \
+ "Create Plugin Directories"
+LangString str_desc_plugin ${LANG_ENGLISH} \
+ "Create plugin directories. Plugin directories allow extending Vim \
+ by dropping a file into a directory."
+
+LangString str_section_plugin_home ${LANG_ENGLISH} \
+ "Private"
+LangString str_desc_plugin_home ${LANG_ENGLISH} \
+ "Create plugin directories in HOME directory."
+
+LangString str_section_plugin_vim ${LANG_ENGLISH} \
+ "Shared"
+LangString str_desc_plugin_vim ${LANG_ENGLISH} \
+ "Create plugin directories in Vim install directory, it is used for \
+ everybody on the system."
+
+LangString str_section_vis_vim ${LANG_ENGLISH} \
+ "VisVim Extension"
+LangString str_desc_vis_vim ${LANG_ENGLISH} \
+ "VisVim Extension for Microsoft Visual Studio integration."
+
+LangString str_section_nls ${LANG_ENGLISH} \
+ "Native Language Support"
+LangString str_desc_nls ${LANG_ENGLISH} \
+ "Install files for native language support."
+
+LangString str_unsection_register ${LANG_ENGLISH} \
+ "Unregister Vim"
+LangString str_desc_unregister ${LANG_ENGLISH} \
+ "Unregister Vim from the system."
+
+LangString str_unsection_exe ${LANG_ENGLISH} \
+ "Remove Vim Executables/Runtime Files"
+LangString str_desc_rm_exe ${LANG_ENGLISH} \
+ "Remove all Vim executables and runtime files."
+
+LangString str_ungroup_plugin ${LANG_ENGLISH} \
+ "Remove plugin directories"
+LangString str_desc_rm_plugin ${LANG_ENGLISH} \
+ "Remove the plugin directories if they are empty."
+
+LangString str_unsection_plugin_home ${LANG_ENGLISH} \
+ "Private"
+LangString str_desc_rm_plugin_home ${LANG_ENGLISH} \
+ "Remove the plugin directories from HOME directory."
+
+LangString str_unsection_plugin_vim ${LANG_ENGLISH} \
+ "Shared"
+LangString str_desc_rm_plugin_vim ${LANG_ENGLISH} \
+ "Remove the plugin directories from Vim install directory."
+
+LangString str_unsection_rootdir ${LANG_ENGLISH} \
+ "Remove the Vim root directory"
+LangString str_desc_rm_rootdir ${LANG_ENGLISH} \
+ "Remove the Vim root directory. It contains your Vim configuration files!"
+
+
+##############################################################################
+# Messages {{{1
+##############################################################################
+
+#LangString str_msg_too_many_ver ${LANG_ENGLISH} \
+# "Found $vim_old_ver_count Vim versions on your system.$\r$\n\
+# This installer can only handle ${VIM_MAX_OLD_VER} versions \
+# at most.$\r$\n\
+# Please remove some versions and start again."
+
+#LangString str_msg_invalid_root ${LANG_ENGLISH} \
+# "Invalid install path: $vim_install_root!$\r$\n\
+# It should end with $\"vim$\"."
+
+#LangString str_msg_bin_mismatch ${LANG_ENGLISH} \
+# "Binary path mismatch!$\r$\n$\r$\n\
+# Expect the binary path to be $\"$vim_bin_path$\",$\r$\n\
+# but system indicates the binary path is $\"$INSTDIR$\"."
+
+#LangString str_msg_vim_running ${LANG_ENGLISH} \
+# "Vim is still running on your system.$\r$\n\
+# Please close all instances of Vim before you continue."
+
+#LangString str_msg_register_ole ${LANG_ENGLISH} \
+# "Attempting to register Vim with OLE. \
+# There is no message indicates whether this works or not."
+
+#LangString str_msg_unreg_ole ${LANG_ENGLISH} \
+# "Attempting to unregister Vim with OLE. \
+# There is no message indicates whether this works or not."
+
+#LangString str_msg_rm_start ${LANG_ENGLISH} \
+# "Uninstalling the following version:"
+
+#LangString str_msg_rm_fail ${LANG_ENGLISH} \
+# "Fail to uninstall the following version:"
+
+#LangString str_msg_no_rm_key ${LANG_ENGLISH} \
+# "Cannot find uninstaller registry key."
+
+#LangString str_msg_no_rm_reg ${LANG_ENGLISH} \
+# "Cannot find uninstaller from registry."
+
+#LangString str_msg_no_rm_exe ${LANG_ENGLISH} \
+# "Cannot access uninstaller."
+
+#LangString str_msg_rm_copy_fail ${LANG_ENGLISH} \
+# "Fail to copy uninstaller to temporary directory."
+
+#LangString str_msg_rm_run_fail ${LANG_ENGLISH} \
+# "Fail to run uninstaller."
+
+#LangString str_msg_abort_install ${LANG_ENGLISH} \
+# "Installer will abort."
+
+LangString str_msg_install_fail ${LANG_ENGLISH} \
+ "Installation failed. Better luck next time."
+
+LangString str_msg_rm_exe_fail ${LANG_ENGLISH} \
+ "Some files in $0 have not been deleted!$\r$\n\
+ You must do it manually."
+
+#LangString str_msg_rm_root_fail ${LANG_ENGLISH} \
+# "WARNING: Cannot remove $\"$vim_install_root$\", it is not empty!"
+
+LangString str_msg_uninstalling ${LANG_ENGLISH} \
+ "Uninstalling the old version..."
+
+LangString str_msg_registering ${LANG_ENGLISH} \
+ "Registering..."
+
+LangString str_msg_unregistering ${LANG_ENGLISH} \
+ "Unregistering..."
+
+
+##############################################################################
+# Dialog Box {{{1
+##############################################################################
+
+LangString str_vimrc_page_title ${LANG_ENGLISH} \
+ "Choose _vimrc settings"
+LangString str_vimrc_page_subtitle ${LANG_ENGLISH} \
+ "Choose the settings for enhancement, keyboard and mouse."
+
+LangString str_msg_compat_title ${LANG_ENGLISH} \
+ " Vi / Vim behavior "
+LangString str_msg_compat_desc ${LANG_ENGLISH} \
+ "&Compatibility and enhancements"
+LangString str_msg_compat_vi ${LANG_ENGLISH} \
+ "Vi compatible"
+LangString str_msg_compat_vim ${LANG_ENGLISH} \
+ "Vim original"
+LangString str_msg_compat_defaults ${LANG_ENGLISH} \
+ "Vim with some enhancements (load defaults.vim)"
+LangString str_msg_compat_all ${LANG_ENGLISH} \
+ "Vim with all enhancements (load vimrc_example.vim) (Default)"
+
+LangString str_msg_keymap_title ${LANG_ENGLISH} \
+ " Mappings "
+LangString str_msg_keymap_desc ${LANG_ENGLISH} \
+ "&Remap a few keys for Windows (Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F, etc)"
+LangString str_msg_keymap_default ${LANG_ENGLISH} \
+ "Do not remap keys (Default)"
+LangString str_msg_keymap_windows ${LANG_ENGLISH} \
+ "Remap a few keys"
+
+LangString str_msg_mouse_title ${LANG_ENGLISH} \
+ " Mouse "
+LangString str_msg_mouse_desc ${LANG_ENGLISH} \
+ "&Behavior of right and left buttons"
+LangString str_msg_mouse_default ${LANG_ENGLISH} \
+ "Right: popup menu, Left: visual mode (Default)"
+LangString str_msg_mouse_windows ${LANG_ENGLISH} \
+ "Right: popup menu, Left: select mode (Windows)"
+LangString str_msg_mouse_unix ${LANG_ENGLISH} \
+ "Right: extends selection, Left: visual mode (Unix)"
diff --git a/nsis/lang/german.nsi b/nsis/lang/german.nsi
new file mode 100644
index 000000000..62b1531ab
--- /dev/null
+++ b/nsis/lang/german.nsi
@@ -0,0 +1,280 @@
+# vi:set ts=8 sts=4 sw=4 et fdm=marker:
+#
+# german.nsi : German language strings for gvim NSIS installer.
+#
+# Locale ID : 1031
+# fileencoding : UTF-8
+# Author : Christian Brabandt, tux
+
+!insertmacro MUI_LANGUAGE "German"
+
+
+# Overwrite the default translation.
+# These string should be always English. Otherwise dosinst.c fails.
+LangString ^SetupCaption ${LANG_GERMAN} \
+ "$(^Name) Setup"
+LangString ^UninstallCaption ${LANG_GERMAN} \
+ "$(^Name) Uninstall"
+
+##############################################################################
+# MUI Configuration Strings {{{1
+##############################################################################
+
+#LangString str_dest_folder ${LANG_GERMAN} \
+# "Zielverzeichnis auswählen (muss auf $\"vim$\" enden)"
+
+LangString str_show_readme ${LANG_GERMAN} \
+ "README-Datei nach der Installation anzeigen"
+
+# Install types:
+LangString str_type_typical ${LANG_GERMAN} \
+ "Typisch"
+
+LangString str_type_minimal ${LANG_GERMAN} \
+ "Minimal"
+
+LangString str_type_full ${LANG_GERMAN} \
+ "Vollständig"
+
+
+##############################################################################
+# Section Titles & Description {{{1
+##############################################################################
+
+LangString str_section_old_ver ${LANG_GERMAN} \
+ "Vorherige Version deinstallieren"
+LangString str_desc_old_ver ${LANG_GERMAN} \
+ "Vorherige installierte Versionen auf diesem System deinstallieren."
+
+LangString str_section_exe ${LANG_GERMAN} \
+ "Vim GUI"
+LangString str_desc_exe ${LANG_GERMAN} \
+ "Vim (Anwendung) und Laufzeitdateien (Dieser Teil ist zwingend \
+ erforderlich)."
+
+LangString str_section_console ${LANG_GERMAN} \
+ "Vim Konsolenanwendung"
+LangString str_desc_console ${LANG_GERMAN} \
+ "Konsolenversion von Vim."
+
+LangString str_section_batch ${LANG_GERMAN} \
+ ".bat-Dateien erstellen"
+LangString str_desc_batch ${LANG_GERMAN} \
+ ".bat-Dateien erstellen, um Vim in der Konsole auszuführen."
+
+LangString str_group_icons ${LANG_GERMAN} \
+ "Vim-Verknüpfungen erstellen"
+LangString str_desc_icons ${LANG_GERMAN} \
+ "Verknüpfungen mit Vim für einfachen Aufruf erstellen."
+
+LangString str_section_desktop ${LANG_GERMAN} \
+ "Auf dem Desktop"
+LangString str_desc_desktop ${LANG_GERMAN} \
+ "Icons für GVim auf dem Desktop erstellen."
+
+LangString str_section_start_menu ${LANG_GERMAN} \
+ "Im Startmenü"
+LangString str_desc_start_menu ${LANG_GERMAN} \
+ "Vim im Programmverzeichnis des Startmenüs hinzufügen."
+
+#LangString str_section_quick_launch ${LANG_GERMAN} \
+# "In der Schnellstartleiste"
+#LangString str_desc_quick_launch ${LANG_GERMAN} \
+# "Verknüpfung zu Vim in der Schnellstartleiste ablegen."
+
+LangString str_section_edit_with ${LANG_GERMAN} \
+ "Vim zum Kontextmenü hinzufügen"
+LangString str_desc_edit_with ${LANG_GERMAN} \
+ "Vim in das $\"Öffnen mit...$\"-Kontextmenü einfügen."
+
+#LangString str_section_edit_with32 ${LANG_GERMAN} \
+# "32-Bit-Version"
+#LangString str_desc_edit_with32 ${LANG_GERMAN} \
+# "Vim in das $\"Öffnen mit...$\"-Kontextmenü \
+# für 32-Bit-Anwendungen integrieren."
+
+#LangString str_section_edit_with64 ${LANG_GERMAN} \
+# "64-Bit-Version"
+#LangString str_desc_edit_with64 ${LANG_GERMAN} \
+# "Vim in das $\"Öffnen mit...$\"-Kontextmenü \
+# für 64-Bit-Anwendungen integrieren."
+
+LangString str_section_vim_rc ${LANG_GERMAN} \
+ "Standard-Konfigurationsdatei erstellen"
+LangString str_desc_vim_rc ${LANG_GERMAN} \
+ "Eine Standard-Konfigurationsdatei (_vimrc) erstellen, \
+ falls noch keine existiert."
+
+LangString str_group_plugin ${LANG_GERMAN} \
+ "Plugin-Verzeichnisse anlegen"
+LangString str_desc_plugin ${LANG_GERMAN} \
+ "Plugin-Verzeichnisse anlegen. Plugins erlauben es, Vim \
+ um zusätzliche Funktionen zu erweitern."
+
+LangString str_section_plugin_home ${LANG_GERMAN} \
+ "Privat"
+LangString str_desc_plugin_home ${LANG_GERMAN} \
+ "Erstelle Plugin-Verzeichnis im HOME Benutzerverzeichnis."
+
+LangString str_section_plugin_vim ${LANG_GERMAN} \
+ "Freigegeben"
+LangString str_desc_plugin_vim ${LANG_GERMAN} \
+ "Plugin-Verzeichnisse im Vim-Installationsverzeichnis erstellen. Diese werden \
+ für alle Benutzer dieses Systems genutzt."
+
+LangString str_section_vis_vim ${LANG_GERMAN} \
+ "VisVim-Erweiterung"
+LangString str_desc_vis_vim ${LANG_GERMAN} \
+ "VisVim-Erweiterung zur Integration in Microsoft Visual Studio."
+
+LangString str_section_nls ${LANG_GERMAN} \
+ "Unterstützung für andere Sprachen"
+LangString str_desc_nls ${LANG_GERMAN} \
+ "Dateien zur Unterstützung anderer Sprachen als Englisch installieren."
+
+LangString str_unsection_register ${LANG_GERMAN} \
+ "Vim deinstallieren"
+LangString str_desc_unregister ${LANG_GERMAN} \
+ "Vim vom System entfernen."
+
+LangString str_unsection_exe ${LANG_GERMAN} \
+ "Vim-Anwendung und Laufzeitdateien entfernen"
+LangString str_desc_rm_exe ${LANG_GERMAN} \
+ "Alle Vim-Anwendungen und Laufzeitdateien von diesem System entfernen."
+
+LangString str_ungroup_plugin ${LANG_GERMAN} \
+ "Entferne Plugin-Verzeichnisse"
+LangString str_desc_rm_plugin ${LANG_GERMAN} \
+ "Entferne Plugin-Verzeichnisse, falls sie leer sind."
+
+LangString str_unsection_plugin_home ${LANG_GERMAN} \
+ "Privat"
+LangString str_desc_rm_plugin_home ${LANG_GERMAN} \
+ "Entfernt die Plugin-Verzeichnisse aus dem HOME Benutzerverzeichnis."
+
+LangString str_unsection_plugin_vim ${LANG_GERMAN} \
+ "Freigegeben"
+LangString str_desc_rm_plugin_vim ${LANG_GERMAN} \
+ "Entfernt das Plugin-Verzeichnis aus dem Vim-Installationsverzeichnis."
+
+LangString str_unsection_rootdir ${LANG_GERMAN} \
+ "Entferne Vim Installationsverzeichnis"
+LangString str_desc_rm_rootdir ${LANG_GERMAN} \
+ "Entfernt das Vim Installationsverzeichnis. Es enthält die Vim Konfigurationsdateien!"
+
+
+##############################################################################
+# Messages {{{1
+##############################################################################
+
+#LangString str_msg_too_many_ver ${LANG_GERMAN} \
+# "$vim_old_ver_count Vim-Versionen auf diesem System gefunden..$\r$\n\
+# Dieser Installer kann maximal ${VIM_MAX_OLD_VER} Versionen \
+# handhaben.$\r$\n\
+# Bitte alte Versionen entfernen und noch einmal probieren."
+
+#LangString str_msg_invalid_root ${LANG_GERMAN} \
+# "Nicht gültiges Installationsverzeichnis: $vim_install_root!$\r$\n\
+# Der Pfad muss auf $\"vim$\" enden."
+
+#LangString str_msg_bin_mismatch ${LANG_GERMAN} \
+# "Pfaddiskrepanz!$\r$\n$\r$\n\
+# Erwarte Anwendungsverzeichnis $\"$vim_bin_path$\",$\r$\n\
+# aber fand Anwendungspfad $\"$INSTDIR$\" vor."
+
+#LangString str_msg_vim_running ${LANG_GERMAN} \
+# "Laufender Vim-Prozess erkannt.$\r$\n\
+# Bitte alle laufenden Vim-Prozesse vor dem Fortfahren beenden."
+
+#LangString str_msg_register_ole ${LANG_GERMAN} \
+# "Versuche OLE-Registrierung durchzuführen."
+
+#LangString str_msg_unreg_ole ${LANG_GERMAN} \
+# "Versuche OLE-Registrierung zu löschen."
+
+#LangString str_msg_rm_start ${LANG_GERMAN} \
+# "Deinstalliere die folgende Version:"
+
+#LangString str_msg_rm_fail ${LANG_GERMAN} \
+# "Deinstallation der Version fehlgeschlagen:"
+
+#LangString str_msg_no_rm_key ${LANG_GERMAN} \
+# "Deinstallationsschlüssel in der Registrierungsdatenbank nicht gefunden."
+
+#LangString str_msg_no_rm_reg ${LANG_GERMAN} \
+# "Kein Uninstaller in der Registrierungsdatenbank gefunden."
+
+#LangString str_msg_no_rm_exe ${LANG_GERMAN} \
+# "Kein Zugriff auf den Uninstaller."
+
+#LangString str_msg_rm_copy_fail ${LANG_GERMAN} \
+# "Fehler beim Kopieren des Uninstallers in ein temporäres Verzeichnis."
+
+#LangString str_msg_rm_run_fail ${LANG_GERMAN} \
+# "Fehler beim Aufruf des Uninstallers."
+
+#LangString str_msg_abort_install ${LANG_GERMAN} \
+# "Installation wird abgebrochen."
+
+LangString str_msg_install_fail ${LANG_GERMAN} \
+ "Installation fehlerhaft beendet."
+
+LangString str_msg_rm_exe_fail ${LANG_GERMAN} \
+ "Einige Dateien im Pfad $0 konnten nicht gelöscht werden!$\r$\n\
+ Diese Dateien müssen manuell gelöscht werden."
+
+#LangString str_msg_rm_root_fail ${LANG_GERMAN} \
+# "Achtung: Kann Verzeichnis $\"$vim_install_root$\" nicht entfernen, \
+# weil es nicht leer ist!"
+
+LangString str_msg_uninstalling ${LANG_GERMAN} \
+ "Deinstalliere alte Version..."
+
+LangString str_msg_registering ${LANG_GERMAN} \
+ "Registriere..."
+
+LangString str_msg_unregistering ${LANG_GERMAN} \
+ "Entferne Registrierung..."
+
+
+##############################################################################
+# Dialog Box {{{1
+##############################################################################
+
+LangString str_vimrc_page_title ${LANG_GERMAN} \
+ "Wähle _vimrc Konfigurationsoptionen"
+LangString str_vimrc_page_subtitle ${LANG_GERMAN} \
+ "Wähle Einstellungen zur Kompatibilität, Tastatur und Maus."
+
+LangString str_msg_compat_title ${LANG_GERMAN} \
+ " Vi / Vim Verhalten "
+LangString str_msg_compat_desc ${LANG_GERMAN} \
+ "&Kompatibilität und Erweiterungen"
+LangString str_msg_compat_vi ${LANG_GERMAN} \
+ "Vi-kompatibel"
+LangString str_msg_compat_vim ${LANG_GERMAN} \
+ "Vim Original"
+LangString str_msg_compat_defaults ${LANG_GERMAN} \
+ "Vim mit einigen Erweiterungen (Lädt defaults.vim)"
+LangString str_msg_compat_all ${LANG_GERMAN} \
+ "Vim mit allen Erweiterungen (Lädt vimrc_example.vim) (Standard)"
+
+LangString str_msg_keymap_title ${LANG_GERMAN} \
+ " Mappings für Windows Standard Tastenkombinationen "
+LangString str_msg_keymap_desc ${LANG_GERMAN} \
+ "&Einige Tasten umkonfigurieren (Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F, etc)"
+LangString str_msg_keymap_default ${LANG_GERMAN} \
+ "Keine Tasten umkonfigurieren (Standard)"
+LangString str_msg_keymap_windows ${LANG_GERMAN} \
+ "Einige Tasten umkonfigurieren"
+
+LangString str_msg_mouse_title ${LANG_GERMAN} \
+ " Maus "
+LangString str_msg_mouse_desc ${LANG_GERMAN} \
+ "&Verhalten der linken und rechten Buttons"
+LangString str_msg_mouse_default ${LANG_GERMAN} \
+ "Rechts: Popup Menü, Links: Visueller Modus (Standard)"
+LangString str_msg_mouse_windows ${LANG_GERMAN} \
+ "Rechts: Popup Menü, Links: Auswahl Modus (Windows)"
+LangString str_msg_mouse_unix ${LANG_GERMAN} \
+ "Rechts: Auswahl erweitern, Links: Visueller Modus (Unix)"
diff --git a/nsis/lang/italian.nsi b/nsis/lang/italian.nsi
new file mode 100644
index 000000000..d816fee1f
--- /dev/null
+++ b/nsis/lang/italian.nsi
@@ -0,0 +1,290 @@
+# vi:set ts=8 sts=4 sw=4 et fdm=marker:
+#
+# italian.nsi : Italian language strings for gvim NSIS installer.
+#
+# Locale ID : 1040
+# Locale Name : it
+# fileencoding : latin1
+# Author : Antonio Colombo
+
+!insertmacro MUI_LANGUAGE "Italian"
+
+
+# Overwrite the default translation.
+# These string should be always English. Otherwise dosinst.c fails.
+LangString ^SetupCaption ${LANG_ITALIAN} \
+ "$(^Name) Setup"
+LangString ^UninstallCaption ${LANG_ITALIAN} \
+ "$(^Name) Uninstall"
+
+##############################################################################
+# MUI Configuration Strings {{{1
+##############################################################################
+
+#LangString str_dest_folder ${LANG_ITALIAN} \
+# "Cartella d'installazione (il nome deve finire con $\"vim$\")"
+
+LangString str_show_readme ${LANG_ITALIAN} \
+ "Visualizza README al termine dell'installazione"
+
+# Install types:
+LangString str_type_typical ${LANG_ITALIAN} \
+ "Tipica"
+
+LangString str_type_minimal ${LANG_ITALIAN} \
+ "Minima"
+
+LangString str_type_full ${LANG_ITALIAN} \
+ "Completa"
+
+
+##############################################################################
+# Section Titles & Description {{{1
+##############################################################################
+
+LangString str_section_old_ver ${LANG_ITALIAN} \
+ "Disinstalla versione/i esistente/i"
+LangString str_desc_old_ver ${LANG_ITALIAN} \
+ "Disinstalla versione/i esistente/i di Vim dal vostro sistema."
+
+LangString str_section_exe ${LANG_ITALIAN} \
+ "Vim GUI (gvim.exe per Windows)"
+LangString str_desc_exe ${LANG_ITALIAN} \
+ "Vim GUI programmi e file di supporto. Questa componente è indispensabile."
+
+LangString str_section_console ${LANG_ITALIAN} \
+ "Vim console (vim.exe per MS-DOS)"
+LangString str_desc_console ${LANG_ITALIAN} \
+ "Versione console di Vim (vim.exe)."
+
+LangString str_section_batch ${LANG_ITALIAN} \
+ "Crea file di invocazione (MS-DOS) .bat"
+LangString str_desc_batch ${LANG_ITALIAN} \
+ "Crea file di invocazione .bat per varianti di Vim nella directory \
+ di Windows, da utilizzare da linea di comando (MS-DOS)."
+
+LangString str_group_icons ${LANG_ITALIAN} \
+ "Crea icone per Vim"
+LangString str_desc_icons ${LANG_ITALIAN} \
+ "Crea icone per Vim in vari posti, per rendere facile l'accesso."
+
+LangString str_section_desktop ${LANG_ITALIAN} \
+ "Sul Desktop"
+LangString str_desc_desktop ${LANG_ITALIAN} \
+ "Crea icone per programma gvim sul desktop."
+
+LangString str_section_start_menu ${LANG_ITALIAN} \
+ "Nella cartella del menù START"
+LangString str_desc_start_menu ${LANG_ITALIAN} \
+ "Aggiungi Vim alle cartelle del menù START. \
+ Disponibile solo da Windows 95 in avanti."
+
+#LangString str_section_quick_launch ${LANG_ITALIAN} \
+# "Nella barra di Avvio Veloce"
+#LangString str_desc_quick_launch ${LANG_ITALIAN} \
+# "Aggiungi un puntatore a Vim nella barra di Avvio Veloce."
+
+LangString str_section_edit_with ${LANG_ITALIAN} \
+ "Aggiungi Vim al Menù Contestuale"
+LangString str_desc_edit_with ${LANG_ITALIAN} \
+ "Aggiungi Vim alla lista contestuale $\"Apri con...$\"."
+
+#LangString str_section_edit_with32 ${LANG_ITALIAN} \
+# "Versione a 32-bit"
+#LangString str_desc_edit_with32 ${LANG_ITALIAN} \
+# "Aggiungi Vim alla lista contestuale $\"Apri con...$\" \
+# per applicazioni a 32-bit."
+
+#LangString str_section_edit_with64 ${LANG_ITALIAN} \
+# "Versione a 64-bit"
+#LangString str_desc_edit_with64 ${LANG_ITALIAN} \
+# "Aggiungi Vim alla lista contestuale $\"Apri con...$\" \
+# per applicazioni a 64-bit."
+
+LangString str_section_vim_rc ${LANG_ITALIAN} \
+ "Crea Configurazione di default"
+LangString str_desc_vim_rc ${LANG_ITALIAN} \
+ "Crea file configurazione di default (_vimrc) se non ne \
+ esiste già uno."
+
+LangString str_group_plugin ${LANG_ITALIAN} \
+ "Crea Directory per Plugin"
+LangString str_desc_plugin ${LANG_ITALIAN} \
+ "Crea Directory per Plugin. Servono per aggiungere funzionalità \
+ a Vim aggiungendo file a una di queste directory."
+
+LangString str_section_plugin_home ${LANG_ITALIAN} \
+ "Privato"
+LangString str_desc_plugin_home ${LANG_ITALIAN} \
+ "Create plugin directories in HOME directory."
+
+LangString str_section_plugin_vim ${LANG_ITALIAN} \
+ "Condiviso"
+LangString str_desc_plugin_vim ${LANG_ITALIAN} \
+ "Crea Directory Plugin nella directory di installazione di Vim \
+ per uso da parte di tutti gli utenti di questo sistema."
+
+LangString str_section_vis_vim ${LANG_ITALIAN} \
+ "Estensione VisVim"
+LangString str_desc_vis_vim ${LANG_ITALIAN} \
+ "Estensione VisVim per integrazione con Microsoft Visual Studio."
+
+LangString str_section_nls ${LANG_ITALIAN} \
+ "Supporto Multilingue (NLS)"
+LangString str_desc_nls ${LANG_ITALIAN} \
+ "Installa file per supportare messaggi in diverse lingue."
+
+LangString str_unsection_register ${LANG_ITALIAN} \
+ "Togli Vim dal Registry"
+LangString str_desc_unregister ${LANG_ITALIAN} \
+ "Togli Vim dal Registry di configurazione sistema."
+
+LangString str_unsection_exe ${LANG_ITALIAN} \
+ "Cancella programmi/file_ausiliari Vim"
+LangString str_desc_rm_exe ${LANG_ITALIAN} \
+ "Cancella tutti i programmi/file_ausiliari di Vim."
+
+LangString str_unsection_rc ${LANG_ITALIAN} \
+ "Cancella file di configurazione di Vim"
+LangString str_desc_rm_rc ${LANG_ITALIAN} \
+ "Cancella file di configurazione di Vim $vim_install_root\_vimrc. \
+ Da saltare se avete personalizzato il file di configurazione."
+
+LangString str_ungroup_plugin ${LANG_ITALIAN} \
+ "Remove plugin directories"
+LangString str_desc_rm_plugin ${LANG_ITALIAN} \
+ "Remove the plugin directories if they are empty."
+
+LangString str_unsection_plugin_home ${LANG_ITALIAN} \
+ "Privato"
+LangString str_desc_rm_plugin_home ${LANG_ITALIAN} \
+ "Remove the plugin directories from HOME directory."
+
+LangString str_unsection_plugin_vim ${LANG_ITALIAN} \
+ "Condiviso"
+LangString str_desc_rm_plugin_vim ${LANG_ITALIAN} \
+ "Remove the plugin directories from Vim install directory."
+
+LangString str_unsection_rootdir ${LANG_ITALIAN} \
+ "Remove the Vim root directory"
+LangString str_desc_rm_rootdir ${LANG_ITALIAN} \
+ "Remove the Vim root directory. It contains your Vim configuration files!"
+
+
+##############################################################################
+# Messages {{{1
+##############################################################################
+
+#LangString str_msg_too_many_ver ${LANG_ITALIAN} \
+# "Trovate $vim_old_ver_count versioni di Vim sul vostro sistema.$\r$\n\
+# Questo programma di installazione può gestirne solo \
+# ${VIM_MAX_OLD_VER}.$\r$\n\
+# Disinstallate qualche versione precedente e ricominciate."
+
+#LangString str_msg_invalid_root ${LANG_ITALIAN} \
+# "Nome di directory di installazione non valida: $vim_install_root!$\r$\n\
+# Dovrebbe terminare con $\"vim$\"."
+
+#LangString str_msg_bin_mismatch ${LANG_ITALIAN} \
+# "Incongruenza di installazione!$\r$\n$\r$\n\
+# Cartella di installazione dev'essere $\"$vim_bin_path$\",$\r$\n\
+# ma il sistema segnala invece $\"$INSTDIR$\"."
+
+#LangString str_msg_vim_running ${LANG_ITALIAN} \
+# "Vim ancora in esecuzione sul vostro sistema.$\r$\n\
+# Chiudete tutte le sessioni attive di Vim per continuare."
+
+#LangString str_msg_register_ole ${LANG_ITALIAN} \
+# "Tentativo di registrazione di Vim con OLE. \
+# Non ci sono messaggi che indicano se ha funzionato o no."
+
+#LangString str_msg_unreg_ole ${LANG_ITALIAN} \
+# "Tentativo di togliere da Registry Vim con OLE. \
+# Non ci sono messaggi che indicano se ha funzionato o no."
+
+#LangString str_msg_rm_start ${LANG_ITALIAN} \
+# "Disinstallazione delle seguenti versioni:"
+
+#LangString str_msg_rm_fail ${LANG_ITALIAN} \
+# "Disinstallazione non riuscita per la seguente versione:"
+
+#LangString str_msg_no_rm_key ${LANG_ITALIAN} \
+# "Non riesco a trovare chiave di disinstallazione nel Registry."
+
+#LangString str_msg_no_rm_reg ${LANG_ITALIAN} \
+# "Non riesco a trovare programma disinstallazione nel Registry."
+
+#LangString str_msg_no_rm_exe ${LANG_ITALIAN} \
+# "Non riesco a utilizzare programma disinstallazione."
+
+#LangString str_msg_rm_copy_fail ${LANG_ITALIAN} \
+# "Non riesco a copiare programma disinstallazione a una \
+# directory temporanea."
+
+#LangString str_msg_rm_run_fail ${LANG_ITALIAN} \
+# "Non riesco a eseguire programma disinstallazione."
+
+#LangString str_msg_abort_install ${LANG_ITALIAN} \
+# "Il programma di disinstallazione verrà chiuso senza aver fatto nulla."
+
+LangString str_msg_install_fail ${LANG_ITALIAN} \
+ "Installazione non riuscita. Miglior fortuna alla prossima!"
+
+LangString str_msg_rm_exe_fail ${LANG_ITALIAN} \
+ "Alcuni file in $0 non sono stati cancellati!$\r$\n\
+ Dovreste cancellarli voi stessi."
+
+#LangString str_msg_rm_root_fail ${LANG_ITALIAN} \
+# "AVVISO: Non posso cancellare $\"$vim_install_root$\", non è vuota!"
+
+LangString str_msg_uninstalling ${LANG_ITALIAN} \
+ "Uninstalling the old version..."
+
+LangString str_msg_registering ${LANG_ITALIAN} \
+ "Registering..."
+
+LangString str_msg_unregistering ${LANG_ITALIAN} \
+ "Unregistering..."
+
+
+##############################################################################
+# Dialog Box {{{1
+##############################################################################
+
+LangString str_vimrc_page_title ${LANG_ITALIAN} \
+ "Choose _vimrc settings"
+LangString str_vimrc_page_subtitle ${LANG_ITALIAN} \
+ "Choose the settings for enhancement, keyboard and mouse."
+
+LangString str_msg_compat_title ${LANG_ITALIAN} \
+ " Vi / Vim behavior "
+LangString str_msg_compat_desc ${LANG_ITALIAN} \
+ "&Compatibility and enhancements"
+LangString str_msg_compat_vi ${LANG_ITALIAN} \
+ "Vi compatible"
+LangString str_msg_compat_vim ${LANG_ITALIAN} \
+ "Vim original"
+LangString str_msg_compat_defaults ${LANG_ITALIAN} \
+ "Vim with some enhancements (load defaults.vim)"
+LangString str_msg_compat_all ${LANG_ITALIAN} \
+ "Vim with all enhancements (load vimrc_example.vim) (Default)"
+
+LangString str_msg_keymap_title ${LANG_ITALIAN} \
+ " Mappings "
+LangString str_msg_keymap_desc ${LANG_ITALIAN} \
+ "&Remap a few keys for Windows (Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F, etc)"
+LangString str_msg_keymap_default ${LANG_ITALIAN} \
+ "Do not remap keys (Default)"
+LangString str_msg_keymap_windows ${LANG_ITALIAN} \
+ "Remap a few keys"
+
+LangString str_msg_mouse_title ${LANG_ITALIAN} \
+ " Mouse "
+LangString str_msg_mouse_desc ${LANG_ITALIAN} \
+ "&Behavior of right and left buttons"
+LangString str_msg_mouse_default ${LANG_ITALIAN} \
+ "Right: popup menu, Left: visual mode (Default)"
+LangString str_msg_mouse_windows ${LANG_ITALIAN} \
+ "Right: popup menu, Left: select mode (Windows)"
+LangString str_msg_mouse_unix ${LANG_ITALIAN} \
+ "Right: extends selection, Left: visual mode (Unix)"
diff --git a/nsis/lang/japanese.nsi b/nsis/lang/japanese.nsi
new file mode 100644
index 000000000..8d167f9e8
--- /dev/null
+++ b/nsis/lang/japanese.nsi
@@ -0,0 +1,287 @@
+# vi:set ts=8 sts=4 sw=4 et fdm=marker:
+#
+# japanese.nsi: Japanese language strings for gvim NSIS installer.
+#
+# Locale ID : 1041
+# fileencoding : UTF-8
+# Author : Ken Takata
+
+!insertmacro MUI_LANGUAGE "Japanese"
+
+
+# Overwrite the default translation.
+# These string should be always English. Otherwise dosinst.c fails.
+LangString ^SetupCaption ${LANG_JAPANESE} \
+ "$(^Name) Setup"
+LangString ^UninstallCaption ${LANG_JAPANESE} \
+ "$(^Name) Uninstall"
+
+# Workarounds for NSIS Japanese translation. The messages are too long.
+# These should be better to be fixed by the NSIS upstream.
+LangString ^SpaceAvailable ${LANG_JAPANESE} \
+ "利用可能なディスク容量:"
+LangString ^SpaceRequired ${LANG_JAPANESE} \
+ "必要なディスク容量:"
+# Fix another NSIS Japanese translation. The access key was missing.
+LangString ^InstallBtn ${LANG_JAPANESE} \
+ "インストール(&I)"
+
+##############################################################################
+# MUI Configuration Strings {{{1
+##############################################################################
+
+#LangString str_dest_folder ${LANG_JAPANESE} \
+# "Destination Folder (Must end with $\"vim$\")"
+
+LangString str_show_readme ${LANG_JAPANESE} \
+ "インストール完了後に README を表示する"
+
+# Install types:
+LangString str_type_typical ${LANG_JAPANESE} \
+ "通常"
+
+LangString str_type_minimal ${LANG_JAPANESE} \
+ "最小"
+
+LangString str_type_full ${LANG_JAPANESE} \
+ "全て"
+
+
+##############################################################################
+# Section Titles & Description {{{1
+##############################################################################
+
+LangString str_section_old_ver ${LANG_JAPANESE} \
+ "既存のバージョンをアンインストール"
+LangString str_desc_old_ver ${LANG_JAPANESE} \
+ "すでにインストールされている Vim をシステムから削除します。"
+
+LangString str_section_exe ${LANG_JAPANESE} \
+ "Vim GUI とランタイムファイル"
+LangString str_desc_exe ${LANG_JAPANESE} \
+ "Vim GUI 実行ファイルとラインタイムファイル。このコンポーネントは必須です。"
+
+LangString str_section_console ${LANG_JAPANESE} \
+ "Vim コンソールプログラム"
+LangString str_desc_console ${LANG_JAPANESE} \
+ "コンソール版の Vim (vim.exe)。"
+
+LangString str_section_batch ${LANG_JAPANESE} \
+ ".bat ファイルを作成"
+LangString str_desc_batch ${LANG_JAPANESE} \
+ "コマンドラインから Vim と関連コマンドを実行できるように、.bat ファイルを Windows ディレクトリに作成します。"
+
+LangString str_group_icons ${LANG_JAPANESE} \
+ "Vim のアイコンを作成"
+LangString str_desc_icons ${LANG_JAPANESE} \
+ "Vim を簡単に実行できるように、いくつかの場所にアイコンを作成します。"
+
+LangString str_section_desktop ${LANG_JAPANESE} \
+ "デスクトップ上"
+LangString str_desc_desktop ${LANG_JAPANESE} \
+ "gVim 実行ファイルのアイコンをデスクトップ上に作成します。"
+
+LangString str_section_start_menu ${LANG_JAPANESE} \
+ "スタートメニューのプログラムフォルダー上"
+LangString str_desc_start_menu ${LANG_JAPANESE} \
+ "Vim のアイコンをスタートメニューのプログラムフォルダー上に作成します。"
+
+#LangString str_section_quick_launch ${LANG_JAPANESE} \
+# "In the Quick Launch Bar"
+#LangString str_desc_quick_launch ${LANG_JAPANESE} \
+# "Add Vim shortcut in the quick launch bar."
+
+LangString str_section_edit_with ${LANG_JAPANESE} \
+ "Vim のコンテキストメニューを追加"
+LangString str_desc_edit_with ${LANG_JAPANESE} \
+ "$\"Vimで編集する$\" をコンテキストメニューに追加します。"
+
+#LangString str_section_edit_with32 ${LANG_JAPANESE} \
+# "32-bit Version"
+#LangString str_desc_edit_with32 ${LANG_JAPANESE} \
+# "Add Vim to the $\"Open With...$\" context menu list \
+# for 32-bit applications."
+
+#LangString str_section_edit_with64 ${LANG_JAPANESE} \
+# "64-bit Version"
+#LangString str_desc_edit_with64 ${LANG_JAPANESE} \
+# "Add Vim to the $\"Open With...$\" context menu list \
+# for 64-bit applications."
+
+LangString str_section_vim_rc ${LANG_JAPANESE} \
+ "既定のコンフィグを作成"
+LangString str_desc_vim_rc ${LANG_JAPANESE} \
+ "もし無ければ、既定のコンフィグファイル (_vimrc) を作成します。"
+
+LangString str_group_plugin ${LANG_JAPANESE} \
+ "プラグインディレクトリを作成"
+LangString str_desc_plugin ${LANG_JAPANESE} \
+ "プラグインディレクトリを作成します。そこにプラグインファイルを置くことで Vim を拡張することができます。"
+
+LangString str_section_plugin_home ${LANG_JAPANESE} \
+ "個人用"
+LangString str_desc_plugin_home ${LANG_JAPANESE} \
+ "プラグインディレクトリをホームディレクトリに作成します。"
+
+LangString str_section_plugin_vim ${LANG_JAPANESE} \
+ "共用"
+LangString str_desc_plugin_vim ${LANG_JAPANESE} \
+ "プラグインディレクトリを Vim のインストールディレクトリに作成します。システムの全員で共有されます。"
+
+LangString str_section_vis_vim ${LANG_JAPANESE} \
+ "VisVim 拡張"
+LangString str_desc_vis_vim ${LANG_JAPANESE} \
+ "Microsoft Visual Studio 統合用の VisVim 拡張。"
+
+LangString str_section_nls ${LANG_JAPANESE} \
+ "多言語サポート"
+LangString str_desc_nls ${LANG_JAPANESE} \
+ "多言語サポート用のファイルをインストールします。"
+
+LangString str_unsection_register ${LANG_JAPANESE} \
+ "Vim を登録解除"
+LangString str_desc_unregister ${LANG_JAPANESE} \
+ "Vim をシステムから登録解除します。"
+
+LangString str_unsection_exe ${LANG_JAPANESE} \
+ "Vim の実行ファイル/ランタイムファイルを削除"
+LangString str_desc_rm_exe ${LANG_JAPANESE} \
+ "全ての Vim の実行ファイルとランタイムファイルを削除します。"
+
+LangString str_ungroup_plugin ${LANG_JAPANESE} \
+ "プラグインディレクトリを削除"
+LangString str_desc_rm_plugin ${LANG_JAPANESE} \
+ "プラグインディレクトリが空であればそれを削除します。"
+
+LangString str_unsection_plugin_home ${LANG_JAPANESE} \
+ "個人用"
+LangString str_desc_rm_plugin_home ${LANG_JAPANESE} \
+ "プラグインディレクトリをホームディレクトリから削除します。"
+
+LangString str_unsection_plugin_vim ${LANG_JAPANESE} \
+ "共用"
+LangString str_desc_rm_plugin_vim ${LANG_JAPANESE} \
+ "プラグインディレクトリを Vim のインストールディレクトリから削除します。"
+
+LangString str_unsection_rootdir ${LANG_JAPANESE} \
+ "Vim のトップディレクトリを削除"
+LangString str_desc_rm_rootdir ${LANG_JAPANESE} \
+ "Vim のトップディレクトリを削除します。あなたの Vim の設定ファイルも含まれていることに注意してください!"
+
+
+##############################################################################
+# Messages {{{1
+##############################################################################
+
+#LangString str_msg_too_many_ver ${LANG_JAPANESE} \
+# "Found $vim_old_ver_count Vim versions on your system.$\r$\n\
+# This installer can only handle ${VIM_MAX_OLD_VER} versions \
+# at most.$\r$\n\
+# Please remove some versions and start again."
+
+#LangString str_msg_invalid_root ${LANG_JAPANESE} \
+# "Invalid install path: $vim_install_root!$\r$\n\
+# It should end with $\"vim$\"."
+
+#LangString str_msg_bin_mismatch ${LANG_JAPANESE} \
+# "Binary path mismatch!$\r$\n$\r$\n\
+# Expect the binary path to be $\"$vim_bin_path$\",$\r$\n\
+# but system indicates the binary path is $\"$INSTDIR$\"."
+
+#LangString str_msg_vim_running ${LANG_JAPANESE} \
+# "Vim is still running on your system.$\r$\n\
+# Please close all instances of Vim before you continue."
+
+#LangString str_msg_register_ole ${LANG_JAPANESE} \
+# "Attempting to register Vim with OLE. \
+# There is no message indicates whether this works or not."
+
+#LangString str_msg_unreg_ole ${LANG_JAPANESE} \
+# "Attempting to unregister Vim with OLE. \
+# There is no message indicates whether this works or not."
+
+#LangString str_msg_rm_start ${LANG_JAPANESE} \
+# "Uninstalling the following version:"
+
+#LangString str_msg_rm_fail ${LANG_JAPANESE} \
+# "Fail to uninstall the following version:"
+
+#LangString str_msg_no_rm_key ${LANG_JAPANESE} \
+# "Cannot find uninstaller registry key."
+
+#LangString str_msg_no_rm_reg ${LANG_JAPANESE} \
+# "Cannot find uninstaller from registry."
+
+#LangString str_msg_no_rm_exe ${LANG_JAPANESE} \
+# "Cannot access uninstaller."
+
+#LangString str_msg_rm_copy_fail ${LANG_JAPANESE} \
+# "Fail to copy uninstaller to temporary directory."
+
+#LangString str_msg_rm_run_fail ${LANG_JAPANESE} \
+# "Fail to run uninstaller."
+
+#LangString str_msg_abort_install ${LANG_JAPANESE} \
+# "Installer will abort."
+
+LangString str_msg_install_fail ${LANG_JAPANESE} \
+ "インストールに失敗しました。次はうまくいくことを祈ります。"
+
+LangString str_msg_rm_exe_fail ${LANG_JAPANESE} \
+ "$0 内の一部のファイルは削除できませんでした!$\r$\n\
+ 手動で削除する必要があります。"
+
+#LangString str_msg_rm_root_fail ${LANG_JAPANESE} \
+# "WARNING: Cannot remove $\"$vim_install_root$\", it is not empty!"
+
+LangString str_msg_uninstalling ${LANG_JAPANESE} \
+ "古いバージョンをアンインストールしています..."
+
+LangString str_msg_registering ${LANG_JAPANESE} \
+ "登録中..."
+
+LangString str_msg_unregistering ${LANG_JAPANESE} \
+ "登録解除中..."
+
+
+##############################################################################
+# Dialog Box {{{1
+##############################################################################
+
+LangString str_vimrc_page_title ${LANG_JAPANESE} \
+ "_vimrc の設定を選んでください"
+LangString str_vimrc_page_subtitle ${LANG_JAPANESE} \
+ "拡張やキーボード、マウスの設定を選んでください。"
+
+LangString str_msg_compat_title ${LANG_JAPANESE} \
+ " Vi / Vim の動作 "
+LangString str_msg_compat_desc ${LANG_JAPANESE} \
+ "互換性と拡張(&C)"
+LangString str_msg_compat_vi ${LANG_JAPANESE} \
+ "Vi 互換"
+LangString str_msg_compat_vim ${LANG_JAPANESE} \
+ "Vim 独自"
+LangString str_msg_compat_defaults ${LANG_JAPANESE} \
+ "Vim 独自と多少の拡張 (defaults.vim を読み込み)"
+LangString str_msg_compat_all ${LANG_JAPANESE} \
+ "Vim 独自と全ての拡張 (vimrc_example.vim を読み込み) (既定)"
+
+LangString str_msg_keymap_title ${LANG_JAPANESE} \
+ " マッピング "
+LangString str_msg_keymap_desc ${LANG_JAPANESE} \
+ "Windows用に一部のキーをリマップする(&R) (例: Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F など)"
+LangString str_msg_keymap_default ${LANG_JAPANESE} \
+ "リマップしない (既定)"
+LangString str_msg_keymap_windows ${LANG_JAPANESE} \
+ "リマップする"
+
+LangString str_msg_mouse_title ${LANG_JAPANESE} \
+ " マウス "
+LangString str_msg_mouse_desc ${LANG_JAPANESE} \
+ "右ボタンと左ボタンの動作(&B)"
+LangString str_msg_mouse_default ${LANG_JAPANESE} \
+ "右:ポップアップメニュー、左:ビジュアルモード (既定)"
+LangString str_msg_mouse_windows ${LANG_JAPANESE} \
+ "右:ポップアップメニュー、左:選択モード (Windows)"
+LangString str_msg_mouse_unix ${LANG_JAPANESE} \
+ "右:選択を拡張、左:ビジュアルモード (Unix)"
diff --git a/nsis/lang/simpchinese.nsi b/nsis/lang/simpchinese.nsi
new file mode 100644
index 000000000..c93bfc2d6
--- /dev/null
+++ b/nsis/lang/simpchinese.nsi
@@ -0,0 +1,277 @@
+# vi:set ts=8 sts=4 sw=4 et fdm=marker:
+#
+# simpchinese.nsi: Simplified Chinese language strings for gvim NSIS
+# installer.
+#
+# Locale ID : 2052
+# fileencoding : UTF-8
+# Author : Guopeng Wen
+
+!insertmacro MUI_LANGUAGE "SimpChinese"
+
+
+# Overwrite the default translation.
+# These string should be always English. Otherwise dosinst.c fails.
+LangString ^SetupCaption ${LANG_SIMPCHINESE} \
+ "$(^Name) Setup"
+LangString ^UninstallCaption ${LANG_SIMPCHINESE} \
+ "$(^Name) Uninstall"
+
+##############################################################################
+# MUI Configuration Strings {{{1
+##############################################################################
+
+#LangString str_dest_folder ${LANG_SIMPCHINESE} \
+# "安装路径 (必须以 vim 结尾)"
+
+LangString str_show_readme ${LANG_SIMPCHINESE} \
+ "安装完成后显示 README 文件"
+
+# Install types:
+LangString str_type_typical ${LANG_SIMPCHINESE} \
+ "典型安装"
+
+LangString str_type_minimal ${LANG_SIMPCHINESE} \
+ "最小安装"
+
+LangString str_type_full ${LANG_SIMPCHINESE} \
+ "完全安装"
+
+
+##############################################################################
+# Section Titles & Description {{{1
+##############################################################################
+
+LangString str_section_old_ver ${LANG_SIMPCHINESE} \
+ "卸载旧版本"
+LangString str_desc_old_ver ${LANG_SIMPCHINESE} \
+ "卸载系统上旧版本的 Vim。"
+
+LangString str_section_exe ${LANG_SIMPCHINESE} \
+ "安装 Vim 图形界面"
+LangString str_desc_exe ${LANG_SIMPCHINESE} \
+ "安装 Vim 图形界面及脚本。此为必选安装。"
+
+LangString str_section_console ${LANG_SIMPCHINESE} \
+ "安装 Vim 命令行程序"
+LangString str_desc_console ${LANG_SIMPCHINESE} \
+ "安装 Vim 命令行程序 (vim.exe)。该程序在命令行窗口中运行。"
+
+LangString str_section_batch ${LANG_SIMPCHINESE} \
+ "安装批处理文件"
+LangString str_desc_batch ${LANG_SIMPCHINESE} \
+ "为 Vim 的各种变体创建批处理程序,以便在命令行下运行 Vim。"
+
+LangString str_group_icons ${LANG_SIMPCHINESE} \
+ "创建 Vim 图标"
+LangString str_desc_icons ${LANG_SIMPCHINESE} \
+ "为 Vim 创建若干图标,以方便使用 Vim。"
+
+LangString str_section_desktop ${LANG_SIMPCHINESE} \
+ "在桌面上"
+LangString str_desc_desktop ${LANG_SIMPCHINESE} \
+ "在桌面上为 Vim 创建若干图标,以方便启动 Vim。"
+
+LangString str_section_start_menu ${LANG_SIMPCHINESE} \
+ "在启动菜单的程序菜单下"
+LangString str_desc_start_menu ${LANG_SIMPCHINESE} \
+ "在启动菜单的程序菜单下添加 Vim 组。适用于 Windows 95 及以上版本。"
+
+#LangString str_section_quick_launch ${LANG_SIMPCHINESE} \
+# "在快速启动启动栏中"
+#LangString str_desc_quick_launch ${LANG_SIMPCHINESE} \
+# "在快速启动栏中添加 Vim 图标。"
+
+LangString str_section_edit_with ${LANG_SIMPCHINESE} \
+ "安装快捷菜单"
+LangString str_desc_edit_with ${LANG_SIMPCHINESE} \
+ "将 Vim 添加到“打开方式”快捷菜单中。"
+
+#LangString str_section_edit_with32 ${LANG_SIMPCHINESE} \
+# "32 位版本"
+#LangString str_desc_edit_with32 ${LANG_SIMPCHINESE} \
+# "将 Vim 添加到 32 位程序的“打开方式”快捷菜单中。"
+
+#LangString str_section_edit_with64 ${LANG_SIMPCHINESE} \
+# "64 位版本"
+#LangString str_desc_edit_with64 ${LANG_SIMPCHINESE} \
+# "将 Vim 添加到 64 位程序的“打开方式”快捷菜单中。"
+
+LangString str_section_vim_rc ${LANG_SIMPCHINESE} \
+ "创建缺省配置文件"
+LangString str_desc_vim_rc ${LANG_SIMPCHINESE} \
+ "在安装目录下生成缺省的 Vim 配置文件(_vimrc)。\
+ 如果该文件已经存在,则略过此项。"
+
+LangString str_group_plugin ${LANG_SIMPCHINESE} \
+ "创建插件目录"
+LangString str_desc_plugin ${LANG_SIMPCHINESE} \
+ "创建(空的)插件目录结构。插件目录用于安装 Vim 扩展插件,\
+ 只要将文件复制到相关的子目录中即可。"
+
+LangString str_section_plugin_home ${LANG_SIMPCHINESE} \
+ "私有插件目录"
+LangString str_desc_plugin_home ${LANG_SIMPCHINESE} \
+ "Create plugin directories in HOME directory."
+
+LangString str_section_plugin_vim ${LANG_SIMPCHINESE} \
+ "公共插件目录"
+LangString str_desc_plugin_vim ${LANG_SIMPCHINESE} \
+ "在 Vim 安装目录下创建(空的)插件目录结构,系统上所有用户都能使用安装在\
+ 该目录下的扩展插件。"
+
+LangString str_section_vis_vim ${LANG_SIMPCHINESE} \
+ "安装 VisVim 插件"
+LangString str_desc_vis_vim ${LANG_SIMPCHINESE} \
+ "安装用于与微软 Microsoft Visual Studio 进行集成的 VisVim 插件。"
+
+LangString str_section_nls ${LANG_SIMPCHINESE} \
+ "安装多语言支持"
+LangString str_desc_nls ${LANG_SIMPCHINESE} \
+ "安装用于多语言支持的文件。"
+
+LangString str_unsection_register ${LANG_SIMPCHINESE} \
+ "删除 Vim 系统配置"
+LangString str_desc_unregister ${LANG_SIMPCHINESE} \
+ "删除和 Vim 相关的系统配置。"
+
+LangString str_unsection_exe ${LANG_SIMPCHINESE} \
+ "删除 Vim 执行文件以及脚本"
+LangString str_desc_rm_exe ${LANG_SIMPCHINESE} \
+ "删除 Vim 的所有执行文件及脚本。"
+
+LangString str_ungroup_plugin ${LANG_SIMPCHINESE} \
+ "Remove plugin directories"
+LangString str_desc_rm_plugin ${LANG_SIMPCHINESE} \
+ "Remove the plugin directories if they are empty."
+
+LangString str_unsection_plugin_home ${LANG_SIMPCHINESE} \
+ "私有插件目录"
+LangString str_desc_rm_plugin_home ${LANG_SIMPCHINESE} \
+ "Remove the plugin directories from HOME directory."
+
+LangString str_unsection_plugin_vim ${LANG_SIMPCHINESE} \
+ "公共插件目录"
+LangString str_desc_rm_plugin_vim ${LANG_SIMPCHINESE} \
+ "Remove the plugin directories from Vim install directory."
+
+LangString str_unsection_rootdir ${LANG_SIMPCHINESE} \
+ "Remove the Vim root directory"
+LangString str_desc_rm_rootdir ${LANG_SIMPCHINESE} \
+ "Remove the Vim root directory. It contains your Vim configuration files!"
+
+
+##############################################################################
+# Messages {{{1
+##############################################################################
+
+#LangString str_msg_too_many_ver ${LANG_SIMPCHINESE} \
+# "您的系统上安装了 $vim_old_ver_count 个不同版本的 Vim,$\r$\n\
+# 但本安装程序最多只能处理 ${VIM_MAX_OLD_VER} 个版本。$\r$\n\
+# 请您手工删除一些旧版本以后再运行本安装程序。"
+
+#LangString str_msg_invalid_root ${LANG_SIMPCHINESE} \
+# "安装路径“$vim_install_root”无效!$\r$\n\
+# 该路径必须以 vim 结尾。"
+
+#LangString str_msg_bin_mismatch ${LANG_SIMPCHINESE} \
+# "Vim 执行程序安装路径异常!$\r$\n$\r$\n\
+# 该版本 Vim 的执行程序安装路径应该是“$vim_bin_path”,$\r$\n\
+# 而系统却指示该路径为“$INSTDIR”。"
+
+#LangString str_msg_vim_running ${LANG_SIMPCHINESE} \
+# "您的系统上仍有 Vim 在运行,$\r$\n\
+# 请您在执行后续步骤前退出这些 Vim。"
+
+#LangString str_msg_register_ole ${LANG_SIMPCHINESE} \
+# "试图注册 Vim OLE 服务器。请注意无论成功与否都不再显示进一步的信息。"
+
+#LangString str_msg_unreg_ole ${LANG_SIMPCHINESE} \
+# "试图注销 Vim OLE 服务器。请注意无论成功与否都不再显示进一步的信息。"
+
+#LangString str_msg_rm_start ${LANG_SIMPCHINESE} \
+# "开始卸载以下版本:"
+
+#LangString str_msg_rm_fail ${LANG_SIMPCHINESE} \
+# "以下版本卸载失败:"
+
+#LangString str_msg_no_rm_key ${LANG_SIMPCHINESE} \
+# "找不到卸载程序的注册表键。"
+
+#LangString str_msg_no_rm_reg ${LANG_SIMPCHINESE} \
+# "在注册表中未找到卸载程序路径。"
+
+#LangString str_msg_no_rm_exe ${LANG_SIMPCHINESE} \
+# "找不到卸载程序。"
+
+#LangString str_msg_rm_copy_fail ${LANG_SIMPCHINESE} \
+# "无法将卸载程序复制到临时目录。"
+
+#LangString str_msg_rm_run_fail ${LANG_SIMPCHINESE} \
+# "执行卸载程序失败。"
+
+#LangString str_msg_abort_install ${LANG_SIMPCHINESE} \
+# "安装程序将退出。"
+
+LangString str_msg_install_fail ${LANG_SIMPCHINESE} \
+ "安装失败。祝您下次好运。"
+
+LangString str_msg_rm_exe_fail ${LANG_SIMPCHINESE} \
+ "目录“$0”下有部分文件删除失败!$\r$\n\
+ 您只能手工删除该目录。"
+
+#LangString str_msg_rm_root_fail ${LANG_SIMPCHINESE} \
+# "警告:无法删除 Vim 安装目录“$vim_install_root”,\
+# 该目录下仍有其他文件。"
+
+LangString str_msg_uninstalling ${LANG_SIMPCHINESE} \
+ "Uninstalling the old version..."
+
+LangString str_msg_registering ${LANG_SIMPCHINESE} \
+ "Registering..."
+
+LangString str_msg_unregistering ${LANG_SIMPCHINESE} \
+ "Unregistering..."
+
+
+##############################################################################
+# Dialog Box {{{1
+##############################################################################
+
+LangString str_vimrc_page_title ${LANG_SIMPCHINESE} \
+ "Choose _vimrc settings"
+LangString str_vimrc_page_subtitle ${LANG_SIMPCHINESE} \
+ "Choose the settings for enhancement, keyboard and mouse."
+
+LangString str_msg_compat_title ${LANG_SIMPCHINESE} \
+ " Vi / Vim behavior "
+LangString str_msg_compat_desc ${LANG_SIMPCHINESE} \
+ "&Compatibility and enhancements"
+LangString str_msg_compat_vi ${LANG_SIMPCHINESE} \
+ "Vi compatible"
+LangString str_msg_compat_vim ${LANG_SIMPCHINESE} \
+ "Vim original"
+LangString str_msg_compat_defaults ${LANG_SIMPCHINESE} \
+ "Vim with some enhancements (load defaults.vim)"
+LangString str_msg_compat_all ${LANG_SIMPCHINESE} \
+ "Vim with all enhancements (load vimrc_example.vim) (Default)"
+
+LangString str_msg_keymap_title ${LANG_SIMPCHINESE} \
+ " Mappings "
+LangString str_msg_keymap_desc ${LANG_SIMPCHINESE} \
+ "&Remap a few keys for Windows (Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F, etc)"
+LangString str_msg_keymap_default ${LANG_SIMPCHINESE} \
+ "Do not remap keys (Default)"
+LangString str_msg_keymap_windows ${LANG_SIMPCHINESE} \
+ "Remap a few keys"
+
+LangString str_msg_mouse_title ${LANG_SIMPCHINESE} \
+ " Mouse "
+LangString str_msg_mouse_desc ${LANG_SIMPCHINESE} \
+ "&Behavior of right and left buttons"
+LangString str_msg_mouse_default ${LANG_SIMPCHINESE} \
+ "Right: popup menu, Left: visual mode (Default)"
+LangString str_msg_mouse_windows ${LANG_SIMPCHINESE} \
+ "Right: popup menu, Left: select mode (Windows)"
+LangString str_msg_mouse_unix ${LANG_SIMPCHINESE} \
+ "Right: extends selection, Left: visual mode (Unix)"
diff --git a/nsis/lang/tradchinese.nsi b/nsis/lang/tradchinese.nsi
new file mode 100644
index 000000000..504830aa9
--- /dev/null
+++ b/nsis/lang/tradchinese.nsi
@@ -0,0 +1,278 @@
+# vi:set ts=8 sts=4 sw=4 et fdm=marker:
+#
+# tradchinese.nsi: Traditional Chinese language strings for gvim NSIS
+# installer.
+#
+# Locale ID : 1028
+# fileencoding : UTF-8
+# Author : Guopeng Wen
+
+!insertmacro MUI_LANGUAGE "TradChinese"
+
+
+# Overwrite the default translation.
+# These string should be always English. Otherwise dosinst.c fails.
+LangString ^SetupCaption ${LANG_TRADCHINESE} \
+ "$(^Name) Setup"
+LangString ^UninstallCaption ${LANG_TRADCHINESE} \
+ "$(^Name) Uninstall"
+
+##############################################################################
+# MUI Configuration Strings {{{1
+##############################################################################
+
+#LangString str_dest_folder ${LANG_TRADCHINESE} \
+# "安裝資料夾 (必須以 vim 結尾)"
+
+LangString str_show_readme ${LANG_TRADCHINESE} \
+ "安裝完成後顯示 README 檔案"
+
+# Install types:
+LangString str_type_typical ${LANG_TRADCHINESE} \
+ "典型安裝"
+
+LangString str_type_minimal ${LANG_TRADCHINESE} \
+ "最小安裝"
+
+LangString str_type_full ${LANG_TRADCHINESE} \
+ "完全安裝"
+
+
+##############################################################################
+# Section Titles & Description {{{1
+##############################################################################
+
+LangString str_section_old_ver ${LANG_TRADCHINESE} \
+ "移除舊版本"
+LangString str_desc_old_ver ${LANG_TRADCHINESE} \
+ "移除閣下電腦上舊版本的 Vim。"
+
+LangString str_section_exe ${LANG_TRADCHINESE} \
+ "安裝 Vim 圖形界面程式"
+LangString str_desc_exe ${LANG_TRADCHINESE} \
+ "安裝 Vim 圖形界面程式及腳本。此為必選安裝。"
+
+LangString str_section_console ${LANG_TRADCHINESE} \
+ "安裝 Vim 命令行程式"
+LangString str_desc_console ${LANG_TRADCHINESE} \
+ "安裝 Vim 命令行程式 (vim.exe)。該程式在控制臺窗口中運行。"
+
+LangString str_section_batch ${LANG_TRADCHINESE} \
+ "安裝批次檔案"
+LangString str_desc_batch ${LANG_TRADCHINESE} \
+ "為 Vim 的各種變體創建批次檔,以便在命令行下啟動 Vim。"
+
+LangString str_group_icons ${LANG_TRADCHINESE} \
+ "建立 Vim 圖示"
+LangString str_desc_icons ${LANG_TRADCHINESE} \
+ "建立若干 Vim 圖示,以便于使用 Vim。"
+
+LangString str_section_desktop ${LANG_TRADCHINESE} \
+ "於桌面"
+LangString str_desc_desktop ${LANG_TRADCHINESE} \
+ "建立若干 Vim 圖示於桌面上,以方便啟動 Vim。"
+
+LangString str_section_start_menu ${LANG_TRADCHINESE} \
+ "於「開始」功能表的「程式」集"
+LangString str_desc_start_menu ${LANG_TRADCHINESE} \
+ "在「開始」功能表的「程式」集中建立 Vim 啟動組。\
+ 適用于 Windows 95 及以上版本。"
+
+#LangString str_section_quick_launch ${LANG_TRADCHINESE} \
+# "於快速啟動列"
+#LangString str_desc_quick_launch ${LANG_TRADCHINESE} \
+# "在快速啟動列中建立 Vim 圖示。"
+
+LangString str_section_edit_with ${LANG_TRADCHINESE} \
+ "安裝快捷選單"
+LangString str_desc_edit_with ${LANG_TRADCHINESE} \
+ "在「打開方式」快捷選單中添加 Vim 項。"
+
+#LangString str_section_edit_with32 ${LANG_TRADCHINESE} \
+# "32 位元版本"
+#LangString str_desc_edit_with32 ${LANG_TRADCHINESE} \
+# "在 32 位元程式的「打開方式」快捷選單中添加 Vim 項。"
+
+#LangString str_section_edit_with64 ${LANG_TRADCHINESE} \
+# "64 位元版本"
+#LangString str_desc_edit_with64 ${LANG_TRADCHINESE} \
+# "在 64 位元程式的「打開方式」快捷選單中添加 Vim 項。"
+
+LangString str_section_vim_rc ${LANG_TRADCHINESE} \
+ "建立默認設定檔"
+LangString str_desc_vim_rc ${LANG_TRADCHINESE} \
+ "在安裝資料夾下建立默認的 Vim 設定檔(_vimrc)。\
+ 若該設定檔已經存在,則略過此項。"
+
+LangString str_group_plugin ${LANG_TRADCHINESE} \
+ "建立插件資料夾"
+LangString str_desc_plugin ${LANG_TRADCHINESE} \
+ "建立(空的)插件資料夾結構。插件資料夾用于安裝 Vim 的擴展插件,\
+ 只要將檔案復制到相關的子資料夾中即可。"
+
+LangString str_section_plugin_home ${LANG_TRADCHINESE} \
+ "建立插件資料夾"
+LangString str_desc_plugin_home ${LANG_TRADCHINESE} \
+ "Create plugin directories in HOME directory."
+
+LangString str_section_plugin_vim ${LANG_TRADCHINESE} \
+ "建立共享插件資料夾"
+LangString str_desc_plugin_vim ${LANG_TRADCHINESE} \
+ "在 Vim 安裝資料夾下建立(空的)插件資料夾結構,電腦上所有用戶都能使用安裝\
+ 在該資料夾里的擴展插件。"
+
+LangString str_section_vis_vim ${LANG_TRADCHINESE} \
+ "安裝 VisVim 插件"
+LangString str_desc_vis_vim ${LANG_TRADCHINESE} \
+ "VisVim 是用于與微軟 Microsoft Visual Studio 軟體進行整合的插件。"
+
+LangString str_section_nls ${LANG_TRADCHINESE} \
+ "安裝本地語言支持"
+LangString str_desc_nls ${LANG_TRADCHINESE} \
+ "安裝用于支持本地語言的檔案。"
+
+LangString str_unsection_register ${LANG_TRADCHINESE} \
+ "移除 Vim 系統設定"
+LangString str_desc_unregister ${LANG_TRADCHINESE} \
+ "移除與 Vim 相關的系統設定。"
+
+LangString str_unsection_exe ${LANG_TRADCHINESE} \
+ "移除 Vim 程式及腳本"
+LangString str_desc_rm_exe ${LANG_TRADCHINESE} \
+ "移除所有的 Vim 程式及腳本。"
+
+LangString str_ungroup_plugin ${LANG_TRADCHINESE} \
+ "Remove plugin directories"
+LangString str_desc_rm_plugin ${LANG_TRADCHINESE} \
+ "Remove the plugin directories if they are empty."
+
+LangString str_unsection_plugin_home ${LANG_TRADCHINESE} \
+ "Private"
+LangString str_desc_rm_plugin_home ${LANG_TRADCHINESE} \
+ "Remove the vimfiles directory in HOME directory."
+
+LangString str_unsection_plugin_vim ${LANG_TRADCHINESE} \
+ "Shared"
+LangString str_desc_rm_plugin_vim ${LANG_TRADCHINESE} \
+ "Remove the vimfiles directory in Vim install directory."
+
+LangString str_unsection_rootdir ${LANG_TRADCHINESE} \
+ "Remove the Vim root directory"
+LangString str_desc_rm_rootdir ${LANG_TRADCHINESE} \
+ "Remove the Vim root directory. It contains your Vim configuration files!"
+
+
+##############################################################################
+# Messages {{{1
+##############################################################################
+
+#LangString str_msg_too_many_ver ${LANG_TRADCHINESE} \
+# "閣下的電腦上安裝了 $vim_old_ver_count 個不同版本的 Vim,$\r$\n\
+# 但是本安裝程式最多只能處理 ${VIM_MAX_OLD_VER} 個版本。$\r$\n\
+# 煩請閣下手工移除一些版本以后再運行本安裝程式。"
+
+#LangString str_msg_invalid_root ${LANG_TRADCHINESE} \
+# "安裝資料夾「$vim_install_root」無效!$\r$\n\
+# 該資料夾必須以「vim」結尾。"
+
+#LangString str_msg_bin_mismatch ${LANG_TRADCHINESE} \
+# "Vim 執行程式安裝路徑異常!$\r$\n$\r$\n\
+# 該版本 Vim 的執行程式安裝路徑應該是「$vim_bin_path」,$\r$\n\
+# 而系統卻指示該路徑為「$INSTDIR」。"
+
+#LangString str_msg_vim_running ${LANG_TRADCHINESE} \
+# "閣下的電腦上尚有正在運行之 Vim,$\r$\n\
+# 煩請閣下在執行后續步驟前將其全部退出。"
+
+#LangString str_msg_register_ole ${LANG_TRADCHINESE} \
+# "試圖注冊 Vim OLE 伺服程式。請注意不論成功與否都不再顯示進一步的信息。"
+
+#LangString str_msg_unreg_ole ${LANG_TRADCHINESE} \
+# "試圖注銷 Vim OLE 伺服程式。請注意不論成功與否都不再顯示進一步的信息。"
+
+#LangString str_msg_rm_start ${LANG_TRADCHINESE} \
+# "正移除如下版本:"
+
+#LangString str_msg_rm_fail ${LANG_TRADCHINESE} \
+# "以下版本移除失敗:"
+
+#LangString str_msg_no_rm_key ${LANG_TRADCHINESE} \
+# "找不到反安裝程式的登錄檔入口。"
+
+#LangString str_msg_no_rm_reg ${LANG_TRADCHINESE} \
+# "在登錄檔中未找到反安裝程式路徑。"
+
+#LangString str_msg_no_rm_exe ${LANG_TRADCHINESE} \
+# "找不到反安裝程式。"
+
+#LangString str_msg_rm_copy_fail ${LANG_TRADCHINESE} \
+# "無法將法將反安裝程式复制到臨時目錄。"
+
+#LangString str_msg_rm_run_fail ${LANG_TRADCHINESE} \
+# "執行反安裝程式失敗。"
+
+#LangString str_msg_abort_install ${LANG_TRADCHINESE} \
+# "安裝程式將退出。"
+
+LangString str_msg_install_fail ${LANG_TRADCHINESE} \
+ "安裝失敗。預祝下次好運。"
+
+LangString str_msg_rm_exe_fail ${LANG_TRADCHINESE} \
+ "資料夾「$0」下有部分檔案未能移除!$\r$\n\
+ 閣下只能手工移除該資料夾。"
+
+#LangString str_msg_rm_root_fail ${LANG_TRADCHINESE} \
+# "警告:無法刪除 Vim 安裝資料夾「$vim_install_root」,\
+# 該資料夾下仍有其他檔案。"
+
+LangString str_msg_uninstalling ${LANG_TRADCHINESE} \
+ "Uninstalling the old version..."
+
+LangString str_msg_registering ${LANG_TRADCHINESE} \
+ "Registering..."
+
+LangString str_msg_unregistering ${LANG_TRADCHINESE} \
+ "Unregistering..."
+
+
+##############################################################################
+# Dialog Box {{{1
+##############################################################################
+
+LangString str_vimrc_page_title ${LANG_TRADCHINESE} \
+ "Choose _vimrc settings"
+LangString str_vimrc_page_subtitle ${LANG_TRADCHINESE} \
+ "Choose the settings for enhancement, keyboard and mouse."
+
+LangString str_msg_compat_title ${LANG_TRADCHINESE} \
+ " Vi / Vim behavior "
+LangString str_msg_compat_desc ${LANG_TRADCHINESE} \
+ "&Compatibility and enhancements"
+LangString str_msg_compat_vi ${LANG_TRADCHINESE} \
+ "Vi compatible"
+LangString str_msg_compat_vim ${LANG_TRADCHINESE} \
+ "Vim original"
+LangString str_msg_compat_defaults ${LANG_TRADCHINESE} \
+ "Vim with some enhancements (load defaults.vim)"
+LangString str_msg_compat_all ${LANG_TRADCHINESE} \
+ "Vim with all enhancements (load vimrc_example.vim) (Default)"
+
+LangString str_msg_keymap_title ${LANG_TRADCHINESE} \
+ " Mappings "
+LangString str_msg_keymap_desc ${LANG_TRADCHINESE} \
+ "&Remap a few keys for Windows (Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F, etc)"
+LangString str_msg_keymap_default ${LANG_TRADCHINESE} \
+ "Do not remap keys (Default)"
+LangString str_msg_keymap_windows ${LANG_TRADCHINESE} \
+ "Remap a few keys"
+
+LangString str_msg_mouse_title ${LANG_TRADCHINESE} \
+ " Mouse "
+LangString str_msg_mouse_desc ${LANG_TRADCHINESE} \
+ "&Behavior of right and left buttons"
+LangString str_msg_mouse_default ${LANG_TRADCHINESE} \
+ "Right: popup menu, Left: visual mode (Default)"
+LangString str_msg_mouse_windows ${LANG_TRADCHINESE} \
+ "Right: popup menu, Left: select mode (Windows)"
+LangString str_msg_mouse_unix ${LANG_TRADCHINESE} \
+ "Right: extends selection, Left: visual mode (Unix)"
diff --git a/src/dosinst.c b/src/dosinst.c
index 9ecb0f4eb..5c290a8dd 100644
--- a/src/dosinst.c
+++ b/src/dosinst.c
@@ -444,12 +444,56 @@ window_cb(HWND hwnd, LPARAM lparam)
title[0] = 0;
GetWindowText(hwnd, title, 256);
- if (strstr(title, "Vim ") != NULL && strstr(title, "Uninstall:") != NULL)
+ if (strstr(title, "Vim ") != NULL && strstr(title, " Uninstall") != NULL)
++num_windows;
return TRUE;
}
/*
+ * Run the uninstaller silently.
+ */
+ static int
+run_silent_uninstall(char *uninst_exe)
+{
+ char vimrt_dir[BUFSIZE];
+ char temp_uninst[BUFSIZE];
+ char temp_dir[MAX_PATH];
+ char buf[BUFSIZE * 2 + 10];
+ int i;
+ DWORD tick;
+
+ strcpy(vimrt_dir, uninst_exe);
+ remove_tail(vimrt_dir);
+
+ if (!GetTempPath(sizeof(temp_dir), temp_dir))
+ return FAIL;
+
+ /* Copy the uninstaller to a temporary exe. */
+ tick = GetTickCount();
+ for (i = 0; ; i++)
+ {
+ sprintf(temp_uninst, "%s\\vimun%04X.exe", temp_dir,
+ (i + tick) & 0xFFFF);
+ if (CopyFile(uninst_exe, temp_uninst, TRUE))
+ break;
+ if (GetLastError() != ERROR_FILE_EXISTS)
+ return FAIL;
+ if (i == 65535)
+ return FAIL;
+ }
+
+ /* Run the copied uninstaller silently. */
+ if (strchr(temp_uninst, ' ') != NULL)
+ sprintf(buf, "\"%s\" /S _?=%s", temp_uninst, vimrt_dir);
+ else
+ sprintf(buf, "%s /S _?=%s", temp_uninst, vimrt_dir);
+ run_command(buf);
+
+ DeleteFile(temp_uninst);
+ return OK;
+}
+
+/*
* Check for already installed Vims.
* Return non-zero when found one.
*/
@@ -469,6 +513,7 @@ uninstall_check(int skip_question)
DWORD value_type;
DWORD orig_num_keys;
DWORD new_num_keys;
+ DWORD allow_silent;
int foundone = 0;
code = RegOpenKeyEx(HKEY_LOCAL_MACHINE, uninstall_key, 0,
@@ -495,6 +540,16 @@ uninstall_check(int skip_question)
local_bufsize = BUFSIZE;
CHECK_REG_ERROR(code);
+ allow_silent = 0;
+ if (skip_question)
+ {
+ DWORD varsize = sizeof(DWORD);
+
+ RegQueryValueEx(uninstall_key_handle, "AllowSilent", 0,
+ &value_type, (LPBYTE)&allow_silent,
+ &varsize);
+ }
+
foundone = 1;
printf("\n*********************************************************\n");
printf("Vim Install found what looks like an existing Vim version.\n");
@@ -549,45 +604,54 @@ uninstall_check(int skip_question)
/* Find existing .bat files before deleting them. */
find_bat_exe(TRUE);
- /* Execute the uninstall program. Put it in double
- * quotes if there is an embedded space. */
+ if (allow_silent)
{
- char buf[BUFSIZE];
-
- if (strchr(temp_string_buffer, ' ') != NULL)
- sprintf(buf, "\"%s\"", temp_string_buffer);
- else
- strcpy(buf, temp_string_buffer);
- run_command(buf);
- }
-
- /* Count the number of windows with a title that match
- * the installer, so that we can check when it's done.
- * The uninstaller copies itself, executes the copy
- * and exits, thus we can't wait for the process to
- * finish. */
- sleep(1); /* wait for uninstaller to start up */
- num_windows = 0;
- EnumWindows(window_cb, 0);
- if (num_windows == 0)
- {
- /* Did not find the uninstaller, ask user to press
- * Enter when done. Just in case. */
- printf("Press Enter when the uninstaller is finished\n");
- rewind(stdin);
- (void)getchar();
+ if (run_silent_uninstall(temp_string_buffer)
+ == FAIL)
+ allow_silent = 0; /* Retry with non silent. */
}
- else
+ if (!allow_silent)
{
- printf("Waiting for the uninstaller to finish (press CTRL-C to abort).");
- do
+ /* Execute the uninstall program. Put it in double
+ * quotes if there is an embedded space. */
+ {
+ char buf[BUFSIZE];
+
+ if (strchr(temp_string_buffer, ' ') != NULL)
+ sprintf(buf, "\"%s\"", temp_string_buffer);
+ else
+ strcpy(buf, temp_string_buffer);
+ run_command(buf);
+ }
+
+ /* Count the number of windows with a title that match
+ * the installer, so that we can check when it's done.
+ * The uninstaller copies itself, executes the copy
+ * and exits, thus we can't wait for the process to
+ * finish. */
+ sleep(1); /* wait for uninstaller to start up */
+ num_windows = 0;
+ EnumWindows(window_cb, 0);
+ if (num_windows == 0)
+ {
+ /* Did not find the uninstaller, ask user to press
+ * Enter when done. Just in case. */
+ printf("Press Enter when the uninstaller is finished\n");
+ rewind(stdin);
+ (void)getchar();
+ }
+ else
{
- printf(".");
- fflush(stdout);
- sleep(1); /* wait for the uninstaller to finish */
- num_windows = 0;
- EnumWindows(window_cb, 0);
- } while (num_windows > 0);
+ printf("Waiting for the uninstaller to finish (press CTRL-C to abort).");
+ do
+ {
+ printf(".");
+ fflush(stdout);
+ sleep(1); /* wait for the uninstaller to finish */
+ num_windows = 0;
+ EnumWindows(window_cb, 0);
+ } while (num_windows > 0);
+ }
}
printf("\nDone!\n");
@@ -1609,7 +1673,11 @@ install_registry(void)
}
printf("Creating an uninstall entry\n");
- sprintf(display_name, "Vim " VIM_VERSION_SHORT);
+ sprintf(display_name, "Vim " VIM_VERSION_SHORT
+#ifdef _WIN64
+ " (x64)"
+#endif
+ );
/* For the NSIS installer use the generated uninstaller. */
if (interactive)
diff --git a/src/version.c b/src/version.c
index daeabf5cc..aadd16183 100644
--- a/src/version.c
+++ b/src/version.c
@@ -800,6 +800,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 616,
+/**/
615,
/**/
614,