summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEduard Braun <eduard.braun2@gmx.de>2016-10-17 21:54:26 +0000
committerEduard Braun <eduard.braun2@gmx.de>2016-10-17 21:54:26 +0000
commitc05bf4e6e04a935fde9888e469bbdfff28e9cc25 (patch)
tree07f3af1e7de3b01fa24398aaf6ba413fcd5b5f23
parentPackaging: Restore original Simplified Chinese translation from original bug ... (diff)
downloadinkscape-c05bf4e6e04a935fde9888e469bbdfff28e9cc25.tar.gz
inkscape-c05bf4e6e04a935fde9888e469bbdfff28e9cc25.zip
Packaging: A whole lot of improvements for NSIS
- Make the installation components much more robust (i.e. only install what they're supposed to and do not include the same files in different components) - As a result speed up installation times drastically - Offer "Python", "Extensions" and "Dictionaries" as additional (optional) components - A minimal installation can now be as small as 150 MB (compared to the full installation size of 300 MB; typical installation size is 230 MB) - update verision check to require NSIS 3.0 (bzr r15244.1.11)
-rwxr-xr-xpackaging/win32/inkscape.nsi195
-rw-r--r--packaging/win32/languages/English.nsh8
-rw-r--r--packaging/win32/languages/SimpChinese.nsh2
-rw-r--r--packaging/win32/macros/RequireLatestNSIS.nsh9
-rw-r--r--packaging/win32/macros/ifexist.nsh2
5 files changed, 128 insertions, 88 deletions
diff --git a/packaging/win32/inkscape.nsi b/packaging/win32/inkscape.nsi
index a773d66c1..622d5f191 100755
--- a/packaging/win32/inkscape.nsi
+++ b/packaging/win32/inkscape.nsi
@@ -41,16 +41,6 @@ RequestExecutionLevel admin
!include macros\SHMessageBoxCheck.nsh
!include macros\VersionCompleteXXXX.nsh
-!macro !redef VAR VAL
- !define _!redef_${VAR} `${VAL}`
- !ifdef ${VAR}
- !undef ${VAR}
- !endif
- !define ${VAR} `${VAL}`
- !undef _!redef_${VAR}
-!macroend
-!define !redef `!insertmacro !redef`
-
; Advanced Uninstall Log {{{3
; We're abusing this script terribly and it's time to fix the broken uninstaller.
; However, for the moment, this is what we're using.
@@ -60,7 +50,7 @@ RequestExecutionLevel admin
;!insertmacro INTERACTIVE_UNINSTALL ; not needed anymore since we have our own uninstall logic; conflicts with other macros
; Initialise NSIS plug-ins {{{3
-; The plugins used are md5dll and messagebox
+; The plugin used is md5dll
!addplugindir plugins
; FileFunc bits and pieces {{{3
@@ -80,6 +70,7 @@ RequestExecutionLevel admin
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP header.bmp
!define MUI_WELCOMEFINISHPAGE_BITMAP welcomefinish.bmp
+!define MUI_UNWELCOMEFINISHPAGE_BITMAP welcomefinish.bmp
!define MUI_COMPONENTSPAGE_SMALLDESC
; Pages {{{4
@@ -212,7 +203,7 @@ ${!ifexist} ${INKSCAPE_DIST_DIR}\gspawn-win32-helper.exe
!endif
${!ifexist} ${INKSCAPE_DIST_DIR}\gspawn-win64-helper.exe
!define BITNESS 64
- ${!redef} FILENAME `${FILENAME}-x64` ; add architecture to filename for 64-bit builds
+ !define /redef FILENAME `${FILENAME}-x64` ; add architecture to filename for 64-bit builds
!endif
!ifndef BITNESS
!error "Could not detect architecture (BITNESS) of the Inkscape build"
@@ -246,18 +237,18 @@ ${!ifexist} ..\..\.bzr\branch\last-revision
; Handle display version number and complete X.X version numbers into X.X.X.X {{{3
!ifdef DEVEL & BZR_REVISION
- ${!redef} FILENAME `${FILENAME}-r${BZR_REVISION}`
- ${!redef} BrandingText `${BrandingText} r${BZR_REVISION}`
+ !define /redef FILENAME `${FILENAME}-r${BZR_REVISION}`
+ !define /redef BrandingText `${BrandingText} r${BZR_REVISION}`
!define VERSION_X.X.X.X_REVISION ${BZR_REVISION}
; Handle the installer revision number {{{4
!else ifdef RELEASE_REVISION
- ${!redef} FILENAME `${FILENAME}-${RELEASE_REVISION}`
+ !define /redef FILENAME `${FILENAME}-${RELEASE_REVISION}`
; If we wanted the branding text to be like "Inkscape 0.48pre1 r9505" this'd do it.
;!ifdef BZR_REVISION
- ; ${!redef} BrandingText `${BrandingText} r${BZR_REVISION}`
+ ; !define /redef BrandingText `${BrandingText} r${BZR_REVISION}`
;!endif
!if `${RELEASE_REVISION}` != `1`
- ${!redef} BrandingText `${BrandingText}, revision ${RELEASE_REVISION}`
+ !define /redef BrandingText `${BrandingText}, revision ${RELEASE_REVISION}`
!endif
!define VERSION_X.X.X.X_REVISION ${RELEASE_REVISION}
!else
@@ -350,15 +341,13 @@ Section -removeInkscape ; Hidden, mandatory section to clean a previous installa
!endif
SectionEnd ; -removeInkscape }}}
-Section $(Core) SecCore ; Mandatory Inkscape core files section {{{
+Section "$(Core)" SecCore ; Mandatory Inkscape core files section {{{
SectionIn 1 2 3 RO
!ifndef DUMMYINSTALL
DetailPrint "Installing Inkscape core files..."
+
SetOutPath $INSTDIR
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- SetOverwrite on
- SetAutoClose false
-
File /a ${INKSCAPE_DIST_DIR}\ink*.exe
File /nonfatal /a ${INKSCAPE_DIST_DIR}\inkscape.com ; not created as of Inkscape 0.92pre1
File /a ${INKSCAPE_DIST_DIR}\AUTHORS
@@ -371,47 +360,54 @@ Section $(Core) SecCore ; Mandatory Inkscape core files section {{{
File /a ${INKSCAPE_DIST_DIR}\gspawn-win${BITNESS}-helper-console.exe
File /a ${INKSCAPE_DIST_DIR}\README
File /a ${INKSCAPE_DIST_DIR}\TRANSLATORS
- File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\data
- File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\doc
- File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\plugins
- File /nonfatal /a /r /x *.??*.???* /x examples /x tutorials /x locale ${INKSCAPE_DIST_DIR}\share
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
- ; this files are added because it slips through the filter
- SetOutPath $INSTDIR\share\icons
+
+ SetOutPath $INSTDIR\data
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /a ${INKSCAPE_DIST_DIR}\share\icons\inkscape.file.png
- File /a ${INKSCAPE_DIST_DIR}\share\icons\inkscape.file.svg
+ File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\data\*.*
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
- SetOutPath $INSTDIR\share\extensions
+ SetOutPath $INSTDIR\doc
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /a ${INKSCAPE_DIST_DIR}\share\extensions\inkscape.extension.rng
+ File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\doc\*.*
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
- SetOutPath $INSTDIR\share\extensions\test
+ SetOutPath $INSTDIR\plugins
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /a ${INKSCAPE_DIST_DIR}\share\extensions\test\inkwebjs-move.test.svg
- File /a ${INKSCAPE_DIST_DIR}\share\extensions\test\test_template.py.txt
+ File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\plugins\*.*
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SetOutPath $INSTDIR\modules
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\modules\*.*
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
- SetOutPath $INSTDIR\python
+
+ ;exclude everything from /share for which we have separate sections below
+ SetOutPath $INSTDIR\share
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\python\*.*
+ File /nonfatal /a /r /x *.??*.???* /x examples /x extensions /x locale /x tutorials ${INKSCAPE_DIST_DIR}\share\*.*
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
+ ; this files are added because it slips through the filter
+ SetOutPath $INSTDIR\share\icons
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
+ File /a ${INKSCAPE_DIST_DIR}\share\icons\inkscape.file.png
+ File /a ${INKSCAPE_DIST_DIR}\share\icons\inkscape.file.svg
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
!endif
SectionEnd ; SecCore }}}
-Section $(GTKFiles) SecGTK ; Mandatory GTK files section {{{
+Section "$(GTKFiles)" SecGTK ; Mandatory GTK files section {{{
SectionIn 1 2 3 RO
!ifndef DUMMYINSTALL
DetailPrint "Installing GTK files..."
SetOutPath $INSTDIR
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- SetOverwrite on
- File /a /r ${INKSCAPE_DIST_DIR}\*.dll
- File /a /r /x locale ${INKSCAPE_DIST_DIR}\lib
- File /a /r ${INKSCAPE_DIST_DIR}\etc
+ File /a /r /x python ${INKSCAPE_DIST_DIR}\*.dll
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
+ SetOutPath $INSTDIR\lib
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
+ File /a /r /x locale /x aspell-0.60 ${INKSCAPE_DIST_DIR}\lib\*.*
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
+ SetOutPath $INSTDIR\etc
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
+ File /a /r ${INKSCAPE_DIST_DIR}\etc\*.*
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
!endif
SectionEnd ; SecGTK }}}
@@ -423,7 +419,7 @@ Section -SetCurrentUserOnly ; Set the installation to "current user" only by def
!endif
SectionEnd ; -SetCurrentUserOnly }}}
-Section $(Alluser) SecAlluser ; Then offer the user the option to make it global (default) {{{
+Section "$(Alluser)" SecAlluser ; Then offer the user the option to make it global (default) {{{
SectionIn 1 2 3
!ifndef DUMMYINSTALL
; disable this option in Win95/Win98/WinME
@@ -435,19 +431,19 @@ SectionEnd ; SecAllUser }}}
SectionGroup "$(Shortcuts)" SecShortcuts ; Create shortcuts for the user {{{
-Section $(Desktop) SecDesktop ; Desktop shortcut {{{
+Section "$(Desktop)" SecDesktop ; Desktop shortcut {{{
!ifndef DUMMYINSTALL
CreateShortCut $DESKTOP\Inkscape.lnk $INSTDIR\inkscape.exe
!endif
SectionEnd ; SecDesktop }}}
-Section $(Quicklaunch) SecQuickLaunch ; Quick Launch shortcut {{{
+Section "$(Quicklaunch)" SecQuickLaunch ; Quick Launch shortcut {{{
!ifndef DUMMYINSTALL
${IfThen} $QUICKLAUNCH != $TEMP ${|} CreateShortCut $QUICKLAUNCH\Inkscape.lnk $INSTDIR\inkscape.exe ${|}
!endif
SectionEnd ; SecQuickLaunch }}}
-Section $(SVGWriter) SecSVGWriter ; Register Inkscape as the default application for .svg[z] {{{
+Section "$(SVGWriter)" SecSVGWriter ; Register Inkscape as the default application for .svg[z] {{{
SectionIn 1 2 3
!ifndef DUMMYINSTALL
DetailPrint "Associating SVG files with Inkscape"
@@ -465,7 +461,7 @@ Section $(SVGWriter) SecSVGWriter ; Register Inkscape as the default application
!endif
SectionEnd ; SecSVGWriter }}}
-Section $(ContextMenu) SecContextMenu ; Put Inkscape in the .svg[z] context menus (but not as default) {{{
+Section "$(ContextMenu)" SecContextMenu ; Put Inkscape in the .svg[z] context menus (but not as default) {{{
SectionIn 1 2 3
!ifndef DUMMYINSTALL
DetailPrint "Adding Inkscape to SVG file context menu"
@@ -495,28 +491,63 @@ Section /o "$(DeletePrefs)" SecPrefs ; Delete user preferences before installati
!endif
SectionEnd ; SecPrefs }}}
+Section "$(Python)" SecPython ; Python distribution {{{
+ SectionIn 1 2
+!ifndef DUMMYINSTALL
+ DetailPrint "Installing Python..."
+ SetOutPath $INSTDIR\python
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
+ File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\python\*.*
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
+!endif
+SectionEnd ; SecPython }}}
+
SectionGroup "$(Addfiles)" SecAddfiles ; Additional files {{{
-Section $(Examples) SecExamples ; Install example SVG files {{{
+Section "$(Extensions)" SecExtensions ; Extensions {{{
SectionIn 1 2
!ifndef DUMMYINSTALL
- SetOutPath $INSTDIR\share
+ DetailPrint "Installing extensions..."
+ SetOutPath $INSTDIR\share\extensions
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /nonfatal /a /r /x *.??*.???* ${INKSCAPE_DIST_DIR}\share\examples
+ File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\share\extensions\*.*
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
+!endif
+SectionEnd ; SecExtensions }}}
+
+Section "$(Examples)" SecExamples ; Install example SVG files {{{
+ SectionIn 1 2
+!ifndef DUMMYINSTALL
+ DetailPrint "Installing examples..."
+ SetOutPath $INSTDIR\share\examples
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
+ File /nonfatal /a /r /x *.??*.???* ${INKSCAPE_DIST_DIR}\share\examples\*.*
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
!endif
SectionEnd ; SecExamples }}}
-Section $(Tutorials) SecTutorials ; Install tutorials {{{
+Section "$(Tutorials)" SecTutorials ; Install tutorials {{{
SectionIn 1 2
!ifndef DUMMYINSTALL
- SetOutPath $INSTDIR\share
+ DetailPrint "Installing tutorials..."
+ SetOutPath $INSTDIR\share\tutorials
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /nonfatal /a /r /x *.??*.???* ${INKSCAPE_DIST_DIR}\share\tutorials
+ File /nonfatal /a /r /x *.??*.???* ${INKSCAPE_DIST_DIR}\share\tutorials\*.*
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
!endif
SectionEnd ; SecTutorials }}}
+Section "$(Dictionaries)" SecDictionaries ; Aspell dictionaries {{{
+ SectionIn 1 2
+!ifndef DUMMYINSTALL
+ DetailPrint "Installing dictionaries..."
+ SetOutPath $INSTDIR\lib\aspell-0.60
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
+ File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\lib\aspell-0.60\*.*
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
+!endif
+SectionEnd ; SecDictionaries }}}
+
SectionGroupEnd ; SecAddfiles }}}
SectionGroup "$(Languages)" SecLanguages ; Languages sections {{{
@@ -524,36 +555,43 @@ SectionGroup "$(Languages)" SecLanguages ; Languages sections {{{
Section /o "$(lng_${lng}) (${lng})" Sec${SecName}
;SectionIn 1 2 3
!ifndef DUMMYINSTALL
- SetOutPath $INSTDIR
- !insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /nonfatal /a ${INKSCAPE_DIST_DIR}\*.${lng}.txt ; FIXME: remove this? No such files.
- !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
- SetOutPath $INSTDIR\locale
- !insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\locale\${lng}
- !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
- SetOutPath $INSTDIR\lib\locale
- !insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\lib\locale\${lng}
- !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
- SetOutPath $INSTDIR\share\clipart
- !insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\share\clipart\*.${lng}.svg
- !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
- ; the keyboard tables
- SetOutPath $INSTDIR\share\screens
+ DetailPrint "Installing translations and translated content for ${SecName} (${lng}) locale..."
+ ; locale folders (/locale, /share/locale /lib/locale)
+ ${!defineifexist} ${INKSCAPE_DIST_DIR}\locale EXISTS 1
+ !ifdef EXISTS
+ !undef EXISTS
+ SetOutPath $INSTDIR\locale\${lng}
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
+ File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\locale\${lng}\*.*
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
+ !endif
+ ${!defineifexist} ${INKSCAPE_DIST_DIR}\share\locale EXISTS 1
+ !ifdef EXISTS
+ !undef EXISTS
+ SetOutPath $INSTDIR\share\locale\${lng}
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
+ File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\share\locale\${lng}\*.*
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
+ !endif
+ ${!defineifexist} ${INKSCAPE_DIST_DIR}\lib\locale EXISTS 1
+ !ifdef EXISTS
+ !undef EXISTS
+ SetOutPath $INSTDIR\lib\locale\${lng}
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
+ File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\lib\locale\${lng}\*.*
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
+ !endif
+
+ ; localized documentation, templates and tutorials
+ SetOutPath $INSTDIR\doc
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\share\screens\*.${lng}.svg
+ File /nonfatal /a ${INKSCAPE_DIST_DIR}\doc\*.${lng}.html ; keys.${lng}.html
+ File /nonfatal /a ${INKSCAPE_DIST_DIR}\doc\*.${lng}.txt ; HACKING.${lng}.html
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SetOutPath $INSTDIR\share\templates
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\share\templates\*.${lng}.svg
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
- SetOutPath $INSTDIR\doc
- !insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\doc\keys.${lng}.xml
- File /nonfatal /a /r ${INKSCAPE_DIST_DIR}\doc\keys.${lng}.html
- !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SectionGetFlags ${SecTutorials} $R1
IntOp $R1 $R1 & ${SF_SELECTED}
${If} $R1 >= ${SF_SELECTED}
@@ -638,7 +676,6 @@ SectionGroup "$(Languages)" SecLanguages ; Languages sections {{{
SectionGroupEnd ; SecLanguages }}}
Section -FinalizeInstallation ; Hidden, mandatory section to finalize installation {{{
-
!ifndef DUMMYINSTALL
DetailPrint "Finalizing installation"
${IfThen} $MultiUser = 1 ${|} SetShellVarContext all ${|}
@@ -709,9 +746,12 @@ SectionEnd ; -FinalizeInstallation }}}
!insertmacro MUI_DESCRIPTION_TEXT ${SecSVGWriter} "$(SVGWriterDesc)"
!insertmacro MUI_DESCRIPTION_TEXT ${SecContextMenu} "$(ContextMenuDesc)"
!insertmacro MUI_DESCRIPTION_TEXT ${SecPrefs} "$(DeletePrefsDesc)"
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecPython} "$(PythonDesc)"
!insertmacro MUI_DESCRIPTION_TEXT ${SecAddfiles} "$(AddfilesDesc)"
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecExtensions} "$(ExtensionsDesc)"
!insertmacro MUI_DESCRIPTION_TEXT ${SecExamples} "$(ExamplesDesc)"
!insertmacro MUI_DESCRIPTION_TEXT ${SecTutorials} "$(TutorialsDesc)"
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecDictionaries} "$(DictionariesDesc)"
!insertmacro MUI_DESCRIPTION_TEXT ${SecLanguages} "$(LanguagesDesc)"
!insertmacro MUI_FUNCTION_DESCRIPTION_END ; Section descriptions }}}
@@ -1123,7 +1163,6 @@ Section Uninstall ; do the uninstalling {{{
Delete $INSTDIR\uninstall.log
Delete $INSTDIR\uninstall.exe
RMDir $INSTDIR
- SetAutoClose false
!endif
SectionEnd ; Uninstall }}}
; }}}
diff --git a/packaging/win32/languages/English.nsh b/packaging/win32/languages/English.nsh
index 9d1a18cd2..4022e9e8b 100644
--- a/packaging/win32/languages/English.nsh
+++ b/packaging/win32/languages/English.nsh
@@ -30,14 +30,20 @@ ${LangFileString} ContextMenu "Context Menu"
${LangFileString} ContextMenuDesc "Add Inkscape into the Context Menu for SVG files"
${LangFileString} DeletePrefs "Delete personal preferences"
${LangFileString} DeletePrefsDesc "Delete personal preferences leftover from previous installations"
+${LangFileString} Python "Python 2.7"
+${LangFileString} PythonDesc "An interpreter for the Python programming language and Python modules required to run Inkscape extensions."
${LangFileString} Addfiles "Additional Files"
${LangFileString} AddfilesDesc "Additional Files"
+${LangFileString} Extensions "Extensions"
+${LangFileString} ExtensionsDesc "Inkscape extensions (including many import and export plugins)"
${LangFileString} Examples "Examples"
${LangFileString} ExamplesDesc "Examples using Inkscape"
${LangFileString} Tutorials "Tutorials"
${LangFileString} TutorialsDesc "Tutorials using Inkscape"
+${LangFileString} Dictionaries "Dictionaries"
+${LangFileString} DictionariesDesc "Dictionaries for some common languages for spell checking in Inkscape"
${LangFileString} Languages "Translations"
-${LangFileString} LanguagesDesc "Install various translations for Inkscape"
+${LangFileString} LanguagesDesc "Translations and localized content for Inkscape"
${LangFileString} lng_am "Amharic"
${LangFileString} lng_ar "Arabic"
${LangFileString} lng_az "Azerbaijani"
diff --git a/packaging/win32/languages/SimpChinese.nsh b/packaging/win32/languages/SimpChinese.nsh
index 0c6364b64..276997bb2 100644
--- a/packaging/win32/languages/SimpChinese.nsh
+++ b/packaging/win32/languages/SimpChinese.nsh
@@ -1,7 +1,7 @@
;Language: Simplified Chinese (2052)
;By Liang Wang <fabienow@gmail.com>
${LangFileString} CaptionDescription "开源向量绘图软件"
-${LangFileString} LICENSE_BOTTOM_TEXT "$(^Name) 以GNU通用公共许可证发行。 在些提供许可证内容以供参考。"
+${LangFileString} LICENSE_BOTTOM_TEXT "$(^Name) 以GNU通用公共许可证发行。 在些提供许可证内容以供参考。 $_CLICK"
${LangFileString} DIFFERENT_USER "使用者 $0 已经安装 Inkscape。$\r$\n如果继续你可能无法成功完成!$\r$\n请以 $0 身份登入后再试一次。"
${LangFileString} WANT_UNINSTALL_BEFORE "$R1 已经安装。 $\n你要在安装 $(^Name) 之前移除上一个版本?"
${LangFileString} OK_CANCEL_DESC "$\n$\n按“确定”继续或者按“取消”中止。"
diff --git a/packaging/win32/macros/RequireLatestNSIS.nsh b/packaging/win32/macros/RequireLatestNSIS.nsh
index 70371552a..7d6308e58 100644
--- a/packaging/win32/macros/RequireLatestNSIS.nsh
+++ b/packaging/win32/macros/RequireLatestNSIS.nsh
@@ -1,9 +1,4 @@
-!if `${NSIS_VERSION}` == `v2.45`
- !error "There is a bug in !searchparse which makes this script not compile in NSIS 2.45. Please upgrade to NSIS 2.46 or later and try again."
-!else
- !echo "(If you get a compile error with !searchparse, please upgrade to NSIS 2.46 or later and try again.)"
-!endif
!searchparse ${NSIS_VERSION} "v" V
-!if ${V} < 2.46
- !error "You only have NSIS ${V}, but NSIS 2.46 or later is required for proper Windows 7 support. Please upgrade to NSIS 2.46 or later and try again."
+!if ${V} < 3.0
+ !error "You only have NSIS ${V}, but NSIS 3.0 or later is required to support Unicode and Windows 10. Please upgrade to NSIS 3.0 or later and try again."
!endif
diff --git a/packaging/win32/macros/ifexist.nsh b/packaging/win32/macros/ifexist.nsh
index 466ce7da0..5a0ea62b9 100644
--- a/packaging/win32/macros/ifexist.nsh
+++ b/packaging/win32/macros/ifexist.nsh
@@ -33,4 +33,4 @@
!delfile '${_TEMPFILE}'
!undef _TEMPFILE
!macroend
-!define !defineifexist "!insertmacro !defineifexist" \ No newline at end of file
+!define !defineifexist "!insertmacro !defineifexist"