patch 8.1.0616: NSIS installer is outdated

Problem:    NSIS installer is outdated.
Solution:   Use modern syntax, MUI2 and make it work better. Add translations.
            (Ken Takata, closes #3501)
diff --git a/Filelist b/Filelist
index f475004..6daf111 100644
--- a/Filelist
+++ b/Filelist
@@ -477,6 +477,7 @@
 		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/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 55bb4ce..12a55bb 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
+!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"
 
-Name "Vim ${VER_MAJOR}.${VER_MINOR}"
+!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
+# 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
+
+##########################################################
+# 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
+
+
+# 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
+
 
 # Reserve files
-# Needed for showing the _vimrc setting page faster.
-ReserveFile /plugin InstallOptions.dll
-ReserveFile vimrc.ini
+ReserveFile ${VIMSRC}\installw32.exe
 
 ##########################################################
 # 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"
-
-  # 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
-
-# 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
-
-Function un.onUnInstSuccess
-  MessageBox MB_OK|MB_ICONINFORMATION \
-  "Vim ${VER_MAJOR}.${VER_MINOR} has been (partly) removed from your system"
-FunctionEnd
-
-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 @@
 	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 @@
 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 "$(str_section_start_menu)" id_section_startmenu
+		SectionIn 1 3
+
+		StrCpy $1 "$1 -add-start-menu"
+	SectionEnd
+SectionGroupEnd
 
 ##########################################################
-Section "Add Vim to the Start Menu"
+Section "$(str_section_edit_with)" id_section_editwith
 	SectionIn 1 3
 
-	StrCpy $1 "$1 -add-start-menu"
-SectionEnd
-
-##########################################################
-Section "Add an Edit-with-Vim context menu entry"
-	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 @@
 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"
+
+	${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}
+
 SectionEnd
 
 ##########################################################
-Section "Create plugin directories in HOME or VIM"
-	SectionIn 1 3
+SectionGroup $(str_group_plugin) id_group_plugin
+	Section "$(str_section_plugin_home)" id_section_pluginhome
+		SectionIn 1 3
 
-	StrCpy $1 "$1 -create-directories home"
-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 "Create plugin directories in VIM"
-	SectionIn 3
-
-	StrCpy $1 "$1 -create-directories vim"
-SectionEnd
-
-##########################################################
-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
 
 ##########################################################
-Function SetCustom
-	# Display the InstallOptions dialog
+!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
 
-	# Check if a _vimrc should be created
-	SectionGetFlags ${sec_vimrc_id} $3
-	IntOp $3 $3 & 1
-	StrCmp $3 "1" +2 0
-	  Abort
+Function .onInit
+!ifdef HAVE_MULTI_LANG
+  # Select a language (or read from the registry).
+  !insertmacro MUI_LANGDLL_DISPLAY
+!endif
 
-	InstallOptions::dialog "$PLUGINSDIR\vimrc.ini"
-	Pop $3
+  # 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 ValidateCustom
-	ReadINIStr $3 "$PLUGINSDIR\vimrc.ini" "Field 2" "State"
-	StrCmp $3 "1" 0 +3
-	  StrCpy $1 "$1 -vimrc-remap no"
-	  Goto behave
+Function .onInstSuccess
+  WriteUninstaller vim${VER_MAJOR}${VER_MINOR}\uninstall-gui.exe
+FunctionEnd
 
-	  StrCpy $1 "$1 -vimrc-remap win"
-
-	behave:
-	ReadINIStr $3 "$PLUGINSDIR\vimrc.ini" "Field 5" "State"
-	StrCmp $3 "1" 0 +3
-	  StrCpy $1 "$1 -vimrc-behave unix"
-	  Goto done
-
-	ReadINIStr $3 "$PLUGINSDIR\vimrc.ini" "Field 6" "State"
-	StrCmp $3 "1" 0 +3
-	  StrCpy $1 "$1 -vimrc-behave mswin"
-	  Goto done
-
-	  StrCpy $1 "$1 -vimrc-behave default"
-	done:
+Function .onInstFailed
+  MessageBox MB_OK|MB_ICONEXCLAMATION "$(str_msg_install_fail)" /SD IDOK
 FunctionEnd
 
 ##########################################################
-Section Uninstall
+Function SetCustom
+	# Display the _vimrc setting dialog using nsDialogs.
+
+	# Check if a _vimrc should be created
+	${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
+
+
+	# 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
+	${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}
+
+	${NSD_CB_GetSelectionIndex} $vim_nsd_keymap $3
+	${If} $3 = 0
+	  StrCpy $vim_keymap_stat "default"
+	${Else}
+	  StrCpy $vim_keymap_stat "windows"
+	${EndIf}
+
+	${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
+
+##########################################################
+# 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
+
+
+##########################################################
+# 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
 
-	Delete /REBOOTOK $0\*.dll
-	Delete /REBOOTOK $0\GvimExt32\*.dll
-	${If} ${RunningX64}
-	  Delete /REBOOTOK $0\GvimExt64\*.dll
+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 64-bit GvimExt
+	${If} ${RunningX64}
+	  !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 @@
 	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 @@
 	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
 
-	NoRemoveExes:
+# 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
+
+	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 0000000..c2f4269
--- /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 0000000..21e60fb
--- /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 0000000..4b65169
--- /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 0000000..223d6a4
--- /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 0000000..6ef2a9b
--- /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 0000000..bf99194
--- /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 0000000..fc3720a
--- /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 0000000..3ff986d
--- /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 0000000..f8990a5
--- /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 0000000..62b1531
--- /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 0000000..d816fee
--- /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 0000000..8d167f9
--- /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 0000000..c93bfc2
--- /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 0000000..504830a
--- /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 9ecb0f4..5c290a8 100644
--- a/src/dosinst.c
+++ b/src/dosinst.c
@@ -444,12 +444,56 @@
 
     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 @@
     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 @@
 	    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 @@
 			/* 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);
+			    if (run_silent_uninstall(temp_string_buffer)
+								    == FAIL)
+				allow_silent = 0; /* Retry with non silent. */
 			}
-
-			/* 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)
+			if (!allow_silent)
 			{
-			    /* 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("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. */
 			    {
-				printf(".");
-				fflush(stdout);
-				sleep(1);  /* wait for the uninstaller to finish */
-				num_windows = 0;
-				EnumWindows(window_cb, 0);
-			    } while (num_windows > 0);
+				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("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 @@
     }
 
     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 daeabf5..aadd161 100644
--- a/src/version.c
+++ b/src/version.c
@@ -800,6 +800,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    616,
+/**/
     615,
 /**/
     614,