-; #######################################
-; Inkscape NSIS installer project file
-; Used as of 0.40
-; #######################################
-
-; #######################################
-; DEFINES
-; #######################################
-!define PRODUCT_NAME "Inkscape"
-!define PRODUCT_VERSION "0.47+devel"
-!define PRODUCT_REVISION 3
-!define PRODUCT_VERSION_4 "0.47.0.3"
-!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\inkscape.exe"
-!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
-;!define DUMMYINSTALL ; Define this to make it build quickly, not including any of the files or code in the sections, for quick testing of features of the installer and development thereof.
-
-; #######################################
-; MUI SETTINGS
-; #######################################
-; MUI 1.67 compatible ------
+; Instructions for compilers
+; ==========================
+; This file generates the Inkscape installer, which is currently the
+; preferred deployment method on Windows.
+; 1. Install NSIS 2.46 or later on Windows (2.45 has a !searchparse bug
+; which breaks it and earlier doesn't support Windows 7 properly, and
+; cross-compilation probably won't work due to some !system magic)
+; 2. Compile Inkscape (http://wiki.inkscape.org/wiki/index.php/Win32Port)
+; 3. Compile this file with NSIS. There should be no need to set version
+; numbers in this file as it gets them from the Bazaar branch info and
+; ..\..\src\inkscape-version.cpp. However, if the version number comes
+; out wrong or this script didn't compile properly then you can define
+; INKSCAPE_VERSION by uncommenting the next line and setting the correct
+; value:
+; !define INKSCAPE_VERSION "0.48"
+; If you ever need to do a second, third or Nth release of the build or
+; of the installer, then change the RELEASE_REVISION value below:
+ !define RELEASE_REVISION 1
+
+; There should never be any need for packagers to touch anything below
+; this line. That's my job - Chris Morgan
+
+; Installer code {{{1
+; Compression and admin requirement {{{2
SetCompressor /SOLID lzma
SetCompressorDictSize 32
RequestExecutionLevel admin
-!include "MUI.nsh"
-!include "LogicLib.nsh"
-!include "sections.nsh"
-!define MUI_ABORTWARNING
-!define MUI_ICON "..\..\inkscape.ico";${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
-!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
-!define MUI_HEADERIMAGE
-!define MUI_HEADERIMAGE_BITMAP "header.bmp"
-!define MUI_WELCOMEFINISHPAGE_BITMAP "welcomefinish.bmp"
-!define MUI_COMPONENTSPAGE_SMALLDESC
-;..................................................................................................
-;Following two definitions required. Uninstall log will use these definitions.
-;You may use these definitions also, when you want to set up the InstallDirRagKey,
-;store the language selection, store Start Menu folder etc.
-;Enter the windows uninstall reg sub key to add uninstall information to Add/Remove Programs also.
+; Include required files {{{2
+!include RequireLatestNSIS.nsh
+!include ifexist.nsh
+!include VersionCompleteXXXX.nsh
+!include LogicLib.nsh
+!include Sections.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.
!define INSTDIR_REG_ROOT HKLM
-!define INSTDIR_REG_KEY ${PRODUCT_UNINST_KEY}
-
-;include the Uninstall log header
+!define INSTDIR_REG_KEY "${UNINST_KEY}"
!include AdvUninstLog.nsh
!insertmacro INTERACTIVE_UNINSTALL
-;For md5dll and messagebox
+; Initialise NSIS plug-ins {{{3
+; The plugins used are md5dll and messagebox
!addplugindir .
+; FileFunc bits and pieces {{{3
!include FileFunc.nsh
!insertmacro GetParameters
!insertmacro GetOptions
!insertmacro un.GetParent
-; Welcome page
+; User interface {{{3
+!include MUI.nsh
+; MUI Configuration {{{4
+!define MUI_ABORTWARNING
+!define MUI_ICON ..\..\inkscape.ico
+!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
+!define MUI_HEADERIMAGE
+!define MUI_HEADERIMAGE_BITMAP header.bmp
+!define MUI_WELCOMEFINISHPAGE_BITMAP welcomefinish.bmp
+!define MUI_COMPONENTSPAGE_SMALLDESC
+
+; Pages {{{4
+; Installer pages {{{5
+; Welcome page {{{6
!insertmacro MUI_PAGE_WELCOME
-; License page
-; !define MUI_LICENSEPAGE_RADIOBUTTONS
+; License page {{{6
LicenseForceSelection off
-!define MUI_LICENSEPAGE_BUTTON $(lng_LICENSE_BUTTON)
-!define MUI_LICENSEPAGE_TEXT_BOTTOM $(lng_LICENSE_BOTTOM_TEXT)
-!insertmacro MUI_PAGE_LICENSE "..\..\Copying"
+;!define MUI_LICENSEPAGE_RADIOBUTTONS
+!define MUI_LICENSEPAGE_BUTTON "$(^NextBtn)"
+!define MUI_LICENSEPAGE_TEXT_BOTTOM "$(LICENSE_BOTTOM_TEXT)"
+!insertmacro MUI_PAGE_LICENSE ..\..\Copying
+; Components page {{{6
!insertmacro MUI_PAGE_COMPONENTS
-; InstType $(lng_Full)
-; InstType $(lng_Optimal)
-; InstType $(lng_Minimal)
-; Directory page
+; InstType "$(Full)"
+; InstType "$(Optimal)"
+; InstType "$(Minimal)"
+; Directory page {{{6
!insertmacro MUI_PAGE_DIRECTORY
-; Instfiles page
+; Instfiles page {{{6
!insertmacro MUI_PAGE_INSTFILES
-; Finish page
+; Finish page {{{6
!define MUI_FINISHPAGE_RUN "$INSTDIR\inkscape.exe"
!insertmacro MUI_PAGE_FINISH
-; Uninstaller pages
+; Uninstaller pages {{{5
!insertmacro MUI_UNPAGE_CONFIRM
UninstPage custom un.CustomPageUninstall
!insertmacro MUI_UNPAGE_INSTFILES
ShowUninstDetails hide
!insertmacro MUI_UNPAGE_FINISH
-; #######################################
-; STRING LOCALIZATION
-; #######################################
-; Thanks to Adib Taraben and Luca Bruno for getting this started
-; Add your translation here! :-)
-; I had wanted to list the languages alphabetically, but apparently
-; the first is the default. So putting English first is just being
-; practical. It is not chauvinism or hubris, I swear! ;-)
-; default language first
-
-; Language files
+; Localization {{{3
+; See also the "Languages sections" SectionGroup lower down.
!insertmacro MUI_RESERVEFILE_LANGDLL
-!include English.nsh
-!include Breton.nsh
-!include Catalan.nsh
-!include Czech.nsh
-!include Finnish.nsh
-!include French.nsh
-!include Galician.nsh
-!include German.nsh
-!include Italian.nsh
-!include Japanese.nsh
-!include Polish.nsh
-!include Russian.nsh
-!include Slovak.nsh
-!include Slovenian.nsh
-!include Spanish.nsh
-!include SimpChinese.nsh
-!include TradChinese.nsh
-
-ReserveFile "inkscape.nsi.uninstall"
+;TODO: check if `!insertmacro LANGFILE "English" "English"`-style lines are needed (don't think it should be due to MUI_LANGUAGE)
+!echo `Loading language files...`
+!verbose push
+!verbose 3
+!insertmacro MUI_LANGUAGE "English"
+!insertmacro LANGFILE_INCLUDE "languages\English.nsh"
+!macro INKLANGFILE _LANG
+ !insertmacro MUI_LANGUAGE "${_LANG}"
+ !insertmacro LANGFILE_INCLUDE_WITHDEFAULT "languages\${_LANG}.nsh" "languages\English.nsh"
+!macroend
+!insertmacro INKLANGFILE Breton
+!insertmacro INKLANGFILE Catalan
+!insertmacro INKLANGFILE Czech
+!insertmacro INKLANGFILE Dutch
+!insertmacro INKLANGFILE Finnish
+!insertmacro INKLANGFILE French
+!insertmacro INKLANGFILE Galician
+!insertmacro INKLANGFILE German
+!insertmacro INKLANGFILE Italian
+!insertmacro INKLANGFILE Japanese
+!insertmacro INKLANGFILE Polish
+!insertmacro INKLANGFILE Romanian
+!insertmacro INKLANGFILE Russian
+!insertmacro INKLANGFILE Slovak
+!insertmacro INKLANGFILE Slovenian
+!insertmacro INKLANGFILE Spanish
+!insertmacro INKLANGFILE SimpChinese
+!insertmacro INKLANGFILE TradChinese
+!verbose pop
+
+ReserveFile inkscape.nsi.uninstall
ReserveFile "${NSISDIR}\Plugins\UserInfo.dll"
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; SETTINGS
; #######################################
-Name "${PRODUCT_NAME}"
-Caption "$(lng_Caption)"
-BrandingText "$(lng_Caption)"
-!ifndef PRODUCT_REVISION
-OutFile "Inkscape-${PRODUCT_VERSION}.exe"
+; Product details (version, name, registry keys etc.) {{{2
+; Find the version number in inkscape-version.cpp (e.g. 0.47+devel) {{{3
+!ifndef INKSCAPE_VERSION
+ ; Official release format (no newlines)
+ !searchparse /noerrors /file ..\..\src\inkscape-version.cpp `namespace Inkscape { char const *version_string = "` INKSCAPE_VERSION ` r` BZR_REVISION `"; }`
+ !ifndef INKSCAPE_VERSION
+ ; Other format; sorry, it has to be done in two steps.
+ !searchparse /noerrors /file ..\..\src\inkscape-version.cpp `char const *version_string = "` INKSCAPE_VERSION `";`
+ !searchparse /noerrors `${INKSCAPE_VERSION}` `` INKSCAPE_VERSION ` r` BZR_REVISION
+ !ifndef INKSCAPE_VERSION
+ !error "INKSCAPE_VERSION not defined and unable to get version number from ..\..\src\inkscape-version.cpp!"
+ !endif
+ !endif
+!endif
+!echo `Got version number from ..\..\src\inkscape-version.cpp: ${INKSCAPE_VERSION}`
+!define FILENAME Inkscape-${INKSCAPE_VERSION}
+!define BrandingText `Inkscape ${INKSCAPE_VERSION}`
+
+; Check for the Bazaar revision number for lp:inkscape {{{3
+${!ifexist} ..\..\.bzr\branch\last-revision
+ !if `${BZR_REVISION}` == ``
+ !undef BZR_REVISION
+ !endif
+ !ifndef BZR_REVISION
+ !searchparse /noerrors /file ..\..\.bzr\branch\last-revision "" BZR_REVISION " "
+ !endif
+!endif
+
+; Check for devel builds and clear up bzr revision number define {{{3
+!searchparse /noerrors ${INKSCAPE_VERSION} "" INKSCAPE_VERSION_NUMBER "+devel"
+!if ${INKSCAPE_VERSION_NUMBER} != ${INKSCAPE_VERSION}
+ !define DEVEL
+!endif
+!if `${BZR_REVISION}` == ``
+ !undef BZR_REVISION
+!endif
+
+; 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 VERSION_X.X.X.X_REVISION ${BZR_REVISION}
+; Handle the installer revision number {{{4
+!else ifdef RELEASE_REVISION
+ ${!redef} FILENAME `${FILENAME}-${RELEASE_REVISION}`
+ ${!redef} BrandingText `${BrandingText}, revision ${BZR_REVISION}`
+ !define VERSION_X.X.X.X_REVISION ${RELEASE_REVISION}
!else
-OutFile "Inkscape-${PRODUCT_VERSION}-${PRODUCT_REVISION}.exe"
+ !define VERSION_X.X.X.X_REVISION 0
!endif
+
+${VersionCompleteXXXN} ${INKSCAPE_VERSION_NUMBER} VERSION_X.X.X.X ${VERSION_X.X.X.X_REVISION}
+
+; Product definitions {{{3
+!define PRODUCT_NAME "Inkscape" ; TODO: fix up the language files to not use this and kill this line
+!define INSTDIR_KEY "Software\Microsoft\Windows\CurrentVersion\App Paths\inkscape.exe"
+!define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\Inkscape"
+;!define DUMMYINSTALL ; Define this to make it build quickly, not including any of the files or code in the sections, for quick testing of features of the installer and development thereof.
+!define _FILENAME ${FILENAME}.exe
+!undef FILENAME
+!define FILENAME ${_FILENAME}
+!undef _FILENAME
+
+; Product information {{{3
+Name `Inkscape`
+Caption `Inkscape - $(CaptionDescription)`
+BrandingText `${BrandingText}`
+OutFile `${FILENAME}`
InstallDir "$PROGRAMFILES\Inkscape"
-InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
+InstallDirRegKey HKLM "${INSTDIR_KEY}" ""
-VIProductVersion "${PRODUCT_VERSION_4}"
-VIAddVersionKey ProductName "${PRODUCT_NAME}"
+; Version information {{{3
+VIProductVersion ${VERSION_X.X.X.X}
+VIAddVersionKey ProductName Inkscape
VIAddVersionKey Comments "Licensed under the GNU GPL"
-VIAddVersionKey CompanyName "inkscape.org"
-VIAddVersionKey LegalCopyright "© 2009 Inkscape"
-VIAddVersionKey FileDescription "${PRODUCT_NAME}"
-VIAddVersionKey FileVersion "${PRODUCT_VERSION_4}"
-VIAddVersionKey ProductVersion "${PRODUCT_VERSION_4}"
-VIAddVersionKey InternalName "${PRODUCT_NAME}"
-
+VIAddVersionKey CompanyName inkscape.org
+VIAddVersionKey LegalCopyright "© 2009 Inkscape"
+VIAddVersionKey FileDescription Inkscape
+VIAddVersionKey FileVersion ${VERSION_X.X.X.X}
+VIAddVersionKey ProductVersion ${VERSION_X.X.X.X}
+VIAddVersionKey InternalName Inkscape
+
+; Variables {{{2
Var askMultiUser
Var filename
Var MultiUser
Var User
Var CMDARGS
-; #######################################
-; I N S T A L L E R S E C T I O N S
-; #######################################
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;
-; Delete prefs
-; code originally taken from the vlc project
-;;;;;;;;;;;;;;;;;;;;;;;;;;
-!macro delprefs
+!macro delprefs ; Delete preferences (originally from VLC) {{{2
StrCpy $0 0
DetailPrint "Deleting personal preferences..."
DetailPrint "Finding all users..."
${Do}
- ; FIXME
; this will loop through all the logged users and "virtual" windows users
; (it looks like users are only present in HKEY_USERS when they are logged in)
ClearErrors
ReadRegStr $2 HKU "$1\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" AppData
${IfThen} $2 == "" ${|} ${Continue} ${|}
DetailPrint "Removing $2\Inkscape"
- Delete "$2\Inkscape\preferences.xml"
- Delete "$2\Inkscape\extension-errors.log"
- RMDir "$2\Inkscape"
+ Delete $2\Inkscape\preferences.xml
+ Delete $2\Inkscape\extension-errors.log
+ RMDir $2\Inkscape
${Loop}
!macroend
+; Sections (these do the work) {{{2
-;--------------------------------
-; Installer Sections
-Section -removeInkscape
+Section -removeInkscape ; Hidden, mandatory section to clean a previous installation {{{
!ifndef DUMMYINSTALL
;remove the old Inkscape shortcuts from the startmenu
;just in case they are still there
SetShellVarContext current
Delete "$SMPROGRAMS\Inkscape\Uninstall Inkscape.lnk"
- Delete "$SMPROGRAMS\Inkscape\Inkscape.lnk"
- RMDir "$SMPROGRAMS\Inkscape"
- Delete "$SMPROGRAMS\Inkscape.lnk"
+ Delete $SMPROGRAMS\Inkscape\Inkscape.lnk
+ RMDir $SMPROGRAMS\Inkscape
+ Delete $SMPROGRAMS\Inkscape.lnk
SetShellVarContext all
Delete "$SMPROGRAMS\Inkscape\Uninstall Inkscape.lnk"
- Delete "$SMPROGRAMS\Inkscape\Inkscape.lnk"
- RMDir "$SMPROGRAMS\Inkscape"
- Delete "$SMPROGRAMS\Inkscape.lnk"
+ Delete $SMPROGRAMS\Inkscape\Inkscape.lnk
+ RMDir $SMPROGRAMS\Inkscape
+ Delete $SMPROGRAMS\Inkscape.lnk
!endif
-SectionEnd
+SectionEnd ; -removeInkscape }}}
-Section $(lng_Core) SecCore
+Section $(Core) SecCore ; Mandatory Inkscape core files section {{{
SectionIn 1 2 3 RO
!ifndef DUMMYINSTALL
DetailPrint "Installing Inkscape core files..."
SetOverwrite on
SetAutoClose false
- File /a "..\..\inkscape\ink*.exe"
- File /a "..\..\inkscape\AUTHORS"
- File /a "..\..\inkscape\COPYING"
- File /a "..\..\inkscape\COPYING.LIB"
- File /a "..\..\inkscape\NEWS"
- File /a "..\..\inkscape\gspawn-win32-helper.exe"
- File /a "..\..\inkscape\gspawn-win32-helper-console.exe"
- File /nonfatal /a "..\..\inkscape\HACKING.txt"
- File /a "..\..\inkscape\README"
- File /nonfatal /a "..\..\inkscape\README.txt"
- File /a "..\..\inkscape\TRANSLATORS"
- File /nonfatal /a /r "..\..\inkscape\data"
- File /nonfatal /a /r "..\..\inkscape\doc"
- File /nonfatal /a /r "..\..\inkscape\plugins"
- File /nonfatal /a /r /x *.??*.???* /x "examples" /x "tutorials" "..\..\inkscape\share"
+ File /a ..\..\inkscape\ink*.exe
+ File /a ..\..\inkscape\AUTHORS
+ File /a ..\..\inkscape\COPYING
+ File /a ..\..\inkscape\COPYING.LIB
+ File /a ..\..\inkscape\NEWS
+ File /a ..\..\inkscape\gspawn-win32-helper.exe
+ File /a ..\..\inkscape\gspawn-win32-helper-console.exe
+ File /nonfatal /a ..\..\inkscape\HACKING.txt
+ File /a ..\..\inkscape\README
+ File /nonfatal /a ..\..\inkscape\README.txt
+ File /a ..\..\inkscape\TRANSLATORS
+ File /nonfatal /a /r ..\..\inkscape\data
+ File /nonfatal /a /r ..\..\inkscape\doc
+ File /nonfatal /a /r ..\..\inkscape\plugins
+ File /nonfatal /a /r /x *.??*.???* /x examples /x tutorials ..\..\inkscape\share
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
; this files are added because it slips through the filter
SetOutPath $INSTDIR\share\clipart
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /a "..\..\inkscape\share\clipart\inkscape.logo.svg"
- ;File /a "..\..\inkscape\share\clipart\inkscape.logo.classic.svg"
+ File /a ..\..\inkscape\share\clipart\inkscape.logo.svg
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SetOutPath $INSTDIR\share\icons
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /a "..\..\inkscape\share\icons\inkscape.file.png"
- File /a "..\..\inkscape\share\icons\inkscape.file.svg"
+ File /a ..\..\inkscape\share\icons\inkscape.file.png
+ File /a ..\..\inkscape\share\icons\inkscape.file.svg
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SetOutPath $INSTDIR\modules
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /nonfatal /a /r "..\..\inkscape\modules\*.*"
+ File /nonfatal /a /r ..\..\inkscape\modules\*.*
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SetOutPath $INSTDIR\python
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /nonfatal /a /r "..\..\inkscape\python\*.*"
+ File /nonfatal /a /r ..\..\inkscape\python\*.*
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
!endif
-SectionEnd
+SectionEnd ; SecCore }}}
-Section $(lng_GTKFiles) SecGTK
+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\*.dll"
- File /a /r /x "locale" "..\..\inkscape\lib"
- File /a /r "..\..\inkscape\etc"
+ File /a /r ..\..\inkscape\*.dll
+ File /a /r /x locale ..\..\inkscape\lib
+ File /a /r ..\..\inkscape\etc
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
!endif
-SectionEnd
+SectionEnd ; SecGTK }}}
-Section -SetCurrentUserOnly
+Section -SetCurrentUserOnly ; Set the installation to "current user" only by default {{{
!ifndef DUMMYINSTALL
StrCpy $MultiUser 0
SetShellVarContext current
!endif
-SectionEnd
+SectionEnd ; -SetCurrentUserOnly }}}
-Section $(lng_Alluser) SecAlluser
+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
DetailPrint "Installing in administrator mode (registry root will be HKLM)"
SetShellVarContext all
!endif
-SectionEnd
+SectionEnd ; SecAllUser }}}
-SectionGroup $(lng_Shortcuts) SecShortcuts
+SectionGroup "$(Shortcuts)" SecShortcuts ; Create shortcuts for the user {{{
-Section $(lng_Desktop) SecDesktop
+Section $(Desktop) SecDesktop ; Desktop shortcut {{{
!ifndef DUMMYINSTALL
- CreateShortCut "$DESKTOP\Inkscape.lnk" "$INSTDIR\inkscape.exe"
+ CreateShortCut $DESKTOP\Inkscape.lnk $INSTDIR\inkscape.exe
!endif
-SectionEnd
+SectionEnd ; SecDesktop }}}
-Section $(lng_Quicklaunch) SecQuicklaunch
+Section $(Quicklaunch) SecQuickLaunch ; Quick Launch shortcut {{{
!ifndef DUMMYINSTALL
- ${IfThen} $QUICKLAUNCH != $TEMP ${|} CreateShortCut "$QUICKLAUNCH\Inkscape.lnk" "$INSTDIR\inkscape.exe" ${|}
+ ${IfThen} $QUICKLAUNCH != $TEMP ${|} CreateShortCut $QUICKLAUNCH\Inkscape.lnk $INSTDIR\inkscape.exe ${|}
!endif
-SectionEnd
+SectionEnd ; SecQuickLaunch }}}
-Section $(lng_SVGWriter) SecSVGWriter
+Section $(SVGWriter) SecSVGWriter ; Register Inkscape as the default application for .svg[z] {{{
SectionIn 1 2 3
!ifndef DUMMYINSTALL
DetailPrint "Associating SVG files with Inkscape"
- ReadRegStr $0 HKCR ".svg" ""
- ${If} $0 == ""
- StrCpy $0 svgfile
- WriteRegStr HKCR ".svg" "" $0
- WriteRegStr HKCR "svgfile" "" "Scalable Vector Graphics file"
- ${EndIf}
- WriteRegStr HKCR "$0\shell\edit\command" "" `"$INSTDIR\Inkscape.exe" "%1"`
-
- ReadRegStr $0 HKCR ".svgz" ""
- ${If} $0 == ""
- StrCpy $0 svgfile
- WriteRegStr HKCR ".svgz" "" $0
- WriteRegStr HKCR "svgfile" "" "Scalable Vector Graphics file"
- ${EndIf}
- WriteRegStr HKCR "$0\shell\edit\command" "" `"$INSTDIR\Inkscape.exe" "%1"`
+ StrCpy $3 svg
+ ${For} $2 0 1
+ ${IfThen} $2 = 1 ${|} StrCpy $3 $3z ${|}
+ ReadRegStr $0 HKCR ".$3" ""
+ ${If} $0 == ""
+ StrCpy $0 "$3file"
+ WriteRegStr HKCR ".$3" "" $0
+ WriteRegStr HKCR $0 "" "Scalable Vector Graphics file"
+ ${EndIf}
+ WriteRegStr HKCR $0\shell\edit\command "" `"$INSTDIR\Inkscape.exe" "%1"`
+ ${Next}
!endif
-SectionEnd
+SectionEnd ; SecSVGWriter }}}
-Section $(lng_ContextMenu) SecContextMenu
+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"
- ReadRegStr $0 HKCR ".svg" ""
+ ReadRegStr $0 HKCR .svg ""
${If} $0 == ""
StrCpy $0 svgfile
- WriteRegStr HKCR ".svg" "" $0
- WriteRegStr HKCR "svgfile" "" "Scalable Vector Graphics file"
+ WriteRegStr HKCR .svg "" $0
+ WriteRegStr HKCR $0 "" "Scalable Vector Graphics file"
${EndIf}
- WriteRegStr HKCR "$0\shell\${PRODUCT_NAME}\command" "" `"$INSTDIR\Inkscape.exe" "%1"`
+ WriteRegStr HKCR $0\shell\Inkscape\command "" `"$INSTDIR\Inkscape.exe" "%1"`
- ReadRegStr $0 HKCR ".svgz" ""
+ ReadRegStr $0 HKCR .svgz ""
${If} $0 == ""
- StrCpy $0 svgfile
- WriteRegStr HKCR ".svgz" "" $0
- WriteRegStr HKCR "svgfile" "" "Scalable Vector Graphics file"
+ StrCpy $0 svgzfile
+ WriteRegStr HKCR .svgz "" $0
+ WriteRegStr HKCR $0 "" "Scalable Vector Graphics file"
${EndIf}
- WriteRegStr HKCR "$0\shell\${PRODUCT_NAME}\command" "" `"$INSTDIR\Inkscape.exe" "%1"`
+ WriteRegStr HKCR $0\shell\Inkscape\command "" `"$INSTDIR\Inkscape.exe" "%1"`
!endif
-SectionEnd
+SectionEnd ; SecContextMenu }}}
-SectionGroupEnd
+SectionGroupEnd ; SecShortcuts }}}
-Section /o $(lng_DeletePrefs) SecPrefs
+Section /o "$(DeletePrefs)" SecPrefs ; Delete user preferences before installation {{{
!ifndef DUMMYINSTALL
!insertmacro delprefs
!endif
-SectionEnd
+SectionEnd ; SecPrefs }}}
-SectionGroup $(lng_Addfiles) SecAddfiles
+SectionGroup "$(Addfiles)" SecAddfiles ; Additional files {{{
-Section $(lng_Examples) SecExamples
+Section $(Examples) SecExamples ; Install example SVG files {{{
SectionIn 1 2
!ifndef DUMMYINSTALL
SetOutPath $INSTDIR\share
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /nonfatal /a /r /x "*.??*.???*" "..\..\inkscape\share\examples"
+ File /nonfatal /a /r /x *.??*.???* ..\..\inkscape\share\examples
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
!endif
-SectionEnd
+SectionEnd ; SecExamples }}}
-Section $(lng_Tutorials) SecTutorials
+Section $(Tutorials) SecTutorials ; Install tutorials {{{
SectionIn 1 2
!ifndef DUMMYINSTALL
SetOutPath $INSTDIR\share
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /nonfatal /a /r /x "*.??*.???*" "..\..\inkscape\share\tutorials"
+ File /nonfatal /a /r /x *.??*.???* ..\..\inkscape\share\tutorials
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
!endif
-SectionEnd
+SectionEnd ; SecTutorials }}}
-SectionGroupEnd
+SectionGroupEnd ; SecAddfiles }}}
-SectionGroup $(lng_Languages) SecLanguages
- !macro Language SecName lng
- Section /o $(lng_${lng}) Sec${SecName}
+SectionGroup "$(Languages)" SecLanguages ; Languages sections {{{
+ !macro Language SecName lng ; A macro to create each section {{{
+ Section /o "$(lng_${lng}) (${lng})" Sec${SecName}
;SectionIn 1 2 3
-!ifndef DUMMYINSTALL
+ !ifndef DUMMYINSTALL
SetOutPath $INSTDIR
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /nonfatal /a "..\..\inkscape\*.${lng}.txt" ; FIXME: remove this? No such files.
+ File /nonfatal /a ..\..\inkscape\*.${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\locale\${lng}"
+ File /nonfatal /a /r ..\..\inkscape\locale\${lng}
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SetOutPath $INSTDIR\lib\locale
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /nonfatal /a /r "..\..\inkscape\lib\locale\${lng}"
+ File /nonfatal /a /r ..\..\inkscape\lib\locale\${lng}
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SetOutPath $INSTDIR\share\clipart
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /nonfatal /a /r "..\..\inkscape\share\clipart\*.${lng}.svg"
+ File /nonfatal /a /r ..\..\inkscape\share\clipart\*.${lng}.svg
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
; the keyboard tables
SetOutPath $INSTDIR\share\screens
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /nonfatal /a /r "..\..\inkscape\share\screens\*.${lng}.svg"
+ File /nonfatal /a /r ..\..\inkscape\share\screens\*.${lng}.svg
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SetOutPath $INSTDIR\share\templates
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /nonfatal /a /r "..\..\inkscape\share\templates\*.${lng}.svg"
+ File /nonfatal /a /r ..\..\inkscape\share\templates\*.${lng}.svg
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SetOutPath $INSTDIR\doc
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /nonfatal /a /r "..\..\inkscape\doc\keys.${lng}.xml"
- File /nonfatal /a /r "..\..\inkscape\doc\keys.${lng}.html"
+ File /nonfatal /a /r ..\..\inkscape\doc\keys.${lng}.xml
+ File /nonfatal /a /r ..\..\inkscape\doc\keys.${lng}.html
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SectionGetFlags ${SecTutorials} $R1
IntOp $R1 $R1 & ${SF_SELECTED}
${If} $R1 >= ${SF_SELECTED}
SetOutPath $INSTDIR\share\tutorials
!insertmacro UNINSTALL.LOG_OPEN_INSTALL
- File /nonfatal /a "..\..\inkscape\share\tutorials\*.${lng}.*"
+ File /nonfatal /a ..\..\inkscape\share\tutorials\*.${lng}.*
!insertmacro UNINSTALL.LOG_CLOSE_INSTALL
${EndIf}
!endif
SectionEnd
- !macroend
-
- !insertmacro Language Amharic am
- !insertmacro Language Arabic ar
- !insertmacro Language Azerbaijani az
- !insertmacro Language Byelorussian be
- !insertmacro Language Bulgarian bg
- !insertmacro Language Bengali bn
- !insertmacro Language Breton br
- !insertmacro Language Catalan ca
- !insertmacro Language CatalanValencia ca@valencia
- !insertmacro Language Czech cs
- !insertmacro Language Danish da
- !insertmacro Language German de
- !insertmacro Language Dzongkha dz
- !insertmacro Language Greek el
+ !macroend ; Language }}}
+
+ ; Now create each section with the Language macro {{{
+ !insertmacro Language Amharic am
+ !insertmacro Language Arabic ar
+ !insertmacro Language Azerbaijani az
+ !insertmacro Language Byelorussian be
+ !insertmacro Language Bulgarian bg
+ !insertmacro Language Bengali bn
+ !insertmacro Language Breton br
+ !insertmacro Language Catalan ca
+ !insertmacro Language CatalanValencia ca@valencia
+ !insertmacro Language Czech cs
+ !insertmacro Language Danish da
+ !insertmacro Language German de
+ !insertmacro Language Dzongkha dz
+ !insertmacro Language Greek el
!insertmacro Language EnglishAustralian en_AU
- !insertmacro Language EnglishCanadian en_CA
- !insertmacro Language EnglishBritain en_GB
- !insertmacro Language EnglishPiglatin en_US@piglatin
- !insertmacro Language Esperanto eo
- !insertmacro Language Spanish es
- !insertmacro Language SpanishMexico es_MX
- !insertmacro Language Estonian et
- !insertmacro Language Basque eu
- !insertmacro Language French fr
- !insertmacro Language Finnish fi
- !insertmacro Language Irish ga
- !insertmacro Language Gallegan gl
- !insertmacro Language Hebrew he
- !insertmacro Language Croatian hr
- !insertmacro Language Hungarian hu
- !insertmacro Language Indonesian id
- !insertmacro Language Italian it
- !insertmacro Language Japanese ja
- !insertmacro Language Khmer km
- !insertmacro Language Korean ko
- !insertmacro Language Lithuanian lt
- !insertmacro Language Mongolian mn
- !insertmacro Language Macedonian mk
- !insertmacro Language NorwegianBokmal nb
- !insertmacro Language Nepali ne
- !insertmacro Language Dutch nl
- !insertmacro Language NorwegianNynorsk nn
- !insertmacro Language Panjabi pa
- !insertmacro Language Polish pl
- !insertmacro Language Portuguese pt
- !insertmacro Language PortugueseBrazil pt_BR
- !insertmacro Language Romanian ro
- !insertmacro Language Russian ru
- !insertmacro Language Kinyarwanda rw
- !insertmacro Language Slovak sk
- !insertmacro Language Slovenian sl
- !insertmacro Language Albanian sq
- !insertmacro Language Serbian sr
- !insertmacro Language SerbianLatin sr@latin
- !insertmacro Language Swedish sv
- !insertmacro Language Thai th
- !insertmacro Language Turkish tr
- !insertmacro Language Ukrainian uk
- !insertmacro Language Vietnamese vi
+ !insertmacro Language EnglishCanadian en_CA
+ !insertmacro Language EnglishBritain en_GB
+ !insertmacro Language EnglishPiglatin en_US@piglatin
+ !insertmacro Language Esperanto eo
+ !insertmacro Language Spanish es
+ !insertmacro Language SpanishMexico es_MX
+ !insertmacro Language Estonian et
+ !insertmacro Language Basque eu
+ !insertmacro Language French fr
+ !insertmacro Language Finnish fi
+ !insertmacro Language Irish ga
+ !insertmacro Language Gallegan gl
+ !insertmacro Language Hebrew he
+ !insertmacro Language Croatian hr
+ !insertmacro Language Hungarian hu
+ !insertmacro Language Indonesian id
+ !insertmacro Language Italian it
+ !insertmacro Language Japanese ja
+ !insertmacro Language Khmer km
+ !insertmacro Language Korean ko
+ !insertmacro Language Lithuanian lt
+ !insertmacro Language Mongolian mn
+ !insertmacro Language Macedonian mk
+ !insertmacro Language NorwegianBokmal nb
+ !insertmacro Language Nepali ne
+ !insertmacro Language Dutch nl
+ !insertmacro Language NorwegianNynorsk nn
+ !insertmacro Language Panjabi pa
+ !insertmacro Language Polish pl
+ !insertmacro Language Portuguese pt
+ !insertmacro Language PortugueseBrazil pt_BR
+ !insertmacro Language Romanian ro
+ !insertmacro Language Russian ru
+ !insertmacro Language Kinyarwanda rw
+ !insertmacro Language Slovak sk
+ !insertmacro Language Slovenian sl
+ !insertmacro Language Albanian sq
+ !insertmacro Language Serbian sr
+ !insertmacro Language SerbianLatin sr@latin
+ !insertmacro Language Swedish sv
+ !insertmacro Language Thai th
+ !insertmacro Language Turkish tr
+ !insertmacro Language Ukrainian uk
+ !insertmacro Language Vietnamese vi
!insertmacro Language ChineseSimplified zh_CN
- !insertmacro Language ChineseTaiwan zh_TW
-SectionGroupEnd
+ !insertmacro Language ChineseTaiwan zh_TW
+ ; }}}
+SectionGroupEnd ; SecLanguages }}}
-
-Section -FinalizeInstallation
+Section -FinalizeInstallation ; Hidden, mandatory section to finalize installation {{{
!ifndef DUMMYINSTALL
DetailPrint "Finalizing installation"
${IfThen} $MultiUser = 1 ${|} SetShellVarContext all ${|}
${IfThen} $MultiUser != 1 ${|} SetShellVarContext current ${|}
- WriteRegStr SHCTX "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\inkscape.exe"
- WriteRegStr SHCTX "${PRODUCT_DIR_REGKEY}" "MultiUser" $MultiUser
- WriteRegStr SHCTX "${PRODUCT_DIR_REGKEY}" "askMultiUser" $askMultiUser
- WriteRegStr SHCTX "${PRODUCT_DIR_REGKEY}" "User" $User
+ WriteRegStr SHCTX "${INSTDIR_KEY}" "" $INSTDIR\inkscape.exe
+ WriteRegStr SHCTX "${INSTDIR_KEY}" MultiUser $MultiUser
+ WriteRegStr SHCTX "${INSTDIR_KEY}" askMultiUser $askMultiUser
+ WriteRegStr SHCTX "${INSTDIR_KEY}" User $User
; start menu entries
- CreateShortcut "$SMPROGRAMS\Inkscape.lnk" "$INSTDIR\inkscape.exe"
+ CreateShortcut $SMPROGRAMS\Inkscape.lnk $INSTDIR\inkscape.exe
; uninstall settings
- ; WriteUninstaller "$INSTDIR\uninst.exe"
- WriteRegExpandStr SHCTX "${PRODUCT_UNINST_KEY}" "UninstallString" "${UNINST_EXE}"
- WriteRegExpandStr SHCTX "${PRODUCT_UNINST_KEY}" "InstallDir" $INSTDIR
- WriteRegExpandStr SHCTX "${PRODUCT_UNINST_KEY}" "InstallLocation" $INSTDIR
- WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "DisplayName" "${PRODUCT_NAME} ${PRODUCT_VERSION}"
- WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\Inkscape.exe,0"
- WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
- WriteRegDWORD SHCTX "${PRODUCT_UNINST_KEY}" "NoModify" 1
- WriteRegDWORD SHCTX "${PRODUCT_UNINST_KEY}" "NoRepair" 1
+ ; WriteUninstaller $INSTDIR\uninst.exe
+ WriteRegExpandStr SHCTX "${UNINST_KEY}" UninstallString ${UNINST_EXE}
+ WriteRegExpandStr SHCTX "${UNINST_KEY}" InstallDir $INSTDIR
+ WriteRegExpandStr SHCTX "${UNINST_KEY}" InstallLocation $INSTDIR
+ WriteRegStr SHCTX "${UNINST_KEY}" DisplayName "Inkscape ${INKSCAPE_VERSION}"
+ WriteRegStr SHCTX "${UNINST_KEY}" DisplayIcon $INSTDIR\Inkscape.exe,0
+ WriteRegStr SHCTX "${UNINST_KEY}" DisplayVersion ${INKSCAPE_VERSION}
+ WriteRegDWORD SHCTX "${UNINST_KEY}" NoModify 1
+ WriteRegDWORD SHCTX "${UNINST_KEY}" NoRepair 1
;create/update log always within .onInstSuccess function
!insertmacro UNINSTALL.LOG_UPDATE_INSTALL
; Not needed any more
Delete $INSTDIR\Uninstall.dat
!endif
-SectionEnd
-
-; Last the Descriptions
-!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
- !insertmacro MUI_DESCRIPTION_TEXT ${SecCore} $(lng_CoreDesc)
- !insertmacro MUI_DESCRIPTION_TEXT ${SecGTK} $(lng_GTKFilesDesc)
- !insertmacro MUI_DESCRIPTION_TEXT ${SecShortcuts} $(lng_ShortcutsDesc)
- !insertmacro MUI_DESCRIPTION_TEXT ${SecAlluser} $(lng_AlluserDesc)
- !insertmacro MUI_DESCRIPTION_TEXT ${SecDesktop} $(lng_DesktopDesc)
- !insertmacro MUI_DESCRIPTION_TEXT ${SecQuicklaunch} $(lng_QuicklaunchDesc)
- !insertmacro MUI_DESCRIPTION_TEXT ${SecSVGWriter} $(lng_SVGWriterDesc)
- !insertmacro MUI_DESCRIPTION_TEXT ${SecContextMenu} $(lng_ContextMenuDesc)
- !insertmacro MUI_DESCRIPTION_TEXT ${SecPrefs} $(lng_DeletePrefsDesc)
- !insertmacro MUI_DESCRIPTION_TEXT ${SecAddfiles} $(lng_AddfilesDesc)
- !insertmacro MUI_DESCRIPTION_TEXT ${SecExamples} $(lng_ExamplesDesc)
- !insertmacro MUI_DESCRIPTION_TEXT ${SecTutorials} $(lng_TutorialsDesc)
- !insertmacro MUI_DESCRIPTION_TEXT ${SecLanguages} $(lng_LanguagesDesc)
-!insertmacro MUI_FUNCTION_DESCRIPTION_END
-
-!macro Parameter key Section
- ${GetOptions} $CMDARGS "/${key}=" $1
- ${If} $1 == "OFF"
- SectionGetFlags ${Section} $0
- IntOp $2 ${SF_SELECTED} ~
- IntOp $0 $0 & $2
- SectionSetFlags ${Section} $0
- ${EndIf}
- ${If} $1 == "ON"
- SectionGetFlags ${Section} $0
- IntOp $0 $0 | ${SF_SELECTED}
- SectionSetFlags ${Section} $0
- ${EndIf}
-!macroend
-
-Function .onInit
+SectionEnd ; -FinalizeInstallation }}}
+
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN ; Section descriptions {{{
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecCore} "$(CoreDesc)"
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecGTK} "$(GTKFilesDesc)"
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecShortcuts} "$(ShortcutsDesc)"
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecAlluser} "$(AlluserDesc)"
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecDesktop} "$(DesktopDesc)"
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecQuicklaunch} "$(QuicklaunchDesc)"
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecSVGWriter} "$(SVGWriterDesc)"
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecContextMenu} "$(ContextMenuDesc)"
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecPrefs} "$(DeletePrefsDesc)"
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecAddfiles} "$(AddfilesDesc)"
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecExamples} "$(ExamplesDesc)"
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecTutorials} "$(TutorialsDesc)"
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecLanguages} "$(LanguagesDesc)"
+!insertmacro MUI_FUNCTION_DESCRIPTION_END ; Section descriptions }}}
+
+
+Function .onInit ; initialise the installer {{{2
+ ; This code will be executed before the sections, but due to the
+ ; language code in the sections it must come after it in the code.
+
+ ; Language detection {{{
!insertmacro MUI_LANGDLL_DISPLAY
!macro LanguageAutoSelect SecName LocaleID
${EndIf}
!macroend
- ;!insertmacro LanguageAutoSelect English 1033
- !insertmacro LanguageAutoSelect Breton 1150
- !insertmacro LanguageAutoSelect Catalan 1027
- !insertmacro LanguageAutoSelect Czech 1029
- !insertmacro LanguageAutoSelect Finnish 1035
- !insertmacro LanguageAutoSelect French 1036
- !insertmacro LanguageAutoSelect Gallegan 1110 ; Galician, but section is called Gallegan
- !insertmacro LanguageAutoSelect German 1031
- !insertmacro LanguageAutoSelect Italian 1040
- !insertmacro LanguageAutoSelect Japanese 1041
- !insertmacro LanguageAutoSelect Polish 1045
- !insertmacro LanguageAutoSelect Russian 1049
- !insertmacro LanguageAutoSelect Slovak 1051
- !insertmacro LanguageAutoSelect Slovenian 1060
- !insertmacro LanguageAutoSelect Spanish 1034
+ ; No need for English to be detected as it's the default
+ !insertmacro LanguageAutoSelect Breton 1150
+ !insertmacro LanguageAutoSelect Catalan 1027
+ !insertmacro LanguageAutoSelect Czech 1029
+ !insertmacro LanguageAutoSelect Finnish 1035
+ !insertmacro LanguageAutoSelect French 1036
+ !insertmacro LanguageAutoSelect Gallegan 1110 ; Galician, but section is called Gallegan
+ !insertmacro LanguageAutoSelect German 1031
+ !insertmacro LanguageAutoSelect Italian 1040
+ !insertmacro LanguageAutoSelect Japanese 1041
+ !insertmacro LanguageAutoSelect Polish 1045
+ !insertmacro LanguageAutoSelect Romanian 1048
+ !insertmacro LanguageAutoSelect Russian 1049
+ !insertmacro LanguageAutoSelect Slovak 1051
+ !insertmacro LanguageAutoSelect Slovenian 1060
+ !insertmacro LanguageAutoSelect Spanish 1034
!insertmacro LanguageAutoSelect ChineseTaiwan 1028 ; TradChinese, but section is called ChineseTaiwan
+ ; End of language detection }}}
- ${GetParameters} $CMDARGS
- ;prepare log always within .onInit function
- !insertmacro UNINSTALL.LOG_PREPARE_INSTALL
+ !insertmacro UNINSTALL.LOG_PREPARE_INSTALL ; prepare advanced uninstallation log script
;Extract InstallOptions INI files
- StrCpy $AskMultiUser "1"
- StrCpy $MultiUser "0"
+ StrCpy $AskMultiUser 1
+ StrCpy $MultiUser 0
; this resets AskMultiUser if Win95/98/ME
ClearErrors
ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
; hide if quick launch if not available
${IfThen} $QUICKLAUNCH == $TEMP ${|} SectionSetText ${SecQuicklaunch} "" ${|}
- ;check if user is admin
+ ; Check for administrative privileges {{{
ClearErrors
UserInfo::GetName
${If} ${Errors}
; This one means you don't need to care about admin or
; not admin because Windows 9x doesn't either
- ${IfCmd} MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(lng_NOT_SUPPORTED)$(lng_OK_CANCEL_DESC)" /SD IDOK IDCANCEL ${||} Quit ${|}
+ ${IfCmd} MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(NOT_SUPPORTED)$(OK_CANCEL_DESC)" /SD IDOK IDCANCEL ${||} Quit ${|}
${Else}
Pop $User
UserInfo::GetAccountType
Pop $1
- ${If} $1 != "Admin"
- ${AndIf} ${Cmd} ${|} MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(lng_NO_ADMIN)$(lng_OK_CANCEL_DESC)" /SD IDOK IDCANCEL ${|}
+ ${If} $1 != Admin
+ ${AndIf} ${Cmd} ${|} MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(NO_ADMIN)$(OK_CANCEL_DESC)" /SD IDOK IDCANCEL ${|}
Quit
${EndIf}
- ${EndIf}
+ ${EndIf} ; }}}
- ;check for previous installation
- ReadRegStr $0 HKLM "${PRODUCT_DIR_REGKEY}" "User"
- ${IfThen} $0 == "" ${|} ReadRegStr $0 HKCU "${PRODUCT_DIR_REGKEY}" "User" ${|}
- ;check user if applicable
+ ; Detect an Inkscape installation by another user {{{
+ ReadRegStr $0 HKLM "${INSTDIR_KEY}" User ; first global...
+ ${IfThen} $0 == "" ${|} ReadRegStr $0 HKCU "${INSTDIR_KEY}" User ${|} ; then current user
${If} $0 != ""
${AndIf} $0 != $User
- ${AndIf} ${Cmd} ${|} MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(lng_DIFFERENT_USER)$(lng_OK_CANCEL_DESC)" /SD IDOK IDCANCEL ${|}
+ ${AndIf} ${Cmd} ${|} MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(DIFFERENT_USER)$(OK_CANCEL_DESC)" /SD IDOK IDCANCEL ${|}
Quit
- ${EndIf}
+ ${EndIf} ; }}}
+
+ ; Request uninstallation of an old Inkscape installation {{{
+ ReadRegStr $R0 HKLM "${UNINST_KEY}" UninstallString
+ ${IfThen} $R0 == "" ${|} ReadRegStr $R0 HKCU "${UNINST_KEY}" UninstallString ${|}
+ ${If} $R0 != ""
+ ${AndIf} ${Cmd} ${|} MessageBox MB_YESNO|MB_ICONEXCLAMATION "$(WANT_UNINSTALL_BEFORE)" /SD IDNO IDYES ${|}
+ ExecWait $R0
+ ${EndIf} ; }}}
+
+ ; Process command-line arguments (for automation) {{{
+ !echo `Creating code to process command-line arguments...`
+ !verbose push
+ !verbose 3
+ ${GetParameters} $CMDARGS
- ; call uninstall first
- ; code taken from the vlc project
- ReadRegStr $R0 HKLM ${PRODUCT_UNINST_KEY} "UninstallString"
- ReadRegStr $R1 HKLM ${PRODUCT_UNINST_KEY} "DisplayName"
- ${If} $R0 == ""
- ReadRegStr $R0 HKCU ${PRODUCT_UNINST_KEY} "UninstallString"
- ReadRegStr $R1 HKCU ${PRODUCT_UNINST_KEY} "DisplayName"
+ !macro Parameter key Section
+ ${GetOptions} $CMDARGS /${key}= $1
+ ${If} $1 == OFF
+ SectionGetFlags ${Section} $0
+ IntOp $2 ${SF_SELECTED} ~
+ IntOp $0 $0 & $2
+ SectionSetFlags ${Section} $0
${EndIf}
- ${If} $R0 != ""
- ${AndIf} ${Cmd} ${|} MessageBox MB_YESNO|MB_ICONEXCLAMATION $(lng_WANT_UNINSTALL_BEFORE) /SD IDNO IDYES ${|}
- ExecWait $R0 ;Was '$R0 _?=$INSTDIR' but we do NOT want it leaving the uninstaller behind.
+ ${If} $1 == ON
+ SectionGetFlags ${Section} $0
+ IntOp $0 $0 | ${SF_SELECTED}
+ SectionSetFlags ${Section} $0
${EndIf}
+ !macroend
- ; proccess command line parameter
- !insertmacro Parameter "GTK" ${SecGTK}
- !insertmacro Parameter "SHORTCUTS" ${secShortcuts}
- !insertmacro Parameter "ALLUSER" ${SecAlluser}
- !insertmacro Parameter "DESKTOP" ${SecDesktop}
- !insertmacro Parameter "QUICKLAUNCH" ${SecQUICKlaunch}
- !insertmacro Parameter "SVGEDITOR" ${SecSVGWriter}
- !insertmacro Parameter "CONTEXTMENUE" ${SecContextMenu}
- !insertmacro Parameter "PREFERENCES" ${SecPrefs}
- !insertmacro Parameter "ADDFILES" ${SecAddfiles}
- !insertmacro Parameter "EXAMPLES" ${SecExamples}
- !insertmacro Parameter "TUTORIALS" ${SecTutorials}
- !insertmacro Parameter "LANGUAGES" ${SecLanguages}
- !insertmacro Parameter "am" ${SecAmharic}
- !insertmacro Parameter "ar" ${SecArabic}
- !insertmacro Parameter "az" ${SecAzerbaijani}
- !insertmacro Parameter "be" ${SecByelorussian}
- !insertmacro Parameter "bg" ${SecBulgarian}
- !insertmacro Parameter "bn" ${SecBengali}
- !insertmacro Parameter "br" ${SecBreton}
- !insertmacro Parameter "ca" ${SecCatalan}
- !insertmacro Parameter "ca@valencia" ${SecCatalanValencia}
- !insertmacro Parameter "cs" ${SecCzech}
- !insertmacro Parameter "da" ${SecDanish}
- !insertmacro Parameter "de" ${SecGerman}
- !insertmacro Parameter "dz" ${SecDzongkha}
- !insertmacro Parameter "el" ${SecGreek}
- !insertmacro Parameter "en_AU" ${SecEnglishAustralian}
- !insertmacro Parameter "en_CA" ${SecEnglishCanadian}
- !insertmacro Parameter "en_GB" ${SecEnglishBritain}
- !insertmacro Parameter "en_US@piglatin" ${SecEnglishPiglatin}
- !insertmacro Parameter "eo" ${SecEsperanto}
- !insertmacro Parameter "es" ${SecSpanish}
- !insertmacro Parameter "es_MX" ${SecSpanishMexico}
- !insertmacro Parameter "et" ${SecEstonian}
- !insertmacro Parameter "eu" ${SecBasque}
- !insertmacro Parameter "fi" ${SecFinnish}
- !insertmacro Parameter "fr" ${SecFrench}
- !insertmacro Parameter "ga" ${SecIrish}
- !insertmacro Parameter "gl" ${SecGallegan}
- !insertmacro Parameter "he" ${SecHebrew}
- !insertmacro Parameter "hr" ${SecCroatian}
- !insertmacro Parameter "hu" ${SecHungarian}
- !insertmacro Parameter "id" ${SecIndonesian}
- !insertmacro Parameter "it" ${SecItalian}
- !insertmacro Parameter "ja" ${SecJapanese}
- !insertmacro Parameter "km" ${SecKhmer}
- !insertmacro Parameter "ko" ${SecKorean}
- !insertmacro Parameter "lt" ${SecLithuanian}
- !insertmacro Parameter "mk" ${SecMacedonian}
- !insertmacro Parameter "mn" ${SecMongolian}
- !insertmacro Parameter "nb" ${SecNorwegianBokmal}
- !insertmacro Parameter "ne" ${SecNepali}
- !insertmacro Parameter "nl" ${SecDutch}
- !insertmacro Parameter "nn" ${SecNorwegianNynorsk}
- !insertmacro Parameter "pa" ${SecPanjabi}
- !insertmacro Parameter "pl" ${SecPolish}
- !insertmacro Parameter "pt" ${SecPortuguese}
- !insertmacro Parameter "pt_BR" ${SecPortugueseBrazil}
- !insertmacro Parameter "ro" ${SecRomanian}
- !insertmacro Parameter "ru" ${SecRussian}
- !insertmacro Parameter "rw" ${SecKinyarwanda}
- !insertmacro Parameter "sk" ${SecSlovak}
- !insertmacro Parameter "sl" ${SecSlovenian}
- !insertmacro Parameter "sq" ${SecAlbanian}
- !insertmacro Parameter "sr" ${SecSerbian}
- !insertmacro Parameter "sr@latin" ${SecSerbianLatin}
- !insertmacro Parameter "sv" ${SecSwedish}
- !insertmacro Parameter "th" ${SecThai}
- !insertmacro Parameter "tr" ${SecTurkish}
- !insertmacro Parameter "uk" ${SecUkrainian}
- !insertmacro Parameter "vi" ${SecVietnamese}
- !insertmacro Parameter "zh_CN" ${SecChineseSimplified}
- !insertmacro Parameter "zh_TW" ${SecChineseTaiwan}
+ !insertmacro Parameter GTK ${SecGTK}
+ !insertmacro Parameter SHORTCUTS ${secShortcuts}
+ !insertmacro Parameter ALLUSER ${SecAlluser}
+ !insertmacro Parameter DESKTOP ${SecDesktop}
+ !insertmacro Parameter QUICKLAUNCH ${SecQUICKlaunch}
+ !insertmacro Parameter SVGEDITOR ${SecSVGWriter}
+ !insertmacro Parameter CONTEXTMENUE ${SecContextMenu}
+ !insertmacro Parameter PREFERENCES ${SecPrefs}
+ !insertmacro Parameter ADDFILES ${SecAddfiles}
+ !insertmacro Parameter EXAMPLES ${SecExamples}
+ !insertmacro Parameter TUTORIALS ${SecTutorials}
+ !insertmacro Parameter LANGUAGES ${SecLanguages}
+ !insertmacro Parameter am ${SecAmharic}
+ !insertmacro Parameter ar ${SecArabic}
+ !insertmacro Parameter az ${SecAzerbaijani}
+ !insertmacro Parameter be ${SecByelorussian}
+ !insertmacro Parameter bg ${SecBulgarian}
+ !insertmacro Parameter bn ${SecBengali}
+ !insertmacro Parameter br ${SecBreton}
+ !insertmacro Parameter ca ${SecCatalan}
+ !insertmacro Parameter ca@valencia ${SecCatalanValencia}
+ !insertmacro Parameter cs ${SecCzech}
+ !insertmacro Parameter da ${SecDanish}
+ !insertmacro Parameter de ${SecGerman}
+ !insertmacro Parameter dz ${SecDzongkha}
+ !insertmacro Parameter el ${SecGreek}
+ !insertmacro Parameter en_AU ${SecEnglishAustralian}
+ !insertmacro Parameter en_CA ${SecEnglishCanadian}
+ !insertmacro Parameter en_GB ${SecEnglishBritain}
+ !insertmacro Parameter en_US@piglatin ${SecEnglishPiglatin}
+ !insertmacro Parameter eo ${SecEsperanto}
+ !insertmacro Parameter es ${SecSpanish}
+ !insertmacro Parameter es_MX ${SecSpanishMexico}
+ !insertmacro Parameter et ${SecEstonian}
+ !insertmacro Parameter eu ${SecBasque}
+ !insertmacro Parameter fi ${SecFinnish}
+ !insertmacro Parameter fr ${SecFrench}
+ !insertmacro Parameter ga ${SecIrish}
+ !insertmacro Parameter gl ${SecGallegan}
+ !insertmacro Parameter he ${SecHebrew}
+ !insertmacro Parameter hr ${SecCroatian}
+ !insertmacro Parameter hu ${SecHungarian}
+ !insertmacro Parameter id ${SecIndonesian}
+ !insertmacro Parameter it ${SecItalian}
+ !insertmacro Parameter ja ${SecJapanese}
+ !insertmacro Parameter km ${SecKhmer}
+ !insertmacro Parameter ko ${SecKorean}
+ !insertmacro Parameter lt ${SecLithuanian}
+ !insertmacro Parameter mk ${SecMacedonian}
+ !insertmacro Parameter mn ${SecMongolian}
+ !insertmacro Parameter nb ${SecNorwegianBokmal}
+ !insertmacro Parameter ne ${SecNepali}
+ !insertmacro Parameter nl ${SecDutch}
+ !insertmacro Parameter nn ${SecNorwegianNynorsk}
+ !insertmacro Parameter pa ${SecPanjabi}
+ !insertmacro Parameter pl ${SecPolish}
+ !insertmacro Parameter pt ${SecPortuguese}
+ !insertmacro Parameter pt_BR ${SecPortugueseBrazil}
+ !insertmacro Parameter ro ${SecRomanian}
+ !insertmacro Parameter ru ${SecRussian}
+ !insertmacro Parameter rw ${SecKinyarwanda}
+ !insertmacro Parameter sk ${SecSlovak}
+ !insertmacro Parameter sl ${SecSlovenian}
+ !insertmacro Parameter sq ${SecAlbanian}
+ !insertmacro Parameter sr ${SecSerbian}
+ !insertmacro Parameter sr@latin ${SecSerbianLatin}
+ !insertmacro Parameter sv ${SecSwedish}
+ !insertmacro Parameter th ${SecThai}
+ !insertmacro Parameter tr ${SecTurkish}
+ !insertmacro Parameter uk ${SecUkrainian}
+ !insertmacro Parameter vi ${SecVietnamese}
+ !insertmacro Parameter zh_CN ${SecChineseSimplified}
+ !insertmacro Parameter zh_TW ${SecChineseTaiwan}
ClearErrors
- ${GetOptions} $CMDARGS "/?" $1
+ ${GetOptions} $CMDARGS /? $1
${IfNot} ${Errors}
MessageBox MB_OK "Possible parameters for installer:$\r$\n \
/?: this help screen$\r$\n \
/LANGUAGES=(OFF/ON): translated menues, examples, etc.$\r$\n \
/[locale code]=(OFF/ON): e.g am, es, es_MX as in Inkscape supported"
Abort
- ${EndIf}
-FunctionEnd
-
-; --------------------------------------------------
-
-Function un.CustomPageUninstall
- !insertmacro MUI_HEADER_TEXT "$(lng_UInstOpt)" "$(lng_UInstOpt1)"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "inkscape.nsi.uninstall" "Field 1" "Text" "$APPDATA\Inkscape\"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "inkscape.nsi.uninstall" "Field 2" "Text" "$(lng_PurgePrefs)"
- !insertmacro MUI_INSTALLOPTIONS_DISPLAY "inkscape.nsi.uninstall"
- !insertmacro MUI_INSTALLOPTIONS_READ $MultiUser "inkscape.nsi.uninstall" "Field 2" "State"
-FunctionEnd
-
-Function un.onInit
+ !verbose pop
+ ${EndIf} ; }}}
+FunctionEnd ; .onInit }}}
+; Uninstaller code {{{1
+Function un.onInit ; initialise uninstaller {{{
;begin uninstall, could be added on top of uninstall section instead
;!insertmacro UNINSTALL.LOG_BEGIN_UNINSTALL
${IfNot} ${FileExists} $INSTDIR\uninstall.log
- MessageBox MB_OK|MB_ICONEXCLAMATION "$(lng_UninstallLogNotFound)" /SD IDOK
+ MessageBox MB_OK|MB_ICONEXCLAMATION "$(UninstallLogNotFound)" /SD IDOK
Quit
${EndIf}
ClearErrors
StrCpy $MultiUser 1
; Test if this was a multiuser installation
- ReadRegStr $0 HKLM "${PRODUCT_DIR_REGKEY}" ""
- ${If} $0 == "$INSTDIR\inkscape.exe"
- ReadRegStr $MultiUser HKLM "${PRODUCT_DIR_REGKEY}" "MultiUser"
- ReadRegStr $askMultiUser HKLM "${PRODUCT_DIR_REGKEY}" "askMultiUser"
- ReadRegStr $0 HKLM "${PRODUCT_DIR_REGKEY}" "User"
+ ReadRegStr $0 HKLM "${INSTDIR_KEY}" ""
+ ${If} $0 == $INSTDIR\inkscape.exe
+ ReadRegStr $MultiUser HKLM "${INSTDIR_KEY}" MultiUser
+ ReadRegStr $askMultiUser HKLM "${INSTDIR_KEY}" askMultiUser
+ ReadRegStr $0 HKLM "${INSTDIR_KEY}" User
${Else}
- ReadRegStr $MultiUser HKCU "${PRODUCT_DIR_REGKEY}" "MultiUser"
- ReadRegStr $askMultiUser HKCU "${PRODUCT_DIR_REGKEY}" "askMultiUser"
- ReadRegStr $0 HKCU "${PRODUCT_DIR_REGKEY}" "User"
+ ReadRegStr $MultiUser HKCU "${INSTDIR_KEY}" MultiUser
+ ReadRegStr $askMultiUser HKCU "${INSTDIR_KEY}" askMultiUser
+ ReadRegStr $0 HKCU "${INSTDIR_KEY}" User
${EndIf}
;check user if applicable
${If} $0 != ""
${AndIf} $0 != $User
- ${AndIf} ${Cmd} ${|} MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(lng_DIFFERENT_USER)$(lng_OK_CANCEL_DESC)" /SD IDOK IDCANCEL ${|}
+ ${AndIf} ${Cmd} ${|} MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(DIFFERENT_USER)$(OK_CANCEL_DESC)" /SD IDOK IDCANCEL ${|}
Quit
${EndIf}
- !insertmacro MUI_INSTALLOPTIONS_EXTRACT "inkscape.nsi.uninstall"
+ !insertmacro MUI_INSTALLOPTIONS_EXTRACT inkscape.nsi.uninstall
SetShellVarContext all
${IfThen} $MultiUser = 0 ${|} SetShellVarContext current ${|}
-FunctionEnd
+FunctionEnd ; un.onInit }}}
+
+Function un.CustomPageUninstall ; {{{
+ !insertmacro MUI_HEADER_TEXT "$(UInstOpt)" "$(UInstOpt1)"
+ !insertmacro MUI_INSTALLOPTIONS_WRITE inkscape.nsi.uninstall "Field 1" Text "$APPDATA\Inkscape\"
+ !insertmacro MUI_INSTALLOPTIONS_WRITE inkscape.nsi.uninstall "Field 2" Text "$(PurgePrefs)"
+ !insertmacro MUI_INSTALLOPTIONS_DISPLAY inkscape.nsi.uninstall
+ !insertmacro MUI_INSTALLOPTIONS_READ $MultiUser inkscape.nsi.uninstall "Field 2" State
+FunctionEnd ; un.CustomPageUninstall }}}
-Section Uninstall
+Section Uninstall ; do the uninstalling {{{
!ifndef DUMMYINSTALL
; remove personal settings
- Delete "$APPDATA\Inkscape\extension-errors.log"
+ Delete $APPDATA\Inkscape\extension-errors.log
${If} $MultiUser = 0
DetailPrint "Purging personal settings in $APPDATA\Inkscape"
- ;RMDir /r "$APPDATA\Inkscape"
+ ;RMDir /r $APPDATA\Inkscape
!insertmacro delprefs
${EndIf}
; Remove file associations for svg editor
- StrCpy $3 "svg"
+ StrCpy $3 svg
${For} $2 0 1
${IfThen} $2 = 1 ${|} StrCpy $3 $3z ${|}
DetailPrint "Removing file associations for $3 editor"
ClearErrors
- ReadRegStr $0 HKCR ".$3" ""
+ ReadRegStr $0 HKCR .$3 ""
${IfNot} ${Errors}
- ReadRegStr $1 HKCR "$0\shell\edit\command" ""
+ ReadRegStr $1 HKCR $0\shell\edit\command ""
${If} $1 == `"$INSTDIR\Inkscape.exe" "%1"`
- DeleteRegKey HKCR "$0\shell\edit\command"
+ DeleteRegKey HKCR $0\shell\edit\command
${EndIf}
ClearErrors
- ReadRegStr $1 HKCR "$0\shell\open\command" ""
+ ReadRegStr $1 HKCR $0\shell\open\command ""
${If} $1 == `"$INSTDIR\Inkscape.exe" "%1"`
- DeleteRegKey HKCR "$0\shell\open\command"
+ DeleteRegKey HKCR $0\shell\open\command
${EndIf}
- DeleteRegKey HKCR "$0\shell\${PRODUCT_NAME}"
- DeleteRegKey /ifempty HKCR "$0\shell\edit"
- DeleteRegKey /ifempty HKCR "$0\shell\open"
- DeleteRegKey /ifempty HKCR "$0\shell"
- DeleteRegKey /ifempty HKCR "$0"
- DeleteRegKey /ifempty HKCR ".$3"
+ DeleteRegKey HKCR $0\shell\Inkscape
+ DeleteRegKey /ifempty HKCR $0\shell\edit
+ DeleteRegKey /ifempty HKCR $0\shell\open
+ DeleteRegKey /ifempty HKCR $0\shell
+ DeleteRegKey /ifempty HKCR $0
+ DeleteRegKey /ifempty HKCR .$3
${EndIf}
${Next}
SetShellVarContext all
- DeleteRegKey SHCTX "${PRODUCT_DIR_REGKEY}"
- DeleteRegKey SHCTX "${PRODUCT_UNINST_KEY}"
- Delete "$DESKTOP\Inkscape.lnk"
- Delete "$QUICKLAUNCH\Inkscape.lnk"
- Delete "$SMPROGRAMS\Inkscape.lnk"
+ DeleteRegKey SHCTX "${INSTDIR_KEY}"
+ DeleteRegKey SHCTX "${UNINST_KEY}"
+ Delete $DESKTOP\Inkscape.lnk
+ Delete $QUICKLAUNCH\Inkscape.lnk
+ Delete $SMPROGRAMS\Inkscape.lnk
;just in case they are still there
Delete "$SMPROGRAMS\Inkscape\Uninstall Inkscape.lnk"
- Delete "$SMPROGRAMS\Inkscape\Inkscape.lnk"
- RMDir "$SMPROGRAMS\Inkscape"
+ Delete $SMPROGRAMS\Inkscape\Inkscape.lnk
+ RMDir $SMPROGRAMS\Inkscape
SetShellVarContext current
- DeleteRegKey SHCTX "${PRODUCT_DIR_REGKEY}"
- DeleteRegKey SHCTX "${PRODUCT_UNINST_KEY}"
- Delete "$DESKTOP\Inkscape.lnk"
- Delete "$QUICKLAUNCH\Inkscape.lnk"
- Delete "$SMPROGRAMS\Inkscape.lnk"
+ DeleteRegKey SHCTX "${INSTDIR_KEY}"
+ DeleteRegKey SHCTX "${UNINST_KEY}"
+ Delete $DESKTOP\Inkscape.lnk
+ Delete $QUICKLAUNCH\Inkscape.lnk
+ Delete $SMPROGRAMS\Inkscape.lnk
;just in case they are still there
Delete "$SMPROGRAMS\Inkscape\Uninstall Inkscape.lnk"
- Delete "$SMPROGRAMS\Inkscape\Inkscape.lnk"
- RMDir "$SMPROGRAMS\Inkscape"
+ Delete $SMPROGRAMS\Inkscape\Inkscape.lnk
+ RMDir $SMPROGRAMS\Inkscape
InitPluginsDir
SetPluginUnload manual
ClearErrors
FileOpen $0 $INSTDIR\uninstall.log r
${If} ${Errors} ;else uninstallnotfound
- MessageBox MB_OK|MB_ICONEXCLAMATION "$(lng_UninstallLogNotFound)" /SD IDOK
+ MessageBox MB_OK|MB_ICONEXCLAMATION "$(UninstallLogNotFound)" /SD IDOK
${Else}
${Do}
ClearErrors
; $3 = MD5 when installed, then deletion choice
; $filename = file
; $5 = MD5 now
- ; $6 = "always"/"never" remove files touched by user
+ ; $6 = always/never remove files touched by user
${If} ${FileExists} $filename
- ${If} $6 == "always"
+ ${If} $6 == always
StrCpy $3 2
${Else}
md5dll::GetMD5File /NOUNLOAD $filename
Pop $5 ;md5 of file
- ${If} $3 != $5
- ${AndIf} $6 != "never"
+ ${If} $3 == $5
+ StrCpy $3 1 ; yes
+ ${ElseIf} $6 != never
; the md5 sums does not match so we ask
- messagebox::show MB_DEFBUTTON3|MB_TOPMOST "" "0,103" \
- "$(lng_FileChanged)" "$(lng_Yes)" "$(lng_AlwaysYes)" "$(lng_No)" "$(lng_AlwaysNo)"
+ messagebox::show MB_DEFBUTTON3|MB_TOPMOST "" 0,103 \
+ "$(FileChanged)" "$(Yes)" "$(AlwaysYes)" "$(No)" "$(AlwaysNo)"
Pop $3
- ${IfThen} $3 = 2 ${|} StrCpy $6 "always" ${|}
- ${IfThen} $3 = 4 ${|} StrCpy $6 "never" ${|}
+ ${IfThen} $3 = 2 ${|} StrCpy $6 always ${|}
+ ${IfThen} $3 = 4 ${|} StrCpy $6 never ${|}
${EndIf}
${EndIf}
${Loop}
${EndIf}
FileClose $0
- Delete "$INSTDIR\uninstall.log"
- Delete "$INSTDIR\uninstall.exe"
+ Delete $INSTDIR\uninstall.log
+ Delete $INSTDIR\uninstall.exe
; remove empty directories
- RMDir "$INSTDIR\data"
- RMDir "$INSTDIR\doc"
- RMDir "$INSTDIR\modules"
- RMDir "$INSTDIR\plugins"
+ RMDir $INSTDIR\lib\locale
+ RMDir $INSTDIR\lib
+ RMDir $INSTDIR\data
+ RMDir $INSTDIR\doc
+ RMDir $INSTDIR\modules
+ RMDir $INSTDIR\plugins
RMDir $INSTDIR
SetAutoClose false
!endif
-SectionEnd
+SectionEnd ; Uninstall }}}
+; }}}
+
+; This file has been optimised for use in Vim with folding.
+; (If you can't cope, :set nofoldenable) vim:fen:fdm=marker