From af610b8e66a7fefcb8db07ee65686f51e1cb288a Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Fri, 21 Dec 2018 16:22:50 +0100 Subject: [PATCH] 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) --- Filelist | 2 + nsis/gvim.nsi | 1164 +++++++++++++++++++++++++++---------- nsis/icons/header.bmp | Bin 0 -> 102654 bytes nsis/icons/header.svg | 265 +++++++++ nsis/icons/un_header.bmp | Bin 0 -> 102654 bytes nsis/icons/uninstall.bmp | Bin 0 -> 618006 bytes nsis/icons/welcome.bmp | Bin 0 -> 618006 bytes nsis/icons/welcome.svg | 268 +++++++++ nsis/lang/danish.nsi | 175 ++++++ nsis/lang/dutch.nsi | 281 +++++++++ nsis/lang/english.nsi | 280 +++++++++ nsis/lang/german.nsi | 280 +++++++++ nsis/lang/italian.nsi | 290 +++++++++ nsis/lang/japanese.nsi | 287 +++++++++ nsis/lang/simpchinese.nsi | 277 +++++++++ nsis/lang/tradchinese.nsi | 278 +++++++++ src/dosinst.c | 142 +++-- src/version.c | 2 + 18 files changed, 3637 insertions(+), 354 deletions(-) create mode 100644 nsis/icons/header.bmp create mode 100644 nsis/icons/header.svg create mode 100644 nsis/icons/un_header.bmp create mode 100644 nsis/icons/uninstall.bmp create mode 100644 nsis/icons/welcome.bmp create mode 100644 nsis/icons/welcome.svg create mode 100644 nsis/lang/danish.nsi create mode 100644 nsis/lang/dutch.nsi create mode 100644 nsis/lang/english.nsi create mode 100644 nsis/lang/german.nsi create mode 100644 nsis/lang/italian.nsi create mode 100644 nsis/lang/japanese.nsi create mode 100644 nsis/lang/simpchinese.nsi create mode 100644 nsis/lang/tradchinese.nsi diff --git a/Filelist b/Filelist index f47500456d..6daf111f5d 100644 --- a/Filelist +++ b/Filelist @@ -477,6 +477,7 @@ SRC_DOS = \ nsis/gvim_version.nsh \ nsis/vimrc.ini \ nsis/README.txt \ + nsis/lang/*.nsi \ uninstal.txt \ src/VisVim/Commands.cpp \ src/VisVim/Commands.h \ @@ -517,6 +518,7 @@ SRC_DOS_BIN = \ src/xpm/x86/lib-vc14/libXpm.lib \ nsis/icons/*.bmp \ nsis/icons/*.ico \ + nsis/icons/*.svg \ # source files for Amiga, DOS, etc. (also in the extra archive) SRC_AMI_DOS = \ diff --git a/nsis/gvim.nsi b/nsis/gvim.nsi index 55bb4ce007..12a55bb611 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 @@ Section "Vim executables and runtime files" File ${VIMRT}\rgb.txt File ${VIMTOOLS}\diff.exe - File ${VIMTOOLS}\winpty32.dll + File ${VIMTOOLS}\winpty${BIT}.dll File ${VIMTOOLS}\winpty-agent.exe SetOutPath $0\colors @@ -299,120 +418,63 @@ Section "Vim executables and runtime files" SectionEnd ########################################################## -Section "Vim console program (vim.exe)" +Section "$(str_section_console)" id_section_console SectionIn 1 3 SetOutPath $0 - ReadRegStr $R0 HKLM \ - "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion - IfErrors 0 lbl_winnt - # Windows 95/98/ME: not supported - Goto lbl_done - lbl_winnt: - # Windows NT/2000/XP and later - File /oname=vim.exe ${VIMSRC}\vimw32.exe - lbl_done: + File /oname=vim.exe ${VIMSRC}\vimw32.exe StrCpy $2 "$2 vim view vimdiff" SectionEnd ########################################################## -Section "Create .bat files for command line use" +Section "$(str_section_batch)" id_section_batch SectionIn 3 StrCpy $1 "$1 -create-batfiles $2" SectionEnd ########################################################## -Section "Create icons on the Desktop" - SectionIn 1 3 +SectionGroup $(str_group_icons) id_group_icons + Section "$(str_section_desktop)" id_section_desktop + SectionIn 1 3 - StrCpy $1 "$1 -install-icons" -SectionEnd + StrCpy $1 "$1 -install-icons" + SectionEnd + + Section "$(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 @@ Section "Add an Edit-with-Vim context menu entry" SectionEnd ########################################################## -Section "Create a _vimrc if it doesn't exist" sec_vimrc_id +Section "$(str_section_vim_rc)" id_section_vimrc SectionIn 1 3 StrCpy $1 "$1 -create-vimrc" + + ${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 @@ Section Uninstall RMDir /r $0\ftplugin RMDir /r $0\indent RMDir /r $0\macros + RMDir /r $0\pack RMDir /r $0\plugin RMDir /r $0\spell RMDir /r $0\syntax RMDir /r $0\tools RMDir /r $0\tutor +!ifdef HAVE_VIS_VIM RMDir /r $0\VisVim +!endif RMDir /r $0\lang RMDir /r $0\keymap Delete $0\*.exe @@ -568,46 +1066,78 @@ Section Uninstall Delete $0\*.vim Delete $0\*.txt - IfErrors ErrorMess NoErrorMess - ErrorMess: - MessageBox MB_OK|MB_ICONEXCLAMATION \ - "Some files in $0 have not been deleted!$\nYou must do it manually." - NoErrorMess: + ${If} ${Errors} + MessageBox MB_OK|MB_ICONEXCLAMATION $(str_msg_rm_exe_fail) /SD IDOK + ${EndIf} # No error message if the "vim62" directory can't be removed, the # gvimext.dll may still be there. RMDir $0 +SectionEnd - 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 0000000000000000000000000000000000000000..c2f426953cc286fe381e8f0761222dbb1cf51525 GIT binary patch literal 102654 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 literal 0 HcmV?d00001 diff --git a/nsis/icons/header.svg b/nsis/icons/header.svg new file mode 100644 index 0000000000..21e60fbc46 --- /dev/null +++ b/nsis/icons/header.svg @@ -0,0 +1,265 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + The editor + Theeditor + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nsis/icons/un_header.bmp b/nsis/icons/un_header.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4b6516951f44a16a8398341992000b4343204405 GIT binary patch literal 102654 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 U6&O}vSb<>$h7}lAV9hJ=fA@dRng9R* literal 0 HcmV?d00001 diff --git a/nsis/icons/uninstall.bmp b/nsis/icons/uninstall.bmp new file mode 100644 index 0000000000000000000000000000000000000000..223d6a45df3d1c2c32974742928111e13f10888f GIT binary patch literal 618006 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%0Ak;$-#jALHU}46&-Xchoy4`_s3F?PD7g1|;n!H8 zQW0PDJ+vU_9^Iynxy@!`Qe+|p9tHgn6_KTDlo+p@pf(ly06KywS!*%bBI%X46k-d4 z^cLAcdui#FK+Vl^ybUq?d&=V>skV*-)CJMOHBYa>FHo}xJUt9*{xqQ7bFIG;J`%0G zGa>*KSAtMn-O=tk?@=XHGC!Sq)y=CtX}boSL|=T+uiP# zZuH&jugu`uC<1LOUIg04BCJqgyk8#gg-U)1_2qSszDurnS%%eyW#%5b>AK{@h3Zrp zr?G#^7eIj8`U=@Oo{V%^bC2mlDRiL+lg+yby7hTc0kl%06AIF6RBlhwLgf1K)TtqT z)7705Wxb^?p!O2FVz15yxdAms!?lg$2DA%ctV)%z04(Mm;y2A4!$@5J;c=MuX?ggw|iWBs*IwRLrt^YDZGLjV)k+b z&!pEtdsAk>@_4bfb!7~216;VSB#>JH>aB-z8U8$*1P~3NH^2#Kx-5Ieo5aL~$ zJ`aL_WhINNV9gB6%bJ@JGo>YSZV|=gr;c>eTjY6jP%_+Y;%mB&y{79nCI9*GlH`(& zM%t53ogPGIY6n^TZdu%13i2vZ3&t3L&!c;inC0T}fjaY95@llQSn4f7UE_LxXg3bctTssiQfIOFwED0mg*V~a<3%_N zx+Ci8iNu$j0N-1501-M#gGqOr?3Vr3rA@wv74K3F=pg5xmy%Q>vA|?cPH7>INAlXj zCMVyNI#sr`@TO7(>H1GOKza@EkllD2F%D%mQMk~}K^|0ts%Q+AYel0HFOw_EXt{o# zx>)LcK;7VaKzkGWX0C^!xQUfSg}m_R-sA{lOW zK=^D*%k03WwWHELK8!v|A{VWv74;)RisSim{>HcIutFp8Hz+7Wfbjxw%Cp#RR5j#= zAPq4aiiJejbU;v>!`i`8hs%ktA-a@3W9eU0`ZxpBG2Me}hyV~~$S}nnoO9tbRnrg36{eY) zrs8; z&=|3@(7z@^P3`)67<6_(jnUpwDu^xz1KKqQk30^GBl!i|%mi6t&IF+dyGc;%>yp6C zy_m6vb}c{k@sYjiZ`cOc^;4xeLnG(K67gg8lY0prz#@kx;|*@sn@RiEBPz#CGdN3& zr9ih;I$~{0cP3}G%7f)V8jY92^B33qMOeiw`8Fjtdr--&I&Bb)v-Ji7-82=-^Oq2x z;huzcAx@!;gEI(f210VfmsSd*%fX(|ZakSnkhLC!(KWOaSg{U#a`CCPRYgQM9e8;e zQf8pNC-s)%T5}m!KuzG|fwR=K7OMvu0Ahf^MSWRRCN$pUUAxZrW~qT%##@*y;+9ym zOmq`L%5`%J;&j@>#F?$Y|~o1vgGWlSG}qY)A;!+&l@yIWPVMuPO%n_G|m_IxYHxj z@}4ESs)BR^j44b%bn`l>sfaOeg!+orCdrM3DvWk;mO%~I2ZT17^y;oiW=)gz9f!+) zNkT#`vH_mK0w6FG^^}m=Snm|qV((bgNz7ukNf)nPRfT|iLVGt{$5>-4bC%!&mW>52 ziUkB}W)%7$$om~&d+S@@x*1wdnG%*7sA&NGnY_nhRF!x^$=W==y-9GW1YXB^aa(rX z4GJUfos{|F9(Q_#FJZ1tC7M>Dtfmg@Hgr=^7!<=zsZK(>a3P}WR5_KH+GdYZi{WPd z%l(d}4yf~cD63s)(x)Io3coX;F8AztFw;c&)1FOC4kUF3+N^fMZHNF>fCYpHKls6f z8K~ui`y4VZfQ%K|5acPD944bQbn>{?G|@E*3X1Q+@dj#GVD(}&0}z&!5rh||{qC2E zE&}yF(8h(DCPm#PyGXXYI->(fKEQP8`KvIyAS3h6elbbzgb-KQR z807$K?6@YVCe3M7G(q>G{3NsqaN#eGG@#~{ZJMV(T~O}{Z8S-&9h#IBM9@v?1>odd zL6g4ZPlx^OTgjCJwo*3{0OEdqpe;m@e1Hqi9$bj>fPw`f{LSpPxRS5v9(TImQ%I+Y zvw&-<x#c3LcDSF zENB&IkSnV!8VR@84Y!bzglh!U!!v?w8aud#0&w8pLWlRM*+Gjx*+Int)X-O;1lNj* zExVvMW9(1wa+kXpbwI6tu`pdhX_N|KSyh4;@6mWY#LHj2S;gBT^Ch>r--BETUD7uI zXXW*u($Ek!D>UGf>ws_@k67&*+O_i;MB~c^1nS+OjV3}N;+hnMxdYinVi0tb=Kx%c zM!XdS=}Z1pe%)LOyOr=F6y`=h8wy`0x{4E6Tll6 zqM{Y|kEQ6}o4Dwri`WkKnqQ|U>O6H^>w})e-+(?n=YeOJHZ~O2?tiYp4!p#eGNa(* zC5{-!&-l;Z1Zi+>QdL#~O$?kYL76z3JK&{${fs822&H}SNSs1+p*!>b#?Cos z!O=lMsJ?)I{_5AADSV+6k8djHZ~2ck!=)Z|_6@mG+B)CPW&f9Y9L%>>p3+d7AoE}z zfa8ALHduyeCD4Wr*WE+QAqe8Y2wKhWLF!W@G)8jxC!aUdF0aE7s24pqaNQ=r*{_Vr zZdRetQI}qNDPaIf))uJQK_Qw1#9{6gB}oY7MrHs?*iIFAw)R~aSzrvD?Fnh4 zB=0&Y)~hI9=PV^xCNH|*gB~Z?s!}0E!9V8-SOv$`&$`wEZMn_F+6If)MvY&^OyD)J zlOI~HI2&i*QU}yKK${PSl^8_#;uIw;XaaD~IopH+Ty%tzeo@e*lw9#AHz;`RW{;$> z{`2Mhjh8i{cw8lFlK@H0O+&7ytu*A3QiFq;w#sd#6;-L6eBv_h<2X&ub^~uBGFDpw z>J-oxuCnRi&jh%iPGB#3Z@l1zQG>5NjkU+KhG9`X!F5cwZqrvrN0p%)=F&(oRr*;D z?Dha$B*6{0z3pww_4+`dp&rH#Nm&5`BUi>5W;dm*S$vk7!wl5iY@!H~u&FuQ&M4*z z6?48#=`WtU@v?n86^{qtDrCDEZqVkFgSJ?*hjxi8^)qGyixoWwcA};8l#&QS0{@J= z-!-V0LffXmk>Y_i%t0SiH&CMR684#^5s;W!s zF_CqQwR9E{VoBLkL2*DGLtNfRMkwV04|ssR_-b+;@YpL+M3-z382qJwIC62=AX>M{ zt)7z*6xb*G4Kj7NH?1f;IH;FeZFYwTCHo;(lH0W2hAIxmu`e(O85k@j_@%V{)jhNU zFU}*1ETwFQqLRsyzxvJn9`tw`>f1^~c;Qcyx^Baiv{f3~)K+Q8o!atXT2Uwc5bonR z!_7%6(B^W(0s~!e4ceu|i2GA1uCNGFQV6J@2eH(F=bpIM=RiBzzgX=66ES`Cvlh-x z$DC>wUjPEvs6-Qj4D4Wm*w$3IbQ!NW#+s`vGsdL{>Kf764(RT8zx$>f`=-{HUT4Iy z7=PiH_AU+~L^Bz>ZQvwGODlClRD>Jq^~RnpRZTYJ zVs6l-(n{PCDuSlsA@I)wZC0E86^*iP{Ox$-a8VE)Bj~qW$w9fEgH6VFhwD4zT3hK% z4{g3Q@01ney&MT`pN*pv;F`Tg9AS$GVT5{z4)iB5Qdo(si?J3LbHAGnzBtll*R`c+ zU35R^oS?!lbOUmnNgbwgL7sGxY7(yJ7bvKgLfa%P-mfw!jNkDFJej zg-ZM}H_MA6m*R1mr4+T*<^1JeP7`jX^F6BubD#lx+R{V{MnGi@VjA+uxppr5DHS@X z8**I!l$$-}abQ&K0FUJX&E~|~T zx8a)n!(mZ8SsQ4}Rxt-`5G*Tr4beJGV)dEumZ}i0l|~b2OAV2B z>F$_pf-R1&P4;1tJ73%WxNe|rEXn&pH!GaNQL!Cy4GtPBT4bdc)6p>XTM=bN1 z+8sbGOK=uI9bK_Kw5>A~9F?WHh=6wi9kP_d&bsJNR3C`JDgIiLK?m~66gpfHqtzuB z{koxE1MG1+A)16CjuB5=vCc(xz%r)PZIwEk=E`+#>6J&cVmPW&GibBg159?Xj~U)b2$tIv?(j&0`O8K#PT%(mJa3JmOF!M35Oonj3CI+kXRO6TRjq7 zvv-_uu)Xq?uUxB(atw5^&sFdUf!V)kuFuGsxdUw$L5Tq(u6j#;beKp;2wdo(-T~Ue zB4bB$AVP|u8zK-#aS%iUV-O8Ea71r&Y*0+Jr3l!Ot|>0&uWoa*M?6??7j(yb*KO%Q z5KZAw2x&_VN@`QBGTD}U(vS!7lorx|yylRL+@{37f<3M|dvJZLTiwbVtOdyRfu(v_{O|w%@3iQl za7{{y>(#DywYnk4`oJY9vWoA7nWQl^M1rU!A;A5v6ZkXk_nETPwQs-3YP%Wepc|Ap zv_UtGr?AllXsGHQcLrj}g}!VTs+-3g2y47zJIq7|w`aWK=CO6s=M zKiO6qf^G@{w22m_L5#&*Og6_-0?ibsX`teYb5=!{tXm}iRL}ezXR$CKOpIJ}`;ESMb51e2jh+~?e8z>Un(tfd?0X2k%T#$ugim6P> zurIFrD=~1VUU>?s>xR+_I7fjLKcB%(TeJs6V~tAAHFZQ=X~jA+~&bnA=j{^}mI zbw79p+Av$(16Za&Ks#zgyBHV8py=C0ZMoU-DIcwj)L)n0VDo@h0;fpAIMt%&NIP81?0HZr z^=xX$^>R;Wt`+sD@J@HSlMmNY=9gZ2DS0rRVVN=QP2o@i`~g{U$)%Oq>r=t?{qKMO z8q@{X%qV+dtqTu-`yzCjfws2#H85T_zsEi95g)QxoTT{5RJ+J}e@iXan2bRVcu_tO zt_@S3^MKX%RY_UUAqoWbe?9CKiyYt@=&Z{N&6f4w_GO_!J3eIby$=g&aARwFK|1Ue+em6i*_6jPU~~K&xIO_La@DI|6+^iP zH^2GK57__7s+jMA>tn*TkjI>I4b`Q`<}zlW%?<0JEgKKo#Y`U@)Uft|2Rz`o&8Yc$ zSko3?bW&~)coE99#m}+S{D9R?R%KNHhGN|0Uk`ZE7r4xJNr|s1Z+3S4a5;^oSZ?mO zxQO#M8ECucO%t=&jXVU}HKGsVeqUxj&zBQ$#j~pI1k5O}SWF7nC!j+l2jp0|;$^F@ zhIa=%<%*B^I_pvn?uYM>YcRLMnJ{dEwtZ7AgK6YJ28n4X^VIvt)aL>H!T(Rd6_@f# zV<%%q;aX6C+iXP_`n{b{tyH7)&ec%HhSU2RD_P|Q3 ziJI#&^Lw@>XI|H7fFG^Y+e}IiZOLA6JEp}ajTz-(HW9?q zQ!~P~SUQ%`qDE}G)eOzF&eF=8`^`z!Z84*nwr+Hb7{^lr^rnhAgz}g>CyQ z-ZO0`?<@(Jbj5wKW&3I;@065oXhnyx*UV_6LoDB&tYQ0$jTybxwXS7FD3eVS)_o96 zS+~4>wf&tINj83n&JSFleOzOu*9x-eXwq<7AW@4-b9_KhPnuDgx?b28U1=a-Vkk?k znvB-|5U>q}IHjf!R~)V_Fl+n}x@FN2`kPHV)(ttfl7xOXQ`ua%_O*X}(UnHGizB=N zQ7^WfPbnYjuWMRwHaUNNki1#LSql`cb(zGqi<{P0z=%v*2wwkMytMQC)C~lV!xgux ziVo?+`TbpS1FvDlD+X%wgSWWFE$ZuBaW6$SELe2fyW*CpG1;a$n%8fS$rT^CKFjfS zElUw#MeeA^lw&UUq$|Dy1VqrKAqS0b zpe?RAT+?!Uy5e5MkQ1oeYNiEcJS;)viZ|i>4t|KxtZv8<8Uk{~2d*y^T*J6G7rY`g z32idNdu;gYRAeU^TcEuss1M?b^F8{0)>pjbBA=$M#t+#60w(+Fn)_p}c=oJovf|c% z)=G7op2Ci%8?J9tf4Rp*Nu!0D3X3a#C?9*9dLm=n+e=Q%n9z)(IrRnykBcj=(fUtI{SZ6J_aDHm zD|9TMN#+lTpd+gqxZXxcHr<1#d8uR*v?sS?*eQi2f_N;fsEkl~DbJImW ze_eBb99R5EFdp!Rf$L4o+VZ-MGG=DJBxjn9-NJML5o|UH-R+e1Zy*2{TXsIT*?*uH z#rlf58<}d|Yr=WJSqgz8&8XBw7U}Kpic>rFD4JuP*AQ3Sikhw9!I!yB3gWG`Mz9|4F+`U2(Eq*Wj3MoVZ7LHi=Vve3*$j(`|YG;6xbj1g*C!xCZqL;g8Ui-q?8{FUqHQ#eAE;|Uc_jkpc z^pVBwo7{;evCOYtN-MiD)TC$@gPAq3GzGLdo)`Joa$;qGMR!9Tai$rDSW;@}`SZ%1k-u13mvp&Z>w5-8yOz@)9 z{ax|ile8bmWFLB0+%{h`WaUieQ8!)_M-{s;n%`W`wfD;`6=5O zNsMr)5U^p*QdgXQXlh`rPjOe$f$LuIcD^EwkDHS@G#9-a*m!G^1X-#5p}oH=-l(0D zD{Ij0HHyXv?(d456KvdoK)ZLvL2?my8XY20z*6()g#$LbmRK-ZDf3C|HacW!O3;Tt z^tpz%)Tmuaz4uY?N_u2me5e}+t{2J4kvID!*^EQ(HK^ttkVt|Vu|1)^zboEk#Z6l$ zSJvR#X)}cVU2)$(<;V8W?q8)@>WX_mtJgwSui0(GE;?Q-vx8zn?EPJFs}X8kBcPp! zPiwc~f$Jloy7UGgR@y4WEreqydTGuq_Ds5ObQ9@v=oK}cEaJ@)Kw!hi8o@ZihtDqZ86ln7Xw?uJ&+y1V2 zlNFzF#d*%PZ4!)cPnq1=OzZRQ;d&C~&J&aJ|1P-gq(; zh226<#T6g8UMi5=-|yp1GgjMFPXARPR!qXV$Luy&dQWoc0+l{1etfRDub|d|H8FJO zJKuR5Xz$>PQ#*BAYLGWee9cuZ_L^F2yojamta%@;ZpbmMaw@L)!1eYx-QiB3`kjHc zwUJ)lY$Snbd5L=)Aouqi+!Z(1+_&P2Wh#vkBuIMUTmwStTAn+?(cmy5iP>Q&9D|G<_gDc(`VsBH5vdv!uc=F-K2-p2u@ujo# zv{OAOOOMLuuut+Ed;`}zKy~RO);P^9S-}F4Y%L6dwlCdG0&3>s{;s&GpQb0aWSnfV zi6sGNX;!>3qxMg*7-k!2@8F6zi`+!_^8cK0!L@ZM6t6Lws_1uNTIz~Z)C~cBKJw%j zo()_t1?g`0&u>C*u}A;GFLG{5bP`iD7Z2`=gTQ2S4|>pp8dn@n7ZFG7*+2kbYg})# z+S*-eMg+czY+UiBv-8q%bwiE?-6!vg4_q%2#eHrT6%wIM ztI?R+X3sz(LHsslt|qbOVw2QW18-qbx0?kj=59#lWOI!x&L%EusCUJ)Ra6h{e(qrD zNg#-$Pe*;U-Oy|-@adXcHHlP3|ub~#XWB( zAv4hC1omGA0?ce{Fo~@GV(*Geyf5l@zd!{9`i5MwOIU520LR4iqP7|{%0=l-cC0o! z)NL(w#lfu!=dXYL>jSm;$ok%5tl_%fg=wiP-b@$bsa2*Y?1~RuFOtLkZ{~c?KwCbi z5n#ehFtT~zB)IyE`@7;~z6KFQ^sTtEzbkICscy(Ie}jQ*Ot#ZzPZDNy>6h2MWLmdH zhgg*g)Esh=b&R!j1vX-82)NW0_x0_%A;&m=!mjwh_5M&@S_7X@u4a=%4#GsP5e%!O zKz7{10cg4Mn%~A){(*6Op zN&o(RlSQuhi(mZWW(mE8?!^^9neD^}t{2JSp>F>9pa1z8Xj`Gtq@=(cw71+kX@6I| zU!bxngLiOOoV#KgYZBT`l&Z0l;L^w+)a zbtk#-Y~Xs4Y#i`r*qPacTu9rPC(xF{lGK{Co6W^0sk_5k@n$24O|CfkX&}HkUqq$e z70=v#5A9~@>He;`8muW5Q?t}cK%L!M_H@N@w(+<)=O?-FY~Xs45FYks`*oOS+2oL$ zziwp1shMu(xIuA$dT>{qw?OjyhFoc0D&N5sZxYBhWlBR0wD)(#tubq~rIkF!mCcRe zI-vHuXI9+ny3Om@e1MY-u?MaX3)Q8yS?@ISeF1yn_RzLIO$uldV&&q6<%*lWuZJnU z!0(-e_Q73oi`;rp!?lp7@k5rn;$rH0P#SvYJKuR?uK2+9QY0Sye(xP9o2+&dz(!Qe z^Ky3!iYE^a?uturO*TY?nnd4HS6oJ`hJfRGg?w$bdslo>MhowntT^yyJGEk|9oT|N zXk9TwVh!ZVwY!+YaYM_RlK22hhg%f;p?`KYA}RGN9%8CSgdvcL|m_ziD(!x{yA zd)c#6WEEt|59u})d<@Dm>K2YF5=6PpXb=r`chY1BCe_G=}&*U zoeT%AFAsirkxAWW)DuzltAol9MD8zeUB&UAU%p)_BqJJbfGO+CY27g(KzgZb|Z$ecG@e?;nJ zc=*^o+%7Cvd}lMdbWdP9q?uW(!8?DvREIP{x@om0b=KhVP^SaeX93Q2A71c+7tHL# zAj8(YzYsaJp3{6y5ADVk7pK>49eLcFQHbbUaiw>~z0+}I{q+s|n9-%KIE^=t-%WpA z>WafxU6rN&KKgS4JBpt{T+0vVJGpimxm@|-MaZB3{O8Z?d1wJ@lRb{)$RYPHRGy+M zPXAzK8Pt&nbO^WKtkVv~&L>CKU*F*M?HyY2h*kRbk*=$nKki@07EfJHaBUsVd*A!s zfBxrxe$$)YwlKU|=NV`Va+__7AZ5?2xJ|Ze zi{sdei%FC1HH!L9?UL%r(OrHnQdW%;wkOQx0oT$9HLhRtn%BU!_f?<~Of(p3Art3IE{wJ@0u>?DeZ({c3{55w**DaBVSCvDa|zt-6)1OPLW` zM3{-S8O>&GcA(vSf!A7&+KgJDV%yA_M*BZCS#d$4yyrd7zWP3W=-qkWM-x3| z^LDayxxzK6wrpv}YH#}B7n6!mfnL8Y_R<9^y(_+HPsPR+C&S#W6<~9pA(*~wK0QWH zt_;@!wO`}1?J8VL`@{9S-u14xz3pwj{r##}z3L?|d5LcalV|H5t=zL>!8>l3TU?W< zr#CK+L97qoMs%P2np2aZD z1_FJ%mZ&Ytif==W3+^6M7!74CSy>0J3#c6wV;v{F1lN+`FMa7tP2fryJ@u(iwKuPQ z@a*4ipXY4e?j0HC>2io`k}N8jS&e4$+H&zmcxFxy<%&yV_Ma?i+8wUA*^TC#P5hh{ z;JOEOZLH&jzu^sU5L_o|R$k^ZQR3|bA6u~=gD)za%>Hu3_;O{hW1)QDbq3m?+Pur( z;Hy48pet@`(7NXSc(~%&*X)vE9U4#^YIRv(&k3wcX+RwhyhPS9)-wM#fO`4MUmho1 za4lz>q*+OZ=OxX{Gp>n;uf)zk+pEg9(&~}bU)kRkSHqUBxFp_i#hIj<3nuqDr9B=G zb>+Bmy$RH1+FE4&*0;V@#w^Azls)`$PIkeZY+SJ_) zv`r%SUj?cqsvMuBD{itfoxj}vdXua9?gRhxP$=%}IaXZHgIc8ZqpVkwkv5qunx=K1@@hty3mu0P$ooTd5c_-aMSl@xat+8al&nuayiE}fnfn> z-q$wkn#obYTkce(Y$i{#ULGnmDT&9%C&w9JnUHCJSbuE$Lm06Z9>W`R0C{ zYBmunu6Sebr0*;)Y93#D3e?RPz3buRnAP3~+Cbd|5q%STLR(nW)afG&vd0HRabMNJ zalH+wEd^((18SL4p!V(?3VSh=$0A+E5?MQHuR=o0qw9_Jz;(e0LT%cF9Ob0nw>w3n`UPsg?ab(+{2+7iD_y37h9A!m=o!(KTo zt`~t?0vxDc_`(-jUB*SU`>2H|!fFe`Z9r|tV?Nh`-MN#BnlPhi;|D78m20f^S^VC#I(+5_YgSV(Tf!?I0mh^+fCOe@y(3aC! z)P(eAlWA1XaeLs=566USZiZsw)VU)H#-2Brtu3{O)(Zdjo-kpL#Qty;d4m{ICsqi&=KX%Pc9A`#~M5 zMIoL^s3wXzNaZ$k^;*PXP4i@J2gG$T){8*xRm1{nDwIL7YLtiytI;;!Fs;*N0kvNl z#fH=?ULW2Axxd1_k&bAf%@yzGyc)XgdCH7tPt@bnAwW&HM|nw6^^@_y4~Xl7gSzC( z>aeFqg0HC$*2yj1~dD-u12*tR37H-vsIc?a5snOUJf30B0n! z?!~&49@=sjeWbrlwaq;y{!YdNKNPMH3+g%nUO-)k)d6+$;h4~H;2N~8c4$_ao`5TE zqCBoRXf*P?&*?m<18wP-eV|=H4cC*&z{is{<~T1$w2s+F76p$9}}pP0MGlF zTY{SW3|z-E?>8a0Dw3;QN@JA*Jz=tl)pFAvino*UVQ!4u;ql2w%*r(}b%5OeYSf2> zCM%h_=(Air?O5u7I={Wu25n0zyp?7ZpT)6O;G5bL36e~+1Cl@bsptkJqlo>Lx}UP> z$AsTa)$W7qLxDQ$Pl~194b%hIb+~QzkeP0BXysJcIGOC-<_o;FxL)YT;A!)>8q_n; zHWTd)EK6m0L|#0!SAcE1Z1Us9CA;a`^T!q__6acu#NU=WF6h_;RkGhDQFbU$4_w!{c5GdT++)FVa{$_tv$r-$u!-n}4%qGczXP-_cm{26Gu1i->(NYt+es7QwU-!@^ zgfq~#_-D^qU{U#|y-Cj|iYI%u8??dmCIAP&=S`%3E5dwBG;z_aDcUmc>iWin7Gi>1}?8AHE5{GuLfFP|s_lWDjar z1j{p(g)mMc-uU7g(0H;uj*KOP`Mk+9&3aABpQ? ztOIJs+M*hPg9SF(`g;?o$eSgQYR)c3yky)D{r#A)Dq z5_g*}+G{A#Zd`GjXKs3A^18UP`3(0uT=AWuZNI)i+g`g_Xj)dI)mFQJt6wd)|CQ}= zT^s9?E7NleWjSNk!(0E5U4q#Hpw5P(#{_CLAGn@G*`kY&d)(vfOVhaGmXO)MeNjEs zY^`HgLl37*?v_a{(b7NbYEZHSk z7Ny=LI9vL&)IvG*nR!cVk)`&=O{hI^y$E`nZuWU`FM8CdbZoc(P4`b;wqYgPJ@Wm{4R>M zLBNKb=7!{*WS``qywO=+`-(SytR{PVT$gXq3l?c+DS*pfHnqq&(rO3P07Rwmj>ro2pqi3BC^)`XFcm#cK;>`Hca;V zdGWxlZnDC`#<1B?w0x=~dk^jd>VfMXS^HeUxMtxQ8D3N&WnSaju{CKc!?ocog0?IZ zt0#x%qc-uzvk3zn^(K2yAUBU6iR%Q{{P5s9(_8tjR&m0;R^SV0zP}?6lZ}Flv93LE zi-(nifO_D15$LwLx!K#(4uso0Rqi3ZzUfm#dws5W)YSISwq}yTH2>>cvG!LHx+a0v zMA;?aZLqn|>6W-IGhA?;z5Tfs<;%ADu2$0EwG&<nlec~y!OKrU+1IMNrwAm-V>higvsw z&L?iOBE{O#e2l(Ka@mL@GuQHF*$Mn%4||xENVQ7e8PvmGZx6Ta@3ez%%^k-U>v~CK z%Nl(CwRxN~zgAa#DYPj`dJnFJvDxI1p==hYG}zqdbbDM2v9mHh_wtNJO8Mc%3@aw|c58CYw6SJ6!!YG1==TS-K~vSAc7~%5V8P zl)Vy zv5PC-y!4SbxhB71ZNdvfo1O9Y2lWbYeWyF!$+scSAhhK}`maCtNZ;m)&uy$2&h^l? zhxUzceB(RiEPOh$<+kfmXaDsEdvJu^$Kup zRW_4tAcr-$2dT}gm-Ys)xwgZx&);0=o0QhbJ@R-Fw5?ZxrsTs<9@hoh@fLK0$);+W z?T_T}&Cq2*X?gp@jJ#Fi&0d#>0`)p@ZNir`W;XC3U_5LkW?h@mX(_aM<}3JWz>#pS zZ`dB%z7_cYw|6fu*BsRz$45etIEnr*=!_PR=Ih-{y4d;@p0oJwG3;Y@s-ffvtQM+;;WfbGfc)*CD%F zaH$iGTn5-$w1jL|gK| zwbcSxUOd|Z+_wIid|h|lb)MVp9WTcs+V1&jFuUSatd6$aT?<1B+PfmUoM&~ewceu5 z8kfE<5+|HpmUqd3m4Wu_U;nze$HzGut4wIj;NHFLJu1<3MbYZVPJ?S9ek<{zEwRw? zPR7~gPQnuFDiwP))fe*v-6Pr_>1G`D#$AMibyDoW*PzhnaqY!xAqu=4l{-1JXyy#s+@#(5k#hHi$sT_A z;kEAXv440iw2g+lMSDfA&qZ5AyN=q{gVa&mHZk_dYtd$T8ri!c+n=hFSnt zMY{wM3ff9)C`_~y0GB(7oZ+@oaUHMAfeJZY1f<-3R=TJ6>i72qK52p}g|94NZ2t>^ zE3UYrg~DufUtDjDHrG%$^Mdds+8_GRhh(s9A9>`F74Pq{e+<0tEYDc?QY(xzycI{yD3jSea=iiCrAVnU=*lav zY_G+mdmOU8!^a|@e3g58N?Z$Mi+WVFrRkch?gYT)PV(fFPjU!!gLVCrt=_E#D0g4N zxyr_?+~1@AjBfnI6HjzR`%_J!E=TLqrArdCcMG+%t!{_crswC{)gU*IE(Uo)TOTmV zYSHE{n?ze=WEHeeiEB8x5tVBP%0imLEJx)|&TN794BF!I-DXVX?#p;N?ZqHEu#!O| z)SiT$8Dnb|L8VI84i7fqTI*|}T}z95hPUhZEE8~lC(-6PH|v~#VxJh-7CT!?)1qw| zKF8xu09@`Qwse_6TfW(No6v0!CT^wq`+KDS`oIGZC@nHVt(s7`?&Zxb-5zhu^@?a4bUL(EJZqN~SUqG3=ZH4P+P(MQJA?M=agB6ox*ghdP=6)>&uyBp zf{z=#vfLf;g-Y88;QR9)vu0FTm9P2M|5nNNV^5OJKHu~ z&!a75W3Fw~E@)e+T}N#h4$%j4F{uJ$91tf>~XdYcLCp31Zf6s zc}J5ANvsVii(ih8;_e6Eci(-A1&vU9(>1owG;>TDn;nKb|8q;OS4X?<&1aFC9e>>D z7rp33^?IRgdEkh)ZwUfUqJ5HFn@araU;i4>mdIyMjQ~8iY2xzb%OZ5$U|s)Ym32u< z!HY?9i^9dN11>DoEP;|aItdSkTR=oW3;Lg9BrTeYQ0 zv`><2;Vo|Pk!$Z*3=5oXxC{6$yF$uYWw|>rq3$vnN}m@ITPr1LzZ7?^Gb#DRMyRb* ze(6hJ+CnX&Z2{NF;1cibgzHt%R$qld-i_LBbc?oQKJyW6i^Ztd>3Nb|1L2{E9-8FZ zo3i+ndkw&Inz^VZUAVLKd}~5iPf6-}!XE$R{t~?!p;ij4b1AUI z@Z>pn&b1I&$ssSxzAR_p%rA3oXsg4}qHUuP@f{;|eXK#7b9F?UAxgvc4xTF4!ba@3 zv(T2lqR(u@UBGvl9H05jXDZ9xfi7nyNWJ6rK*Gi( zObNhq<0ecQ+(C4AMAtv{^DaTU+`VQZtkjlo~1$@z+k~~~N9uL^1 zlcf$V@t$;(u83RA$3U&H_6W7L$=xa^={F0F$n&S&E!P{M&9F3TL)#$LR>G9NVx~5t zZH`&y+9%943iKSy+bhW9fqWZVmj)2JaTCA&?QdsN(Oe@xQtMr*2AkShhm5v7G3(Gr zs3iw>UP00MdHR<7*PU~{7TPu~VzWWpX2HstT8Z4&pf(HRUmej_%UWdNw7Hf@Z2HDK zF%n(hF@+Hx-I%+8FUnY$S@s2Oai7+^QqjKt`s)u9ZFOVpGC4xcpU|#s(v78LEQjs6 zXI_Hq7VWmgiX0mqwKK>I+E6W<3s?x#qRn?IxHF<{j@cPJy2P>Pk+#NaSs-B2A=|Km zJRay{>c|BUx^WW_m`7WhRyzf&Xe+IDXlR34jjs`EQTx^t$n4|*JQux1Kd=zjE23>% z6DiPTKcHI9RFZ9rHrs{=ctpFabb69pyC{>6F}bt_+)P|j#KznOd{GVRnG!3WW*%Sd z6s)5C<~P4NX1;uGE1ocS-F26moFml2H|>%K7vgM-GP}yjm*aXKZOhXvJGC9KMNIZ1 zE9Fc}VKg2IW_G=~4h+paz#ZB)Xl_5_`1Ho>a)ELb1r1x4yW=1K_{UZj1Q5D$6V~d^ zqs^btKFsT#z2%l$&V_F24-}|*fkvoZRO{GhcyKAK!rjuJS(NJ;v^j;^a;8={l-;zc z$F>wfaHH$Zbs%;is@tM{akzH*l8U7&bvU1M46XwJLQy0Y`-?whniemQ<8&n%08qs&$p zBh-A|9n@m70kp2(L;%+#+QywyshE4bSmULZsUcfFLz!j&=tn=Y&llVK)?06F(Y79+ z!3pgP$Tc0r3+UP5-2Q0|f+AX*K^OBa^Q?Ka&8gcvUeRW#PXf5ao6_Du&Eq#hZDDB} zo0A@?>e1@N#e6b`>q)d*YrG8EX4#TO#k?47OmP|Y3~vj2Z@THG_C{O#W?;IQT+=~1 z$Ft8q+p^ppGikp6{qM&>x>+lH`15G(HZ3&9IbApq<>lW=A)UF%vsnOhFnrmMD>Q{HS z{#5ke(!xFNgDvK7r{id*d^mi?RG{H9E?If4v5q+{odd&IO8oYM0z4%e>N z#s2f3|LjKU_D@q7bD0=OH*19pWyX!h4JGSre5OHrT(rAA&gBe>dw6b)!?bsh(n2j` zN*-?*r|UKp%ymV(4B5pL=RFh4Ry13kLsM*d#li~GN{j2v0tahkJitW;C-;b{xBfzL z?W#Zg;SWFe+;c6<-LbM`k^we@F6LWLJ@wSgsO@1sW*@n5k91jTyJESX#{zH}GLukS zm()TnWz-CDUDhH$AJ26`yPD#XOU1G+&^E=EqhfV-ah-9TvLvNj=$!V^mX&0EkhsHW zeqRKx+fG%l*Ma^vkG5Hiy-i~v-K-Vf(HXR*Xm-0}l*{L>Qqi{}x&48HEwZ5|p|&Ea z4Xn$O5~+!Vbc43`#dQg1^NJU)1+oj*ikDgmBDi2tL*bgWQ@K`Z-b1zIPPg5=9G~!b zEedd!t>O+&mPD&#H^;UZAq8Kt)AP3YbKL$Lz}`^#6RKj8rOR74BE;`J^%dk zb&MVl_#RDdHiItaTP9pHX!Ed5ZurH2<-Tu>wqUeDe-di2w@^!W6g}LGviNTuAlG_P z8Lzo>&*IvU-PMJ23r?Qvg7&0Q>hkTJGLN?X1z15bkZ#tB)jcys$X$L{V83w3i^YYw z0op3!N(PvO+FF|yYMo7BE*{T~TRdK_yCSX^gloN5ET-F&vG%~nAAfuvZDx<0pUt3) z`Ie%8Gib~09P4Sge7>x8ci>gbMCsQNYH3lt;#E=yoEs8pHb!hOUrerJy6e~qS9V)S zp*!w;gT)T7LlWoVS!f%BUU=b!(GIWgh!`qiG5(&zdB>DtrU<#m8qiwq%JEt|@S4XN z;zy_@j&=(PDKGJLFKlkpXmY);{=5y>0Ow?wbS3HJCMol1iwn#A+1G`y((Zf_a_;MK z7UsgC{n%rV)u-QC2PP~A_YrEdKgAQ;Cx)~}ahYxS+ShlJ>s7kh5}(v^9t&$B((1?@>MvHrtszBh>O6 zyA{C#sZ5&qy5C#kT)&=NM|RYwxdSf~9q%L5>=tz!s%Q>4H^_3lP@_A!Zdr>w-WAs~Xv=<-d0Q!-JP;S= zEQ-AFwc3(Y?BUb0+#R2_;g{WMxe)89t)Da9N2skFRA;G$+MXj^;-wf!9sZ8)Ah}+v zo9*z!JLFpL(vMm-rOh|fD^|%%xv=r;ItFzIGiV!>E5(xs zhIJLFcFW@q&j!hv6`jx)v})^uRn9ypJ7z6mg}NN9+qVzo z^EqDcu=}lbs@;y)g>j}P`?Kw<<=ApCDVmc+*Egkn95UK$<9W34JEj)9d>%0I`i^TU zwOvV;H@x8uZeLkucmilA*K5JJ!w)aPHM&hId5tE~md8~oo;=`ZV}e7;#{fp>qN zg|@<6GEydqu5Uuye0H}y?(l44PxGU;McHjp!3yuCOP5NyU`tkSxZ#HSz5{>yh3fWL zT6i*O=XkxtUboh%78&QOYwzVkN=oYITU5mQ3;mqofk?8skv^kmtnA%@^P{&rK z&7-YG*<^*8cFRjrfSQL^VLfFt&qaGP({x|oO0M_SW0&R{+7h8B^QfV1&1MC8JW!>< zTJJ+f+Z=fwZ54^z;zjKkU5=UGhJNe)RnK3)*UZw7t3?!NnO@oSzmXe(K7`q>Mcc3kwZzU^v=zHn%HCYN zMY{`XuRC<^<@3q)LfD>r+DNX^4Qc3ijG5se(Kn2uecx+{@YH2kZ+opF`f| zm6dBZ`&I<$EVOMK2W`c2%cy;HXeZbE>X5-)LtEL>$%T#3R%U!8y1pY@d6ZMRz~u-dWf0krL_Qb8UM3|qdw zFRfN-*A@~pqc*g=E#Att3x`=1QqlhX?|)zB+Q*J|a=l8QS>iMC<25k7bmPf2%hpXO z={yo$-%$=)o#!Q_*ws1hHaJtMSoM`IDW#w-S4Xi0F|RUeL)%vD+-OIQc5=O|PPOiN z_Qf@{Rri`iTbccDeB&DxEoy%PXeZa} z^0=$d?~!Y0Ykd-J3z?02BhmF8JE=(s*_8-OoJSGznJOz5zo?v0iLM8tek#vETa}4| zwq2WTRPpz}|DA{Y=;qqV^%7lcm2>WwYiL`uY_p8ovFm|1ZBJZ59uMryVkW!FHSX&( zJp40g`=`mh6*w8>#-9e-$@RYa-rl(`XiruekwXTKP%|!Ust=BH2w%yq4sBJ6f`B7Uya4(_i$wrgwRXWKMpE(4sp=}e`Nwit% z-}~P8D#+u3#7my2C6w9KIW2GT@M&>wkMTQM%9R=hbZD#OAR%Whv?meU%bUsdu6ohB z=Q$9rp)H0xiMEKCl#h|<`i|)*Qr5lj$j^K7%%JVsCyT-{SA0uJ!-Do7{_uw~YO_+# z9kusD@z`i`9ofy=who7D-TT1@A7p~oDRw=8woN1}$m4+y|GCe7uDz~9JLV`ucRNzI z#|pchwc(fRnn7FC?~t?6lIwl-!-L`)+BTA&L|cm54}S22k?8u4L=LMy_a)=G?Q(AO z^2tkSac+;#+VD$8y`93Ktyn9A+^GHMKmYl!fBkD2wg2&te;hK}$@RG%W1$Zm8rKDF zKH)l8*8_>=_AIU-j|ckv=Rg1Xg@oGvw9uYktZmz)$rRyEnfBMs(*gRIx zsde+iAO5g#ZJDsUz)R`Yh%kD(CfCc+eHPjVFQp7B$m4;Mp6=8_U~Yd}rH1W*(Ba(v zsovw{x)}9cCC^v1|M=k>hm*aJhr`zyJM{wYZ_}ky}9?5A=NLUJHS_{b`wk^Jt&7;g?|dx4!kQNwnqG z>ciEIb_k<(7}phQ2e@W|m%-ZPS{jek#J~ORZ-ORL?mhFVXIv0r`S!QJjcXG({!BSS z?nrXI9LwFA-}k=vO`@%WvEANBqU$?`MRU^a8C>WLHqe}(YlC7kG@z)v4(aRNsIB)F zv<*`1&qFAT7Ql5!G^mROt_(XJ#0#nsE@JY#-~EngvVDH`v!6+d@Pw4cFWgYL*71_- zj=n|zyzjpICd=%L`C7AFK^_lSTpq{^fw}!@{rLG&TeM=*e`w8!8V)VmfBDN_1ixCe z&)Q$0o&PRYzxmB?e(6hJ5<`*yW4unT z7o~Xer zf&0aRJCo}gyiTqsxeIvno_p?5GN>k@)dPD>b23+u#{*Gsev*a2-2SwRkk4nM@gGiJ zxSe)=w?kW(*0J}F_Cj3O!McUo6RbilyUfGQBTj;uI*>-{0=38cPk!WLBC7Lfn~6+r_;t%I zxBT>{KZUmWqfuLDF1rG?Xp8%d9`Z#8YbRfV>lW%7(yCAkRZBs!#81)=>&2W}jvw>e zNDXRs5vYZ&&8&IM4Av#njO^{?I=SwM3;WZ)SCeSlK3=9}1$jJ>WyE2!5SZJa_Nk|y znn&9fA?gxWE2SRTcfhpKWCYq}SD=D+*~`yBrso&5vEWtdSQPE$xGq=Gnco#^p=wDx zd=AuL#qpgozgaZ}YR(oGxUjXEb@7;qO2{-TMmVQgavcWp*w9^f-8DIQ3GebFjYQXX z_)L^x*`C3L&fvGr6d^ah*lD-o+#bCB?Qhq6%dSAs<}8{iXL_Vu*Po5+nkib%?=n(@ zT1d;?5vpdxNCo%Aow3|fxRj+y# z>#Kr19=OF`3xT=)X?4GuBIMA%{r1~iqU-S;cibUxW`yc?1uAtIN-A2UHNNxlx^P_w z>o)nsoSOMvpcbcQwuzE}+6=`6hog*lMV(mYw~@L)&0SV3@H(?DgSD!#Ilqnsd2CBh zo+>}gt+>Zy zO!3`v-452p0ynuRacZ6fX*uT9CHbU4T_)7bGczycZDlBlR-02ZzspDsYCWo0;3aHb z2J7T{1TFrZOP4N9qW#*}z7}*9-q~RI1O1?^+XqWmbVMF#pT(^TYJEU0P{0Tx@9A#xrU0mO0G;HrWp;n4Y z3W}#?nNu^r`O1vcpe`18ay`k{9^d3Onne5cuYbMUT|piXJj^93EClBErxjz>6(KzN zl2aiyr6sx^%Tg2h#XV5kVU4Q-c73X?D3VSXT zYh2K$guR%ohU_-xRVJ;+!gc2c_n4}Kby=$=PAxCDL^EqVOQ~n^EVg$$O!I!1VYqz|{Gd#K87sS);3gb?qEtT3#vw}PxeB~=&@sM8#%X!_ipL&% zOw_Lo*=5039kPvj)q8gMTvtzc32zmT89#q1nBc)x)@tz?dPEC$m|?l6;#nm~-9nA% zYI{#Y{rKaL=XgC0*#6#q%Uj-3$E^0ipvJE<5?$X>he4oodj=Oe1CtxSXQ9m(#822> zZ#m{sG!pqquH7tKgcl2Z$fNgc3AA@Ozph-jM!2jSE?iaG^6WHQAE} z?z2X1iE5J@ep%+}i=Ju46c-y3A?m#1$H=wGH6w&6QjKuQqB0ZAtXW@Wu;%^N4aKwS zgt`(9>UX^39g_*kqvdnLT#pya%;T-v6TZ{Uf_ie;sz3h58*k)3tsr*?94re_xs%g! z`OasVat&G9Rxh?5sJp^_)Oy8_lxx9vl_+*`iGzh#>hSGw zzq2~SOF=^J0#1YKG%JNrOs?hg2oCZ^n0@GgItC-W=6)Ngr5~>a^~L16puOL@_F7OE zw7J*JH#@YCf@^47X+B@`P^qqQ@q!DtiJ>g4;u6Pob)6j@*Cl-v*P?hHbRySEXUO@- zwFI+LjnL$p5w35P{FCA+1NCI_8Fl1%kj{EZ;p@7J=ZO`dJDFbX{3P@Hb6FTQd6|>t zwix7Wo51n;|C?fHO$KmvW5(y?C6qUBy6GmpqP<_o!nK}YamPH`ImpfRh2XlstT-Pe2Ze`)RRwKl)^M~8>amEBH_I%q_j+g7RE|XO= zITk?M!|?xk3prwQN)~PVZ9RVIp@$xQ^wG1fqP+i+k9-6p^?n@@*M7E1ol`;{Vb@3zd!!*kI#1%p>W;lx#ylMz2)?{ zcKOhrj3q&vdLcmnPb2QySx|fY>Z|8+?ONnpDnw9j)^TwSZT)$Eu5CKW_O8#mdSGJ( zSsX`dhZn9*qeLy;JLB~X*QF53Sw%06)Md5)xm*|O4HoiY^p=z4+BKeK=0W@2?|yd- z+B2&jKu!ErxOOcMKm2e(`{=lawpt4FqxQ^(U&g6p^qX~DOG?4DHC#_V`6N4B@LJ}r zG#-Hi=3L==GFu7McI+yT^cA_*TiAGJ^ry=84B7%oFk!#l?Knd+* zn%1=vjLEY3Gol`HSag` z`_Fv|3)+^t_LFiD#`Ux79Yz2-lkQ4(z!**MU%($$fM?Zt@-sh zUV9i;s4LecqtEpG+?UBa*X1g=CjK*QX|9zOUmj?>{YbiJ*Iu~3|Ni^Cv`KUA7V641 zzbM;ml^6Rh{x0mQMKvPk=i26&-JLp8uEnp#xmvE(k!Z(jajwp9cI&OTcGunx)`e?O zi+%6vb{x@pbbB7N4sEb^iUo|j9;J2wW*4#hTDjL)Zb;Fhy%80$8&8PKE>$V&2zc_ z*vCGmfW}b^zV44#d-E)`Pl;;_PTPDlT+25rc_}5|tgO)F=PCJS=W>12rrNrlWb*Su zCwt@?)E>*AUWIG*q9-rmwBJ+$XflWV*ts^zYV*T!UGu{&zBXT0{z!hfiVE#+^<^>F zxm+LezN<0aRn&N2T-(dW!ubOADqPDdjM3!KT49ckE5AmrJpqozA1;Z#a9!4O)nX|s z;fPf!=4Q54*K?_qV*OfK&s9QQ=W@+@KeU?|{Cm1`TVZy%u(%snpAN;o zDxT!Jlp;C&e6zx}oc2;z!Ri&|U#!1wiy$dMY5g@Lt=-tVnBwPhZNy*tjvV;;%|znI zYuoKfeQcp#g=^8D0~d4ApVtMoPl;=*O-s>2`wS|lY$1$#DQAzVEW2!SUC>s_tm`c~UU$7EhHG;o`&_$I zBh>EHl~-Qb-6nq~*WI03k?SR#X3n|8I!J}<)^%1k=PIR!Wv8fy#4BEgY?Cj6Y$-Ra zaY=>}xz#$eg1GB2$#vIT0=OA*oIhQAm!r7D zyp#gsATzy!lqE;RQJs`X93sN3N|{-=MC7 zd_Qq&58DxH|D;@G3$@}2ZkEc5^-TvO*UvxyynrT;$_2SW^)f|yy0kz8_t>|EdKZG) zX?N>4t6aB3c5#fC@+k#v+xkG8K@L(=IX%|EjqV2@e6Z~*j(wox+MoKK4kNAcgkLTY zJ0>Xtf{Yn4LF=`J_}iCdo3>i+6oaSw25X@$Ip6q8>Je(sjkW@+I!h{&@r|e}`6=bc0rp# zZmul}O_e9ZghVoQDTNd6f;jgLI?h&>GrsVkxl zYHp25sMTZXptkhV&GIN#h3498ukCJ@A`i7sSpsRu*eh4N1>|ZvA!nB^Gk3r*Q#q$IK;j9F66w$aQpF zuYxu=n*35*HJNT(6@qSKH`mSBQN454s68X*Y5$XFrlKX2S}ClAYcGibtn?YQ+1N0g zgjyBNHciy1&0ohi!pia}Mz?t7m>gJskHtGacG~){eswByw%&<)%lIMfX?0xVb@{c` z`szk)`xBXKTf%7zT?2QaTTc+(<|;RRtJmHhB-*tvvB@8J;DJ`0dMuzo!@{-yTI8;j z_axfp=C((fgqk^R9$n9=TT0-sHw)biEhlG(pVjeKaC+$xXf!Z{D zIjEg^=YF&LYb)2CL0;TwX3fPWZ#zsGz7y>k5cC$PR_NLTRUccZ3*8pO@Ptc0`cgN0e5sRPUY>9DMUe8k>#n=1 z8r^{nVr2N#!MYxZrE0OF%^T)gCP!*bh)vhimSJVQSv(}3#&QVVERSLrUcb^F$YasB z$D4H#-Z^V06f+vn$%R;MPrE4BBihwN&XZO{JM#+5;CzdQNc@=Z`%1kuvB z-0{*}PoiC%w)?e>=0(dB-GuQ zYs*VX`yRqx^=4JN+ndGWax zx|hy_afWF2iWvp$d@VL=meGFZnrp6+(^8492fW-P)FM{Q^7iWzzlF)_9O^%C|1aHT z?4GoBFy7!=A&=kWq~qJ0(}Vg%gI zs?gZegeRf>*vnu3ax2^`(d9t2y5kzuJPhp@%iinVo$_b7S@mf=d9&Ovvw+E1ZQH~} zI~FmNR=Oy~&pzfyf~umRVQc9e@kLd zhqn4-Jkl-N9oL}dY-}k5waWIjlg!_&dcXefM*Z*qg=NLLF6_?Yr9=>T9!hXf;6Q;Xn(JpR>68aZ45NQ%e7HpE( zBXdtOSckT>WL2j+J6w);7k3sTvwor8m&t>?BdaJdDP8=V`{jD_dRI~JLVc!;hRobD zYV$dis6mbUqg&dZ;oA%2BKWO!ZQ+#_SkNxxwaNIMci!24;Hs;xvQ~QXUYz^pg}M>l z#hxq99zSq^T<=khLu4dl}~A{?t1)+SG+=Pgrm6j{E-_dkX&ydTKrd9uFI%hX53w@AIoht z*}p=2Tq^R)SH4n#n)s{87Q+-suEV6>vY`&`@@JvDG7e;~_D#no-S2$oJL^cTup#f+ zmOm!He&7lu*9U%sx}P^m_sDqnF%EM{r_dJjl4jPOGygn21(NGyyr&(utNh7BZrQjx za>sbR`J2~OAh}*wu|xa(4Ah7AQ}g$PDUe);Nu3R)0$~ay*I`m;L#aTR0?Bol)Y(uf z5T-zK9VT@)lnR6?kX(mJoeiY|VG1PIVNz#9sX&+l$#t02*-$DFra*EXCUrKH3WO<; zT!%@W4W$BM3MAKIQfEV{K$rr_b(qxIP%03nKyn=>bvBd=gej0*he@3cr2=6JB-de5 zXG5t#m;%XlnAF)&DiEeXavdghHk1m4DUe);Nu3R)0$~ay*I`m;L#aTR0?Bol)Y(uf z5T-zK9VT@)lnR6?kX(mJoeiY|VG1PIVNz#9sX&+l$#t02*-$DFra*EXCUrKH3WO<; zT!%@W4W$BM3MAKIQfEV{K$rr_b(qxIP%03nKyn=>bvBd=gej0*he@3cr2=6JB-de5 zXG5t#m;%XlnAF)&DiEeXavdghHk1m4DUe);Nu3R)0$~ay*I`m;L#aTR0?Bol)Y(uf z5T-zK9VT@)lnR6?kX(mJoeiY|VG1PIVNz#9sX&+l$#t02*-$DFra*EXCUrKH3WO<; zT!%@W4W$BM3MAKIQfEV{K$rr_b(qxIP%03nKyn=>bvBd=gej0*he@3cr2=6JB-de5 zXG5t#m;%XlnAF)&DiEeXavdghHk1m4DUe);Nu3R)0$~ay*I`m;L#aTR0?Bol)Y(uf z5T-zK9VT@)lnR6?kX(mJoeiY|VG1PIVNz#9sX&+l$#t02*-$DFra*EXCUrKH3WO<; zT!%@W4W$BM3MAKIQfEV{K$rr_b(qxIP%03nKyn=>bvBd=gej0*he@3cr2=6JB-de5 zXG5t#m;%XlnAF)&DiEeXavdghHk1m4DUe);Nu3R)0$~ay*I`m;L#aTR0?Bol)Y(uf z5T-zK9VT@)lnR6?kX(mJoeiY|VG1PIVNz#9sX&+l$#t02*-$DFra*EXCUrKH3WO<; zT!%@W4W$BM3MAKIQfEV{K$rr_b(qxIP%03nKyn=>bvBd=gej0*he@3cr2=6JB-de5 zXG5t#m;%XlnAF)&DiEeXavdghHk1m4DUe);Nu3R)0$~ay*I`m;L#aTR0?Bol)Y(uf z5T-zK9VT@)lnR6?kX(mJoeiY|VG1PIVNz#9sX&+l$#t02*-$DFra*EXCUrKH3WO<; zT!%@W4W$BM3MAKIQfEV{K$rr_b(qxIP%03nKyn=>bvBd=gej0*he@3cr2=6JB-de5 zXG5t#m;%XlnAF)&DiEeXavdghHk1m4DUe);Nu3R)0$~ay*I`m;L#aTR0?Bol)Y(uf z5T-zK9VT@)lnR6?kX(mJoeiY|VG1PIVNz#9sX&+l$#t02*-$DFra*EXCUrKH3WO<; zT!%@W4W$BM3MAKIQfEV{K$rr_b(qxIP%03nKyn=>bvBd=gej0*he@3cr2=6JB-de5 zXG5t#m;%XlnAF)&DiEeXavdghHk1m4DUe);Nu3R)0$~ay*I`m;L#aTR0?Bol)Y(uf z5T-zK9VT@)lnR6?kX(mJoeiY|VG1PIVNz#9sX&+l$#t02*-$DFra*EXCUrKH3WO<; zT!%@W4W$BM3MAKIQfEV{K$rr_b(qxIP%03nKyn=>bvBd=gej0*he@3cr2=6JB-de5 zXG5t#m;%XlnAF)&DiEeXavdghHk1m4DUe);Nu3R)0$~ay*I`m;L#aTR0?Bol)Y(uf z5T-zK9VT@)lnR6?kX(mJoeiY|VG1PIVNz#9sX&+l$#t02*-$DFra*EXCUrKH3WO<; zT!%@W4W$BM3MAKIQfEV{K$rr_b(qxIP%03nKyn=>bvBd=gej0*he@3cr2=6JB-de5 zXG5t#m;%XlnAF)&DiEeXavdghHk1m4DUe);Nu3R)0$~ay*I`m;L#aTR0?Bol)Y(uf z5T-zK9VT@)lnR6?kX(mJoeiY|VG1PIVNz#9sX&+l$#t02*-$DFra*EXCUrKH3WO<; zT!%@W4W$BM3MAKIQfEV{K$rr_b(qxIP%03nKyn=>bvBd=gej0*he@3cr2=6JB-de5 zXG5t#m;%XlnAF)&DiEeXavdghHk1m4DUe);Nu3R)0$~ay*I`m;L#aTR0?Bol)Y(uf z5T-zK9VT@)lnR6?kX(mJoeiY|VG1PIVNz#9sX&+l$#t02*-$DFra*EXCUrKH3WO<; zT!%@W4W$BM3MAKIQfEV{K$rr_b(qxIP%03nKyn=>bvBd=gej0*he@3cr2=6JB-de5 qXG5t#m;%XlnAF)&DiEeXavdghHk1m4DUe);Nu3R)0$~aiuKydlP=Sg7 literal 0 HcmV?d00001 diff --git a/nsis/icons/welcome.bmp b/nsis/icons/welcome.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6ef2a9b995cf12fc87058a95dd75f1119a9dd2a3 GIT binary patch literal 618006 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 C`mP`V literal 0 HcmV?d00001 diff --git a/nsis/icons/welcome.svg b/nsis/icons/welcome.svg new file mode 100644 index 0000000000..bf99194308 --- /dev/null +++ b/nsis/icons/welcome.svg @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + The editor + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nsis/lang/danish.nsi b/nsis/lang/danish.nsi new file mode 100644 index 0000000000..fc3720a92a --- /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 0000000000..3ff986dc3d --- /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 + +!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 0000000000..f8990a5956 --- /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 0000000000..62b1531abe --- /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 0000000000..d816fee1fc --- /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 0000000000..8d167f9e8a --- /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 0000000000..c93bfc2d61 --- /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 0000000000..504830aa9d --- /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 9ecb0f4eb1..5c290a8dd8 100644 --- a/src/dosinst.c +++ b/src/dosinst.c @@ -444,11 +444,55 @@ window_cb(HWND hwnd, LPARAM lparam) title[0] = 0; GetWindowText(hwnd, title, 256); - if (strstr(title, "Vim ") != NULL && strstr(title, "Uninstall:") != NULL) + if (strstr(title, "Vim ") != NULL && strstr(title, " Uninstall") != NULL) ++num_windows; return TRUE; } +/* + * Run the uninstaller silently. + */ + static int +run_silent_uninstall(char *uninst_exe) +{ + char vimrt_dir[BUFSIZE]; + char temp_uninst[BUFSIZE]; + char temp_dir[MAX_PATH]; + char buf[BUFSIZE * 2 + 10]; + int i; + DWORD tick; + + strcpy(vimrt_dir, uninst_exe); + remove_tail(vimrt_dir); + + if (!GetTempPath(sizeof(temp_dir), temp_dir)) + return FAIL; + + /* Copy the uninstaller to a temporary exe. */ + tick = GetTickCount(); + for (i = 0; ; i++) + { + sprintf(temp_uninst, "%s\\vimun%04X.exe", temp_dir, + (i + tick) & 0xFFFF); + if (CopyFile(uninst_exe, temp_uninst, TRUE)) + break; + if (GetLastError() != ERROR_FILE_EXISTS) + return FAIL; + if (i == 65535) + return FAIL; + } + + /* Run the copied uninstaller silently. */ + if (strchr(temp_uninst, ' ') != NULL) + sprintf(buf, "\"%s\" /S _?=%s", temp_uninst, vimrt_dir); + else + sprintf(buf, "%s /S _?=%s", temp_uninst, vimrt_dir); + run_command(buf); + + DeleteFile(temp_uninst); + return OK; +} + /* * Check for already installed Vims. * Return non-zero when found one. @@ -469,6 +513,7 @@ uninstall_check(int skip_question) DWORD value_type; DWORD orig_num_keys; DWORD new_num_keys; + DWORD allow_silent; int foundone = 0; code = RegOpenKeyEx(HKEY_LOCAL_MACHINE, uninstall_key, 0, @@ -495,6 +540,16 @@ uninstall_check(int skip_question) local_bufsize = BUFSIZE; CHECK_REG_ERROR(code); + allow_silent = 0; + if (skip_question) + { + DWORD varsize = sizeof(DWORD); + + RegQueryValueEx(uninstall_key_handle, "AllowSilent", 0, + &value_type, (LPBYTE)&allow_silent, + &varsize); + } + foundone = 1; printf("\n*********************************************************\n"); printf("Vim Install found what looks like an existing Vim version.\n"); @@ -549,45 +604,54 @@ uninstall_check(int skip_question) /* Find existing .bat files before deleting them. */ find_bat_exe(TRUE); - /* Execute the uninstall program. Put it in double - * quotes if there is an embedded space. */ + if (allow_silent) { - char buf[BUFSIZE]; - - if (strchr(temp_string_buffer, ' ') != NULL) - sprintf(buf, "\"%s\"", temp_string_buffer); - else - strcpy(buf, temp_string_buffer); - run_command(buf); + 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 @@ install_registry(void) } printf("Creating an uninstall entry\n"); - sprintf(display_name, "Vim " VIM_VERSION_SHORT); + sprintf(display_name, "Vim " VIM_VERSION_SHORT +#ifdef _WIN64 + " (x64)" +#endif + ); /* For the NSIS installer use the generated uninstaller. */ if (interactive) diff --git a/src/version.c b/src/version.c index daeabf5cc0..aadd16183b 100644 --- a/src/version.c +++ b/src/version.c @@ -799,6 +799,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 616, /**/ 615, /**/