# HG changeset patch # User Bram Moolenaar # Date 1545406205 -3600 # Node ID c0eb9a74f73d9aefa5598b7478ecc80c781d9b8f # Parent 5be035cf3d97cb26be29df47cc799578b80a5d54 patch 8.1.0616: NSIS installer is outdated commit https://github.com/vim/vim/commit/af610b8e66a7fefcb8db07ee65686f51e1cb288a Author: Bram Moolenaar Date: Fri Dec 21 16:22:50 2018 +0100 patch 8.1.0616: NSIS installer is outdated Problem: NSIS installer is outdated. Solution: Use modern syntax, MUI2 and make it work better. Add translations. (Ken Takata, closes #3501) diff --git a/Filelist b/Filelist --- 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 --- 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 fil 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 fil SectionEnd ########################################################## -Section "Vim console program (vim.exe)" +Section "$(str_section_console)" id_section_console SectionIn 1 3 SetOutPath $0 - ReadRegStr $R0 HKLM \ - "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion - IfErrors 0 lbl_winnt - # Windows 95/98/ME: not supported - Goto lbl_done - lbl_winnt: - # Windows NT/2000/XP and later - File /oname=vim.exe ${VIMSRC}\vimw32.exe - lbl_done: + File /oname=vim.exe ${VIMSRC}\vimw32.exe StrCpy $2 "$2 vim view vimdiff" SectionEnd ########################################################## -Section "Create .bat files for command line use" +Section "$(str_section_batch)" id_section_batch SectionIn 3 StrCpy $1 "$1 -create-batfiles $2" SectionEnd ########################################################## -Section "Create icons on the Desktop" - SectionIn 1 3 +SectionGroup $(str_group_icons) id_group_icons + Section "$(str_section_desktop)" id_section_desktop + SectionIn 1 3 - StrCpy $1 "$1 -install-icons" -SectionEnd + StrCpy $1 "$1 -install-icons" + SectionEnd -########################################################## -Section "Add Vim to the Start Menu" - SectionIn 1 3 + Section "$(str_section_start_menu)" id_section_startmenu + SectionIn 1 3 - StrCpy $1 "$1 -add-start-menu" -SectionEnd + StrCpy $1 "$1 -add-start-menu" + SectionEnd +SectionGroupEnd ########################################################## -Section "Add an Edit-with-Vim context menu entry" +Section "$(str_section_edit_with)" id_section_editwith SectionIn 1 3 - # Be aware of this sequence of events: - # - user uninstalls Vim, gvimext.dll can't be removed (it's in use) and - # is scheduled to be removed at next reboot. - # - user installs Vim in same directory, gvimext.dll still exists. - # If we now skip installing gvimext.dll, it will disappear at the next - # reboot. Thus when copying gvimext.dll fails always schedule it to be - # installed at the next reboot. Can't use UpgradeDLL! - # We don't ask the user to reboot, the old dll will keep on working. SetOutPath $0 - ClearErrors - SetOverwrite try ${If} ${RunningX64} # Install 64-bit gvimext.dll into the GvimExt64 directory. SetOutPath $0\GvimExt64 ClearErrors - File /oname=gvimext.dll ${VIMSRC}\GvimExt\gvimext64.dll -!ifdef HAVE_NLS - File ${GETTEXT}\gettext64\libintl-8.dll - File ${GETTEXT}\gettext64\libiconv-2.dll -!endif - - IfErrors 0 GvimExt64Done - - # Can't copy gvimext.dll, create it under another name and rename it - # on next reboot. - GetTempFileName $3 $0\GvimExt64 - File /oname=$3 ${VIMSRC}\GvimExt\gvimext64.dll - Rename /REBOOTOK $3 $0\GvimExt64\gvimext.dll -!ifdef HAVE_NLS - GetTempFileName $3 $0\GvimExt64 - File /oname=$3 ${GETTEXT}\gettext64\libintl-8.dll - Rename /REBOOTOK $3 $0\GvimExt64\libintl-8.dll - GetTempFileName $3 $0\GvimExt64 - File /oname=$3 ${GETTEXT}\gettext64\libiconv-2.dll - Rename /REBOOTOK $3 $0\GvimExt64\libiconv-2.dll -!endif + !define LIBRARY_SHELL_EXTENSION + !define LIBRARY_X64 + !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \ + "${VIMSRC}\GvimExt\gvimext64.dll" \ + "$0\GvimExt64\gvimext.dll" "$0" + !undef LIBRARY_X64 + !undef LIBRARY_SHELL_EXTENSION ${EndIf} - GvimExt64Done: - # Install 32-bit gvimext.dll into the GvimExt32 directory. SetOutPath $0\GvimExt32 ClearErrors - - File /oname=gvimext.dll ${VIMSRC}\GvimExt\gvimext.dll -!ifdef HAVE_NLS - File ${GETTEXT}\gettext32\libintl-8.dll - File ${GETTEXT}\gettext32\libiconv-2.dll - File ${GETTEXT}\gettext32\libgcc_s_sjlj-1.dll -!endif - - IfErrors 0 GvimExt32Done - - # Can't copy gvimext.dll, create it under another name and rename it on - # next reboot. - GetTempFileName $3 $0\GvimExt32 - File /oname=$3 ${VIMSRC}\GvimExt\gvimext.dll - Rename /REBOOTOK $3 $0\GvimExt32\gvimext.dll -!ifdef HAVE_NLS - GetTempFileName $3 $0\GvimExt32 - File /oname=$3 ${GETTEXT}\gettext32\libintl-8.dll - Rename /REBOOTOK $3 $0\GvimExt32\libintl-8.dll - GetTempFileName $3 $0\GvimExt32 - File /oname=$3 ${GETTEXT}\gettext32\libiconv-2.dll - Rename /REBOOTOK $3 $0\GvimExt32\libiconv-2.dll - GetTempFileName $3 $0\GvimExt32 - File /oname=$3 ${GETTEXT}\gettext32\libgcc_s_sjlj-1.dll - Rename /REBOOTOK $3 $0\GvimExt32\libgcc_s_sjlj-1.dll -!endif - - GvimExt32Done: - SetOverwrite lastused + !define LIBRARY_SHELL_EXTENSION + !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \ + "${VIMSRC}\GvimExt\gvimext.dll" \ + "$0\GvimExt32\gvimext.dll" "$0" + !undef LIBRARY_SHELL_EXTENSION # We don't have a separate entry for the "Open With..." menu, assume # the user wants either both or none. @@ -420,131 +482,564 @@ Section "Add an Edit-with-Vim context me 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 + !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 - 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 + ${If} ${SectionIsSelected} ${id_section_editwith} + ${If} ${RunningX64} + # Install DLLs for 64-bit gvimext.dll into the GvimExt64 directory. + SetOutPath $0\GvimExt64 + ClearErrors + !define LIBRARY_X64 + !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \ + "${GETTEXT}\gettext64\libintl-8.dll" \ + "$0\GvimExt64\libintl-8.dll" "$0\GvimExt64" + !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \ + "${GETTEXT}\gettext64\libiconv-2.dll" \ + "$0\GvimExt64\libiconv-2.dll" "$0\GvimExt64" + !undef LIBRARY_X64 + ${EndIf} + + # Install DLLs for 32-bit gvimext.dll into the GvimExt32 directory. + SetOutPath $0\GvimExt32 + ClearErrors + !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \ + "${GETTEXT}\gettext32\libintl-8.dll" \ + "$0\GvimExt32\libintl-8.dll" "$0\GvimExt32" + !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \ + "${GETTEXT}\gettext32\libiconv-2.dll" \ + "$0\GvimExt32\libiconv-2.dll" "$0\GvimExt32" + !if /FileExists "${GETTEXT}\gettext32\libgcc_s_sjlj-1.dll" + # Install libgcc_s_sjlj-1.dll only if it is needed. + !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \ + "${GETTEXT}\gettext32\libgcc_s_sjlj-1.dll" \ + "$0\GvimExt32\libgcc_s_sjlj-1.dll" "$0\GvimExt32" + !endif + ${EndIf} +SectionEnd !endif ########################################################## Section -call_install_exe SetOutPath $0 - ExecWait "$0\install.exe $1" + DetailPrint "$(str_msg_registering)" + nsExec::Exec "$0\install.exe $1" + Pop $3 SectionEnd ########################################################## +!macro SaveSectionSelection section_id reg_value + ${If} ${SectionIsSelected} ${section_id} + WriteRegDWORD HKLM "${UNINST_REG_KEY_VIM}" ${reg_value} 1 + ${Else} + WriteRegDWORD HKLM "${UNINST_REG_KEY_VIM}" ${reg_value} 0 + ${EndIf} +!macroend + Section -post + + # Get estimated install size + SectionGetSize ${id_section_exe} $3 + ${If} ${SectionIsSelected} ${id_section_console} + SectionGetSize ${id_section_console} $4 + IntOp $3 $3 + $4 + ${EndIf} + ${If} ${SectionIsSelected} ${id_section_editwith} + SectionGetSize ${id_section_editwith} $4 + IntOp $3 $3 + $4 + ${EndIf} +!ifdef HAVE_VIS_VIM + ${If} ${SectionIsSelected} ${id_section_visvim} + SectionGetSize ${id_section_visvim} $4 + IntOp $3 $3 + $4 + ${EndIf} +!endif +!ifdef HAVE_NLS + ${If} ${SectionIsSelected} ${id_section_nls} + SectionGetSize ${id_section_nls} $4 + IntOp $3 $3 + $4 + ${EndIf} +!endif + + # Register EstimatedSize and AllowSilent. + # Other information will be set by the install.exe (dosinst.c). + ${If} ${RunningX64} + SetRegView 64 + ${EndIf} + WriteRegDWORD HKLM "${UNINST_REG_KEY_VIM}" "EstimatedSize" $3 + WriteRegDWORD HKLM "${UNINST_REG_KEY_VIM}" "AllowSilent" 1 + ${If} ${RunningX64} + SetRegView lastused + ${EndIf} + + # Store the selections to the registry. + ${If} ${RunningX64} + SetRegView 64 + ${EndIf} + !insertmacro SaveSectionSelection ${id_section_console} "select_console" + !insertmacro SaveSectionSelection ${id_section_batch} "select_batch" + !insertmacro SaveSectionSelection ${id_section_desktop} "select_desktop" + !insertmacro SaveSectionSelection ${id_section_startmenu} "select_startmenu" + !insertmacro SaveSectionSelection ${id_section_editwith} "select_editwith" + !insertmacro SaveSectionSelection ${id_section_vimrc} "select_vimrc" + !insertmacro SaveSectionSelection ${id_section_pluginhome} "select_pluginhome" + !insertmacro SaveSectionSelection ${id_section_pluginvim} "select_pluginvim" +!ifdef HAVE_VIS_VIM + !insertmacro SaveSectionSelection ${id_section_visvim} "select_visvim" +!endif +!ifdef HAVE_NLS + !insertmacro SaveSectionSelection ${id_section_nls} "select_nls" +!endif + ${If} ${RunningX64} + SetRegView lastused + ${EndIf} + BringToFront SectionEnd ########################################################## +!macro LoadSectionSelection section_id reg_value + ClearErrors + ReadRegDWORD $3 HKLM "${UNINST_REG_KEY_VIM}" ${reg_value} + ${IfNot} ${Errors} + ${If} $3 = 1 + !insertmacro SelectSection ${section_id} + ${Else} + !insertmacro UnselectSection ${section_id} + ${EndIf} + ${EndIf} +!macroend + +Function .onInit +!ifdef HAVE_MULTI_LANG + # Select a language (or read from the registry). + !insertmacro MUI_LANGDLL_DISPLAY +!endif + + # Check $VIM + ReadEnvStr $INSTDIR "VIM" + + call CheckOldVim + Pop $3 + ${If} $3 == "" + # No old versions of Vim found. Unselect and hide the section. + !insertmacro UnselectSection ${id_section_old_ver} + SectionSetInstTypes ${id_section_old_ver} 0 + SectionSetText ${id_section_old_ver} "" + ${Else} + ${If} $INSTDIR == "" + StrCpy $INSTDIR $3 + ${EndIf} + ${EndIf} + + # If did not find a path: use the default dir. + ${If} $INSTDIR == "" +!ifdef WIN64 + StrCpy $INSTDIR "$PROGRAMFILES64\Vim" +!else + StrCpy $INSTDIR "$PROGRAMFILES\Vim" +!endif + ${EndIf} + +# Load the selections from the registry (if any). + ${If} ${RunningX64} + SetRegView 64 + ${EndIf} + !insertmacro LoadSectionSelection ${id_section_console} "select_console" + !insertmacro LoadSectionSelection ${id_section_batch} "select_batch" + !insertmacro LoadSectionSelection ${id_section_desktop} "select_desktop" + !insertmacro LoadSectionSelection ${id_section_startmenu} "select_startmenu" + !insertmacro LoadSectionSelection ${id_section_editwith} "select_editwith" + !insertmacro LoadSectionSelection ${id_section_vimrc} "select_vimrc" + !insertmacro LoadSectionSelection ${id_section_pluginhome} "select_pluginhome" + !insertmacro LoadSectionSelection ${id_section_pluginvim} "select_pluginvim" +!ifdef HAVE_VIS_VIM + !insertmacro LoadSectionSelection ${id_section_visvim} "select_visvim" +!endif +!ifdef HAVE_NLS + !insertmacro LoadSectionSelection ${id_section_nls} "select_nls" +!endif + ${If} ${RunningX64} + SetRegView lastused + ${EndIf} + + # User variables: + # $0 - holds the directory the executables are installed to + # $1 - holds the parameters to be passed to install.exe. Starts with OLE + # registration (since a non-OLE gvim will not complain, and we want to + # always register an OLE gvim). + # $2 - holds the names to create batch files for + StrCpy $0 "$INSTDIR\vim${VER_MAJOR}${VER_MINOR}" + StrCpy $1 "-register-OLE" + StrCpy $2 "gvim evim gview gvimdiff vimtutor" +FunctionEnd + +Function .onInstSuccess + WriteUninstaller vim${VER_MAJOR}${VER_MINOR}\uninstall-gui.exe +FunctionEnd + +Function .onInstFailed + MessageBox MB_OK|MB_ICONEXCLAMATION "$(str_msg_install_fail)" /SD IDOK +FunctionEnd + +########################################################## Function SetCustom - # Display the InstallOptions dialog + # Display the _vimrc setting dialog using nsDialogs. # Check if a _vimrc should be created - SectionGetFlags ${sec_vimrc_id} $3 - IntOp $3 $3 & 1 - StrCmp $3 "1" +2 0 + ${IfNot} ${SectionIsSelected} ${id_section_vimrc} + Abort + ${EndIf} + + !insertmacro MUI_HEADER_TEXT \ + $(str_vimrc_page_title) $(str_vimrc_page_subtitle) + + nsDialogs::Create 1018 + Pop $vim_dialog + + ${If} $vim_dialog == error Abort + ${EndIf} - InstallOptions::dialog "$PLUGINSDIR\vimrc.ini" + ${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 - ReadINIStr $3 "$PLUGINSDIR\vimrc.ini" "Field 2" "State" - StrCmp $3 "1" 0 +3 - StrCpy $1 "$1 -vimrc-remap no" - Goto behave - - StrCpy $1 "$1 -vimrc-remap win" + ${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} - behave: - ReadINIStr $3 "$PLUGINSDIR\vimrc.ini" "Field 5" "State" - StrCmp $3 "1" 0 +3 - StrCpy $1 "$1 -vimrc-behave unix" - Goto done + ${NSD_CB_GetSelectionIndex} $vim_nsd_keymap $3 + ${If} $3 = 0 + StrCpy $vim_keymap_stat "default" + ${Else} + StrCpy $vim_keymap_stat "windows" + ${EndIf} - 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: + ${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 ########################################################## -Section Uninstall +# 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 + +Section "un.$(str_unsection_exe)" id_unsection_exe + + StrCpy $0 "$INSTDIR" + + # Delete gettext and iconv DLLs + ${If} ${FileExists} "$0\libiconv-2.dll" + !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \ + "$0\libiconv-2.dll" + ${EndIf} + ${If} ${FileExists} "$0\libintl-8.dll" + !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \ + "$0\libintl-8.dll" + ${EndIf} + ${If} ${FileExists} "$0\libgcc_s_sjlj-1.dll" + !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \ + "$0\libgcc_s_sjlj-1.dll" + ${EndIf} + + # Delete other DLLs + Delete /REBOOTOK $0\*.dll - Delete /REBOOTOK $0\*.dll - Delete /REBOOTOK $0\GvimExt32\*.dll + # Delete 64-bit GvimExt ${If} ${RunningX64} - Delete /REBOOTOK $0\GvimExt64\*.dll + !define LIBRARY_X64 + ${If} ${FileExists} "$0\GvimExt64\gvimext.dll" + !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \ + "$0\GvimExt64\gvimext.dll" + ${EndIf} + ${If} ${FileExists} "$0\GvimExt64\libiconv-2.dll" + !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \ + "$0\GvimExt64\libiconv-2.dll" + ${EndIf} + ${If} ${FileExists} "$0\GvimExt64\libintl-8.dll" + !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \ + "$0\GvimExt64\libintl-8.dll" + ${EndIf} + ${If} ${FileExists} "$0\GvimExt64\libwinpthread-1.dll" + !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \ + "$0\GvimExt64\libwinpthread-1.dll" + ${EndIf} + !undef LIBRARY_X64 + RMDir /r $0\GvimExt64 ${EndIf} + # Delete 32-bit GvimExt + ${If} ${FileExists} "$0\GvimExt32\gvimext.dll" + !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \ + "$0\GvimExt32\gvimext.dll" + ${EndIf} + ${If} ${FileExists} "$0\GvimExt32\libiconv-2.dll" + !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \ + "$0\GvimExt32\libiconv-2.dll" + ${EndIf} + ${If} ${FileExists} "$0\GvimExt32\libintl-8.dll" + !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \ + "$0\GvimExt32\libintl-8.dll" + ${EndIf} + ${If} ${FileExists} "$0\GvimExt32\libgcc_s_sjlj-1.dll" + !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED \ + "$0\GvimExt32\libgcc_s_sjlj-1.dll" + ${EndIf} + RMDir /r $0\GvimExt32 + ClearErrors # Remove everything but *.dll files. Avoids that # a lot remains when gvimext.dll cannot be deleted. @@ -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 + Delete $0\_vimrc + RMDir $0 +SectionEnd - IfFileExists $1\vimfiles 0 NoRemove +########################################################## +# Description for Uninstaller Sections - 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 - -SectionEnd +!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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c2f426953cc286fe381e8f0761222dbb1cf51525 GIT binary patch literal 102654 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 z + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4b6516951f44a16a8398341992000b4343204405 GIT binary patch literal 102654 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 r2fZdlKj<|f`a!P=(GPk}h$~S zo^crC<1jOxIWxZJc<%q7d*^<&zgB5??cJ@8YN@GumU(2Ud&hcft*Tm~ZMVYHvO7d; zg#W7Gzm8E3$DC+~Bg#?K`29CivpasD+hP2d+#db=Z(6iyi5PJ#bwI*?8CtYx38HAO zwP=Yv(OhfM5_zJz)}kfyM02f0OXP{>T8oy*6V0_2Es-ahYb{zLPc+wBv_zh0uC-{1 zJkeZh(Gq#0xz?g3@-A7A=t{nrkguB2P5eTC_x-Xs)$ri9FF< zYta&UqPf7T8oy*6V0_2Es-ahYb{zLPc+wBv_zh0uC-{1JkeZh(Gq#0xz?g3 z@-A7A=t{nrkguB2P5eTC_x-Xs)$ri9FF7 z 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + The editor + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nsis/lang/danish.nsi b/nsis/lang/danish.nsi new file mode 100644 --- /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 --- /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 --- /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 --- /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 --- /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 --- /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 --- /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 --- /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 --- a/src/dosinst.c +++ b/src/dosinst.c @@ -444,12 +444,56 @@ window_cb(HWND hwnd, LPARAM lparam) title[0] = 0; GetWindowText(hwnd, title, 256); - if (strstr(title, "Vim ") != NULL && strstr(title, "Uninstall:") != NULL) + if (strstr(title, "Vim ") != NULL && strstr(title, " Uninstall") != NULL) ++num_windows; return TRUE; } /* + * Run the uninstaller silently. + */ + static int +run_silent_uninstall(char *uninst_exe) +{ + char vimrt_dir[BUFSIZE]; + char temp_uninst[BUFSIZE]; + char temp_dir[MAX_PATH]; + char buf[BUFSIZE * 2 + 10]; + int i; + DWORD tick; + + strcpy(vimrt_dir, uninst_exe); + remove_tail(vimrt_dir); + + if (!GetTempPath(sizeof(temp_dir), temp_dir)) + return FAIL; + + /* Copy the uninstaller to a temporary exe. */ + tick = GetTickCount(); + for (i = 0; ; i++) + { + sprintf(temp_uninst, "%s\\vimun%04X.exe", temp_dir, + (i + tick) & 0xFFFF); + if (CopyFile(uninst_exe, temp_uninst, TRUE)) + break; + if (GetLastError() != ERROR_FILE_EXISTS) + return FAIL; + if (i == 65535) + return FAIL; + } + + /* Run the copied uninstaller silently. */ + if (strchr(temp_uninst, ' ') != NULL) + sprintf(buf, "\"%s\" /S _?=%s", temp_uninst, vimrt_dir); + else + sprintf(buf, "%s /S _?=%s", temp_uninst, vimrt_dir); + run_command(buf); + + DeleteFile(temp_uninst); + return OK; +} + +/* * Check for already installed Vims. * Return non-zero when found one. */ @@ -469,6 +513,7 @@ uninstall_check(int skip_question) DWORD value_type; DWORD orig_num_keys; DWORD new_num_keys; + DWORD allow_silent; int foundone = 0; code = RegOpenKeyEx(HKEY_LOCAL_MACHINE, uninstall_key, 0, @@ -495,6 +540,16 @@ uninstall_check(int skip_question) local_bufsize = BUFSIZE; CHECK_REG_ERROR(code); + allow_silent = 0; + if (skip_question) + { + DWORD varsize = sizeof(DWORD); + + RegQueryValueEx(uninstall_key_handle, "AllowSilent", 0, + &value_type, (LPBYTE)&allow_silent, + &varsize); + } + foundone = 1; printf("\n*********************************************************\n"); printf("Vim Install found what looks like an existing Vim version.\n"); @@ -549,45 +604,54 @@ uninstall_check(int skip_question) /* Find existing .bat files before deleting them. */ find_bat_exe(TRUE); - /* Execute the uninstall program. Put it in double - * quotes if there is an embedded space. */ + if (allow_silent) { - char buf[BUFSIZE]; + if (run_silent_uninstall(temp_string_buffer) + == FAIL) + allow_silent = 0; /* Retry with non silent. */ + } + if (!allow_silent) + { + /* Execute the uninstall program. Put it in double + * quotes if there is an embedded space. */ + { + char buf[BUFSIZE]; - if (strchr(temp_string_buffer, ' ') != NULL) - sprintf(buf, "\"%s\"", temp_string_buffer); - else - strcpy(buf, temp_string_buffer); - run_command(buf); - } + 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 + /* 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) { - printf("."); - fflush(stdout); - sleep(1); /* wait for the uninstaller to finish */ - num_windows = 0; - EnumWindows(window_cb, 0); - } while (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 --- a/src/version.c +++ b/src/version.c @@ -800,6 +800,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 616, +/**/ 615, /**/ 614,