index 3bc6ea9e922f8eb272fae23ced3ce894891eff8f..6a9b7d736e204d5b4c2d2fcb93a3b716a8a7e016 100644 (file)
; DEFINES
; #######################################
!define PRODUCT_NAME "Inkscape"
; DEFINES
; #######################################
!define PRODUCT_NAME "Inkscape"
-!define PRODUCT_VERSION "0.43+devel"
+!define PRODUCT_VERSION "0.45+devel"
!define PRODUCT_PUBLISHER "Inkscape Organization"
!define PRODUCT_WEB_SITE "http://www.inkscape.org"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\inkscape.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_PUBLISHER "Inkscape Organization"
!define PRODUCT_WEB_SITE "http://www.inkscape.org"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\inkscape.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
+;!define UNINST_EXE "uninstall.exe"
!define MUI_HEADERIMAGE_BITMAP "header.bmp"
!define MUI_COMPONENTSPAGE_SMALLDESC
!define MUI_HEADERIMAGE_BITMAP "header.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.
+
+!define INSTDIR_REG_ROOT "HKLM"
+!define INSTDIR_REG_KEY ${PRODUCT_UNINST_KEY}
+
+;include the Uninstall log header
+!include AdvUninstLog.nsh
+
+;Specify the preferred uninstaller operation mode, either unattended or interactive.
+;You have to type either !insertmacro UNATTENDED_UNINSTALL, or !insertmacro INTERACTIVE_UNINSTALL.
+;Be aware only one of the following two macros has to be inserted, neither both, neither none.
+
+;!insertmacro UNATTENDED_UNINSTALL
+!insertmacro INTERACTIVE_UNINSTALL
+
+!addplugindir .
+!include "FileFunc.nsh"
+!insertmacro un.GetParent
+
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; Language files
!include "english.nsh"
; Language files
!include "english.nsh"
-;!include "catalan.nsh"
+!include "breton.nsh"
+!include "catalan.nsh"
!include "czech.nsh"
!include "czech.nsh"
-;!include "french.nsh"
+!include "finnish.nsh"
+!include "french.nsh"
+!include "galician.nsh"
!include "german.nsh"
!include "italian.nsh"
!include "german.nsh"
!include "italian.nsh"
-;!include "polish.nsh"
+!include "japanese.nsh"
+!include "polish.nsh"
+!include "russian.nsh"
+!include "slovak.nsh"
+!include "slovenian.nsh"
+!include "spanish.nsh"
ReserveFile "inkscape.nsi.uninstall"
ReserveFile "inkscape.nsi.uninstall"
+ReserveFile "${NSISDIR}\Plugins\UserInfo.dll"
+!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ;InstallOptions
; #######################################
; #######################################
!macro Language polng lng
SectionIn 1 2 3
SetOutPath $INSTDIR
!macro Language polng lng
SectionIn 1 2 3
SetOutPath $INSTDIR
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
File /nonfatal /a "..\..\inkscape\*.${lng}.txt"
File /nonfatal /a "..\..\inkscape\*.${lng}.txt"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SetOutPath $INSTDIR\locale
SetOutPath $INSTDIR\locale
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
File /nonfatal /a /r "..\..\inkscape\locale\${polng}"
File /nonfatal /a /r "..\..\inkscape\locale\${polng}"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SetOutPath $INSTDIR\lib\locale
SetOutPath $INSTDIR\lib\locale
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
File /nonfatal /a /r "..\..\inkscape\lib\locale\${polng}"
File /nonfatal /a /r "..\..\inkscape\lib\locale\${polng}"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
+ SetOutPath $INSTDIR\share\clipart
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
+ File /nonfatal /a /r "..\..\inkscape\share\clipart\*.${polng}.svg"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
; the keyboard tables
SetOutPath $INSTDIR\share\screens
; the keyboard tables
SetOutPath $INSTDIR\share\screens
- File /nonfatal /a /r "..\..\inkscape\share\screens\keys.${polng}.svg"
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
+ File /nonfatal /a /r "..\..\inkscape\share\screens\*.${polng}.svg"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SetOutPath $INSTDIR\share\templates
SetOutPath $INSTDIR\share\templates
- File /nonfatal /a /r "..\..\inkscape\share\templates\default.${polng}.svg"
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
+ File /nonfatal /a /r "..\..\inkscape\share\templates\*.${polng}.svg"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SetOutPath $INSTDIR\doc
SetOutPath $INSTDIR\doc
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
File /nonfatal /a /r "..\..\inkscape\doc\keys.${polng}.xml"
File /nonfatal /a /r "..\..\inkscape\doc\keys.${polng}.html"
File /nonfatal /a /r "..\..\inkscape\doc\keys.${polng}.xml"
File /nonfatal /a /r "..\..\inkscape\doc\keys.${polng}.html"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SectionGetFlags ${SecTutorials} $R1
IntOp $R1 $R1 & ${SF_SELECTED}
IntCmp $R1 ${SF_SELECTED} 0 skip_tutorials
SetOutPath $INSTDIR\share\tutorials
SectionGetFlags ${SecTutorials} $R1
IntOp $R1 $R1 & ${SF_SELECTED}
IntCmp $R1 ${SF_SELECTED} 0 skip_tutorials
SetOutPath $INSTDIR\share\tutorials
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
File /nonfatal /a "..\..\inkscape\share\tutorials\*.${polng}.*"
File /nonfatal /a "..\..\inkscape\share\tutorials\*.${polng}.*"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
skip_tutorials:
!macroend
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
skip_tutorials:
!macroend
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
+;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Delete prefs
+; code taken from the vlc project
+;;;;;;;;;;;;;;;;;;;;;;;;;;
+!macro delprefs
+ StrCpy $0 0
+ DetailPrint "Delete personal preferences ..."
+ DetailPrint "try to find all users ..."
+ delprefs-Loop:
+ ; 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
+ EnumRegKey $1 HKU "" $0
+ StrCmp $1 "" delprefs-End
+ IntOp $0 $0 + 1
+ ReadRegStr $2 HKU "$1\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" AppData
+ StrCmp $2 "" delprefs-Loop
+ DetailPrint "$2\Inkscape will be removed"
+ Delete "$2\Inkscape\preferences.xml"
+ Delete "$2\Inkscape\extension-errors.log"
+ RMDir "$2\Inkscape"
+ Goto delprefs-Loop
+ delprefs-End:
+!macroend
;--------------------------------
; Installer Sections
;--------------------------------
; Installer Sections
-
Section -removeInkscape
; check for an old installation and clean that dlls and stuff
Section -removeInkscape
; check for an old installation and clean that dlls and stuff
- ClearErrors
- IfFileExists $INSTDIR\etc 0 doDeleteLib
- DetailPrint "$INSTDIR\etc exists, will be removed"
- RmDir /r $INSTDIR\etc
- IfErrors 0 +4
- DetailPrint "fatal: failed to delete $INSTDIR\etc"
- DetailPrint "aborting installation"
- Abort
- doDeleteLib:
-
- ClearErrors
- IfFileExists $INSTDIR\lib 0 doDeleteLocale
- DetailPrint "$INSTDIR\lib exists, will be removed"
- RmDir /r $INSTDIR\lib
- IfErrors 0 +4
- DetailPrint "fatal: failed to delete $INSTDIR\lib"
- DetailPrint "aborting installation"
- Abort
- doDeleteLocale:
-
- ClearErrors
- IfFileExists $INSTDIR\locale 0 doDeleteDll
- DetailPrint "$INSTDIR\locale exists, will be removed"
- RmDir /r $INSTDIR\locale
- IfErrors 0 +4
- DetailPrint "fatal: failed to delete $INSTDIR\locale"
- DetailPrint "aborting installation"
- Abort
- doDeleteDll:
- ClearErrors
- FindFirst $0 $1 $INSTDIR\*.dll
- FindNextLoop:
- StrCmp $1 "" FindNextDone
- DetailPrint "$INSTDIR\$1 exists, will be removed"
- Delete $INSTDIR\$1
- IfErrors 0 +4
- DetailPrint "fatal: failed to delete $INSTDIR\$1"
- DetailPrint "aborting installation"
- Abort
+FindFirstINSTDIR:
+ FindFirst $0 $1 $INSTDIR\*.*
+FindINSTDIR:
+ StrCmp $1 "" FindNextDoneINSTDIR
+ StrCmp $1 "." FindNextINSTDIR
+ StrCmp $1 ".." FindNextINSTDIR
+ Goto FoundSomethingINSTDIR
+FindNextINSTDIR:
FindNext $0 $1
FindNext $0 $1
- Goto FindNextLoop
- FindNextDone:
+ Goto FindINSTDIR
+FoundSomethingINSTDIR:
+ MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION "$(lng_ClearDirectoryBefore)" /SD IDCANCEL IDRETRY FindFirstINSTDIR
+ Quit
+FindNextDoneINSTDIR:
+
+ ;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"
+ SetShellVarContext all
+ Delete "$SMPROGRAMS\Inkscape\Uninstall Inkscape.lnk"
+ Delete "$SMPROGRAMS\Inkscape\Inkscape.lnk"
+ RMDir "$SMPROGRAMS\Inkscape"
+ Delete "$SMPROGRAMS\Inkscape.lnk"
+
SectionEnd
Section $(lng_Core) SecCore
SectionEnd
Section $(lng_Core) SecCore
SectionIn 1 2 3 RO
SetOutPath $INSTDIR
SectionIn 1 2 3 RO
SetOutPath $INSTDIR
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
SetOverwrite on
SetAutoClose false
SetOverwrite on
SetAutoClose false
File /a "..\..\inkscape\COPYING"
File /a "..\..\inkscape\COPYING.LIB"
File /a "..\..\inkscape\NEWS"
File /a "..\..\inkscape\COPYING"
File /a "..\..\inkscape\COPYING.LIB"
File /a "..\..\inkscape\NEWS"
- File /a "..\..\inkscape\HACKING.txt"
+ 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 /a "..\..\inkscape\README"
- File /a "..\..\inkscape\README.txt"
+ 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\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
; 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.svg"
- File /a "..\..\inkscape\share\clipart\inkscape.logo.classic.svg"
+ ;File /a "..\..\inkscape\share\clipart\inkscape.logo.classic.svg"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SetOutPath $INSTDIR\share\extensions
SetOutPath $INSTDIR\share\extensions
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
File /a "..\..\inkscape\share\extensions\pdf_output.inx.txt"
File /a "..\..\inkscape\share\extensions\pdf_output_via_gs_on_win32.inx.txt"
File /a "..\..\inkscape\share\extensions\pdf_output.inx.txt"
File /a "..\..\inkscape\share\extensions\pdf_output_via_gs_on_win32.inx.txt"
+ !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"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SetOutPath $INSTDIR\modules
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
SetOutPath $INSTDIR\python
- File /nonfatal /a /r "..\..\inkscape\python\*.*"
-
-
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
+ File /nonfatal /a /r "..\..\inkscape\python\*.*"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SectionEnd
Section $(lng_GTKFiles) SecGTK
SectionEnd
Section $(lng_GTKFiles) SecGTK
SectionIn 1 2 3 RO
SetOutPath $INSTDIR
SectionIn 1 2 3 RO
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"
SetOverwrite on
File /a /r "..\..\inkscape\*.dll"
File /a /r /x "locale" "..\..\inkscape\lib"
File /a /r "..\..\inkscape\etc"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SectionEnd
Section $(lng_Alluser) SecAlluser
; disable this option in Win95/Win98/WinME
SectionIn 1 2 3
StrCpy $MultiUser "1"
SectionEnd
Section $(lng_Alluser) SecAlluser
; disable this option in Win95/Win98/WinME
SectionIn 1 2 3
StrCpy $MultiUser "1"
+ StrCmp $MultiUser "1" "" SingleUser
+ DetailPrint "admin mode, registry root will be HKLM"
+ SetShellVarContext all
+ Goto endSingleUser
+ SingleUser:
+ DetailPrint "single user mode, registry root will be HKCU"
+ SetShellVarContext current
+ endSingleUser:
SectionEnd
SectionGroup $(lng_Shortcuts) SecShortcuts
SectionEnd
SectionGroup $(lng_Shortcuts) SecShortcuts
-Section $(lng_Desktop) SecDesktop
- SectionIn 1 2 3
+Section /o $(lng_Desktop) SecDesktop
ClearErrors
CreateShortCut "$DESKTOP\Inkscape.lnk" "$INSTDIR\inkscape.exe"
IfErrors 0 +2
DetailPrint "Uups! Problems creating desktop shortcuts"
SectionEnd
ClearErrors
CreateShortCut "$DESKTOP\Inkscape.lnk" "$INSTDIR\inkscape.exe"
IfErrors 0 +2
DetailPrint "Uups! Problems creating desktop shortcuts"
SectionEnd
-Section $(lng_Quicklaunch) SecQuicklaunch
- SectionIn 1 2 3
+Section /o $(lng_Quicklaunch) SecQuicklaunch
ClearErrors
StrCmp $QUICKLAUNCH $TEMP +2
CreateShortCut "$QUICKLAUNCH\Inkscape.lnk" "$INSTDIR\inkscape.exe"
ClearErrors
StrCmp $QUICKLAUNCH $TEMP +2
CreateShortCut "$QUICKLAUNCH\Inkscape.lnk" "$INSTDIR\inkscape.exe"
SectionGroupEnd
SectionGroupEnd
+Section /o $(lng_DeletePrefs) SecPrefs
+ !insertmacro delprefs
+SectionEnd
+
SectionGroup $(lng_Addfiles) SecAddfiles
Section $(lng_Examples) SecExamples
SectionIn 1 2
SetOutPath $INSTDIR\share
SectionGroup $(lng_Addfiles) SecAddfiles
Section $(lng_Examples) SecExamples
SectionIn 1 2
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
SectionEnd
Section $(lng_Tutorials) SecTutorials
SectionIn 1 2
SetOutPath $INSTDIR\share
SectionEnd
Section $(lng_Tutorials) SecTutorials
SectionIn 1 2
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
SectionEnd
SectionGroupEnd
SectionEnd
SectionGroupEnd
!insertmacro Language am am
SectionEnd
!insertmacro Language am am
SectionEnd
+Section $(lng_ar) SecArabic
+ !insertmacro Language ar ar
+SectionEnd
+
Section $(lng_az) SecAzerbaijani
!insertmacro Language az az
SectionEnd
Section $(lng_az) SecAzerbaijani
!insertmacro Language az az
SectionEnd
!insertmacro Language be be
SectionEnd
!insertmacro Language be be
SectionEnd
+Section $(lng_bg) SecBulgarian
+ !insertmacro Language bg bg
+SectionEnd
+
+Section $(lng_bn) SecBengali
+ !insertmacro Language bn bn
+SectionEnd
+
+Section $(lng_br) SecBreton
+ !insertmacro Language br br
+SectionEnd
+
Section $(lng_ca) SecCatalan
!insertmacro Language ca ca
SectionEnd
Section $(lng_ca) SecCatalan
!insertmacro Language ca ca
SectionEnd
+Section $(lng_ca@valencia) SecCatalanValencia
+ !insertmacro Language ca@valencia ca@valencia
+SectionEnd
+
Section $(lng_cs) SecCzech
!insertmacro Language cs cs
SectionEnd
Section $(lng_cs) SecCzech
!insertmacro Language cs cs
SectionEnd
!insertmacro Language 'de' 'de'
SectionEnd
!insertmacro Language 'de' 'de'
SectionEnd
+Section $(lng_dz) SecDzongkha
+ !insertmacro Language dz dz
+SectionEnd
+
Section $(lng_el) SecGreek
!insertmacro Language el el
SectionEnd
Section $(lng_el) SecGreek
!insertmacro Language el el
SectionEnd
SectionIn 1 2 3 RO
SectionEnd
SectionIn 1 2 3 RO
SectionEnd
+Section $(lng_en_AU) SecEnglishAustralian
+ !insertmacro Language en_AU en_AU
+SectionEnd
+
+Section $(lng_en_CA) SecEnglishCanadian
+ !insertmacro Language en_CA en_CA
+SectionEnd
+
+Section $(lng_en_GB) SecEnglishBritain
+ !insertmacro Language en_GB en_GB
+SectionEnd
+
+Section $(lng_en_US@piglatin) SecEnglishPiglatin
+ !insertmacro Language en_US@piglatin en_US@Piglatin
+SectionEnd
+
+Section $(lng_eo) SecEsperanto
+ !insertmacro Language eo eo
+SectionEnd
+
Section $(lng_es) SecSpanish
!insertmacro Language 'es' 'es'
SectionEnd
Section $(lng_es) SecSpanish
!insertmacro Language 'es' 'es'
SectionEnd
!insertmacro Language et et
SectionEnd
!insertmacro Language et et
SectionEnd
+Section $(lng_eu) SecBasque
+ !insertmacro Language eu eu
+SectionEnd
+
Section $(lng_fr) SecFrench
!insertmacro Language 'fr' 'fr'
SectionEnd
Section $(lng_fr) SecFrench
!insertmacro Language 'fr' 'fr'
SectionEnd
+Section $(lng_fi) SecFinnish
+ !insertmacro Language 'fi' 'fi'
+SectionEnd
+
Section $(lng_ga) SecIrish
!insertmacro Language ga ga
SectionEnd
Section $(lng_ga) SecIrish
!insertmacro Language ga ga
SectionEnd
SectionIn 1 2 3
SectionEnd
SectionIn 1 2 3
SectionEnd
+Section $(lng_he) SecHebrew
+ !insertmacro Language he he
+ SectionIn 1 2 3
+SectionEnd
+
+Section $(lng_hr) SecCroatian
+ !insertmacro Language hr hr
+ SectionIn 1 2 3
+SectionEnd
+
Section $(lng_hu) SecHungarian
!insertmacro Language hu hu
SectionIn 1 2 3
SectionEnd
Section $(lng_hu) SecHungarian
!insertmacro Language hu hu
SectionIn 1 2 3
SectionEnd
+Section $(lng_id) SecIndonesian
+ !insertmacro Language id id
+ SectionIn 1 2 3
+SectionEnd
+
Section $(lng_it) SecItalian
!insertmacro Language it it
SectionIn 1 2 3
Section $(lng_it) SecItalian
!insertmacro Language it it
SectionIn 1 2 3
!insertmacro Language 'ja' 'jp'
SectionEnd
!insertmacro Language 'ja' 'jp'
SectionEnd
+Section $(lng_km) SecKhmer
+ !insertmacro Language km km
+SectionEnd
+
Section $(lng_ko) SecKorean
!insertmacro Language 'ko' 'ko'
SectionEnd
Section $(lng_ko) SecKorean
!insertmacro Language 'ko' 'ko'
SectionEnd
!insertmacro Language 'lt' 'lt'
SectionEnd
!insertmacro Language 'lt' 'lt'
SectionEnd
+Section $(lng_mn) SecMongolian
+ !insertmacro Language mn mn
+SectionEnd
+
Section $(lng_mk) SecMacedonian
!insertmacro Language mk mk
SectionEnd
Section $(lng_mk) SecMacedonian
!insertmacro Language mk mk
SectionEnd
!insertmacro Language nb nb
SectionEnd
!insertmacro Language nb nb
SectionEnd
+Section $(lng_ne) SecNepali
+ !insertmacro Language ne ne
+SectionEnd
+
Section $(lng_nl) SecDutch
!insertmacro Language nl nl
SectionEnd
Section $(lng_nl) SecDutch
!insertmacro Language nl nl
SectionEnd
!insertmacro Language pt_BR pt_BR
SectionEnd
!insertmacro Language pt_BR pt_BR
SectionEnd
+Section $(lng_ro) SecRomanian
+ !insertmacro Language ro ro
+SectionEnd
+
Section $(lng_ru) SecRussian
!insertmacro Language ru ru
SectionEnd
Section $(lng_ru) SecRussian
!insertmacro Language ru ru
SectionEnd
+Section $(lng_rw) SecKinyarwanda
+ !insertmacro Language rw rw
+SectionEnd
+
Section $(lng_sk) SecSlovak
!insertmacro Language sk sk
SectionEnd
Section $(lng_sk) SecSlovak
!insertmacro Language sk sk
SectionEnd
!insertmacro Language sl sl
SectionEnd
!insertmacro Language sl sl
SectionEnd
+Section $(lng_sq) SecAlbanian
+ !insertmacro Language sq sq
+SectionEnd
+
Section $(lng_sr) SecSerbian
!insertmacro Language sr sr
SectionEnd
Section $(lng_sr) SecSerbian
!insertmacro Language sr sr
SectionEnd
-Section $(lng_sr@Latn) SecSerbianLatin
- !insertmacro Language 'sr@Latn' 'sr@Latn'
+Section $(lng_sr@latin) SecSerbianLatin
+ !insertmacro Language 'sr@latin' 'sr@latin'
SectionEnd
Section $(lng_sv) SecSwedish
!insertmacro Language sv sv
SectionEnd
SectionEnd
Section $(lng_sv) SecSwedish
!insertmacro Language sv sv
SectionEnd
+Section $(lng_th) SecThai
+ !insertmacro Language th th
+SectionEnd
+
Section $(lng_tr) SecTurkish
!insertmacro Language tr tr
SectionEnd
Section $(lng_tr) SecTurkish
!insertmacro Language tr tr
SectionEnd
!insertmacro Language uk uk
SectionEnd
!insertmacro Language uk uk
SectionEnd
+Section $(lng_vi) SecVietnamese
+ !insertmacro Language vi vi
+SectionEnd
+
Section $(lng_zh_CN) SecChineseSimplified
!insertmacro Language zh_CN zh_CN
SectionEnd
Section $(lng_zh_CN) SecChineseSimplified
!insertmacro Language zh_CN zh_CN
SectionEnd
Section -FinalizeInstallation
Section -FinalizeInstallation
+ DetailPrint "finalize installation"
StrCmp $MultiUser "1" "" SingleUser
DetailPrint "admin mode, registry root will be HKLM"
SetShellVarContext all
StrCmp $MultiUser "1" "" SingleUser
DetailPrint "admin mode, registry root will be HKLM"
SetShellVarContext all
; start menu entries
ClearErrors
; start menu entries
ClearErrors
- CreateDirectory "$SMPROGRAMS\Inkscape"
- CreateShortCut "$SMPROGRAMS\Inkscape\Inkscape.lnk" "$INSTDIR\inkscape.exe"
- CreateShortCut "$SMPROGRAMS\Inkscape\Uninstall Inkscape.lnk" "$INSTDIR\uninst.exe"
+ CreateShortCut "$SMPROGRAMS\Inkscape.lnk" "$INSTDIR\inkscape.exe"
IfErrors 0 +2
DetailPrint "fatal: failed to write to start menu info"
; uninstall settings
ClearErrors
IfErrors 0 +2
DetailPrint "fatal: failed to write to start menu info"
; uninstall settings
ClearErrors
- WriteUninstaller "$INSTDIR\uninst.exe"
- WriteRegExpandStr SHCTX "${PRODUCT_UNINST_KEY}" "UninstallString" '"$INSTDIR\uninst.exe"'
+ ; 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"
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"
WriteRegDWORD SHCTX "${PRODUCT_UNINST_KEY}" "NoRepair" "1"
IfErrors 0 +2
DetailPrint "fatal: failed to write to registry un-installation info"
WriteRegDWORD SHCTX "${PRODUCT_UNINST_KEY}" "NoRepair" "1"
IfErrors 0 +2
DetailPrint "fatal: failed to write to registry un-installation info"
+
+ ;create/update log always within .onInstSuccess function
+ !insertmacro UNINSTALL.LOG_UPDATE_INSTALL
+
+ DetailPrint "create MD5 sums"
+ ClearErrors
+ FileOpen $0 $INSTDIR\uninstall.dat r
+ FileOpen $9 $INSTDIR\uninstall.log w
+ IfErrors doneinstall
+readnextlineinstall:
+ ClearErrors
+ FileRead $0 $1
+ IfErrors doneinstall
+ StrCpy $1 $1 -2
+ ;DetailPrint $1
+ md5dll::GetMD5File /NOUNLOAD $1
+ Pop $2
+ ;DetailPrint $2
+ StrCmp $2 "" +2
+ FileWrite $9 "$2 $1$\r$\n"
+ Goto readnextlineinstall
+doneinstall:
+ FileClose $0
+ FileClose $9
+ ; this file is not needed anymore
+ Delete $INSTDIR\uninstall.dat
+
SectionEnd
; Last the Descriptions
SectionEnd
; Last the Descriptions
!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 ${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 ${SecAddfiles} $(lng_AddfilesDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${SecExamples} $(lng_ExamplesDesc)
!insertmacro MUI_DESCRIPTION_TEXT ${SecTutorials} $(lng_TutorialsDesc)
!macroend
Function .onInit
!macroend
Function .onInit
+ ;prepare log always within .onInit function
+ !insertmacro UNINSTALL.LOG_PREPARE_INSTALL
+
;Extract InstallOptions INI files
StrCpy $AskMultiUser "1"
StrCpy $MultiUser "0"
;Extract InstallOptions INI files
StrCpy $AskMultiUser "1"
StrCpy $MultiUser "0"
Pop $1
StrCmp $1 "Admin" info_done
Pop $1
StrCmp $1 "Admin" info_done
- MessageBox MB_OK|MB_ICONEXCLAMATION "$(lng_NO_ADMIN)"
-
+ MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(lng_NO_ADMIN)$(lng_OK_CANCEL_DESC)" /SD IDOK IDOK info_done IDCANCEL +1
+ Quit
+
Goto info_done
info_Win9x:
# This one means you don't need to care about admin or
# not admin because Windows 9x doesn't either
Goto info_done
info_Win9x:
# This one means you don't need to care about admin or
# not admin because Windows 9x doesn't either
- MessageBox MB_OK|MB_ICONEXCLAMATION $(lng_NOT_SUPPORTED)
-
+ MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(lng_NOT_SUPPORTED)$(lng_OK_CANCEL_DESC)" /SD IDOK IDOK info_done IDCANCEL +1
+ Quit
+
info_done:
;check for previous installation
info_done:
;check for previous installation
StrCmp $0 "" +1 +2
ReadRegStr $0 HKCU "${PRODUCT_DIR_REGKEY}" "User"
;check user if applicable
StrCmp $0 "" +1 +2
ReadRegStr $0 HKCU "${PRODUCT_DIR_REGKEY}" "User"
;check user if applicable
- StrCmp $0 "" +3
- StrCmp $0 $User +2
- MessageBox MB_OK|MB_ICONEXCLAMATION "$(lng_DIFFERENT_USER)"
-
+ StrCmp $0 "" diff_user_install_done
+ StrCmp $0 $User diff_user_install_done
+ MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(lng_DIFFERENT_USER)$(lng_OK_CANCEL_DESC)" /SD IDOK IDOK diff_user_install_done IDCANCEL +1
+ Quit
+ diff_user_install_done:
+
+ ; call uninstall first
+ ; code taken from the vlc project
+ ReadRegStr $R0 HKLM ${PRODUCT_UNINST_KEY} "UninstallString"
+ ReadRegStr $R1 HKLM ${PRODUCT_UNINST_KEY} "DisplayName"
+ StrCmp $R0 "" +1 +3
+ ReadRegStr $R0 HKCU ${PRODUCT_UNINST_KEY} "UninstallString"
+ ReadRegStr $R1 HKCU ${PRODUCT_UNINST_KEY} "DisplayName"
+ StrCmp $R0 "" uninstall_before_done
+
+ MessageBox MB_YESNO|MB_ICONEXCLAMATION $(lng_WANT_UNINSTALL_BEFORE) /SD IDNO IDNO uninstall_before_done
+ ;Run the uninstaller
+ ;uninst:
+ DetailPrint "execute $R0 in $INSTDIR"
+ ClearErrors
+ ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file
+ uninstall_before_done:
+
; proccess command line parameter
!insertmacro Parameter "GTK" ${SecGTK}
!insertmacro Parameter "SHORTCUTS" ${secShortcuts}
; proccess command line parameter
!insertmacro Parameter "GTK" ${SecGTK}
!insertmacro Parameter "SHORTCUTS" ${secShortcuts}
!insertmacro Parameter "QUICKLAUNCH" ${SecQUICKlaunch}
!insertmacro Parameter "SVGEDITOR" ${SecSVGWriter}
!insertmacro Parameter "CONTEXTMENUE" ${SecContextMenu}
!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 "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 "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" ${SecCatalan}
+ !insertmacro Parameter "ca@valencia" ${SecCatalanValencia}
!insertmacro Parameter "cs" ${SecCzech}
!insertmacro Parameter "da" ${SecDanish}
!insertmacro Parameter "de" ${SecGerman}
!insertmacro Parameter "cs" ${SecCzech}
!insertmacro Parameter "da" ${SecDanish}
!insertmacro Parameter "de" ${SecGerman}
+ !insertmacro Parameter "dz" ${SecDzongkha}
!insertmacro Parameter "el" ${SecGreek}
!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 "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 "fr" ${SecFrench}
!insertmacro Parameter "ga" ${SecIrish}
!insertmacro Parameter "gl" ${SecGallegan}
+ !insertmacro Parameter "he" ${SecHebrew}
+ !insertmacro Parameter "hr" ${SecCroatian}
!insertmacro Parameter "hu" ${SecHungarian}
!insertmacro Parameter "hu" ${SecHungarian}
+ !insertmacro Parameter "id" ${SecIndonesian}
!insertmacro Parameter "it" ${SecItalian}
!insertmacro Parameter "ja" ${SecJapanese}
!insertmacro Parameter "it" ${SecItalian}
!insertmacro Parameter "ja" ${SecJapanese}
+ !insertmacro Parameter "km" ${SecKhmer}
!insertmacro Parameter "ko" ${SecKorean}
!insertmacro Parameter "ko" ${SecKorean}
+ !insertmacro Parameter "lt" ${SecLithuanian}
!insertmacro Parameter "mk" ${SecMacedonian}
!insertmacro Parameter "mk" ${SecMacedonian}
+ !insertmacro Parameter "mn" ${SecMongolian}
!insertmacro Parameter "nb" ${SecNorwegianBokmal}
!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 "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 "ru" ${SecRussian}
+ !insertmacro Parameter "rw" ${SecKinyarwanda}
!insertmacro Parameter "sk" ${SecSlovak}
!insertmacro Parameter "sl" ${SecSlovenian}
!insertmacro Parameter "sk" ${SecSlovak}
!insertmacro Parameter "sl" ${SecSlovenian}
+ !insertmacro Parameter "sq" ${SecAlbanian}
!insertmacro Parameter "sr" ${SecSerbian}
!insertmacro Parameter "sr" ${SecSerbian}
- !insertmacro Parameter "sr@Latn" ${SecSerbianLatin}
+ !insertmacro Parameter "sr@latin" ${SecSerbianLatin}
!insertmacro Parameter "sv" ${SecSwedish}
!insertmacro Parameter "sv" ${SecSwedish}
+ !insertmacro Parameter "th" ${SecThai}
!insertmacro Parameter "tr" ${SecTurkish}
!insertmacro Parameter "uk" ${SecUkrainian}
!insertmacro Parameter "tr" ${SecTurkish}
!insertmacro Parameter "uk" ${SecUkrainian}
+ !insertmacro Parameter "vi" ${SecVietnamese}
!insertmacro Parameter "zh_CN" ${SecChineseSimplified}
!insertmacro Parameter "zh_TW" ${SecChineseTaiwan}
!insertmacro Parameter "zh_CN" ${SecChineseSimplified}
!insertmacro Parameter "zh_TW" ${SecChineseTaiwan}
/QUICKLAUNCH=(OFF/ON): quick launch icon$\r$\n \
/SVGEDITOR=(OFF/ON): default SVG editor$\r$\n \
/CONTEXTMENUE=(OFF/ON): context menue integration$\r$\n \
/QUICKLAUNCH=(OFF/ON): quick launch icon$\r$\n \
/SVGEDITOR=(OFF/ON): default SVG editor$\r$\n \
/CONTEXTMENUE=(OFF/ON): context menue integration$\r$\n \
+ /PREFERENCES=(OFF/ON): delete users preference files$\r$\n \
/ADDFILES=(OFF/ON): additional files$\r$\n \
/EXAMPLES=(OFF/ON): examples$\r$\n \
/TUTORIALS=(OFF/ON): tutorials$\r$\n \
/ADDFILES=(OFF/ON): additional files$\r$\n \
/EXAMPLES=(OFF/ON): examples$\r$\n \
/TUTORIALS=(OFF/ON): tutorials$\r$\n \
Function .onSelChange
FunctionEnd
Function .onSelChange
FunctionEnd
+
+Function .onInstSuccess
+
+FunctionEnd
+
; --------------------------------------------------
Function un.CustomPageUninstall
!insertmacro MUI_HEADER_TEXT "$(lng_UInstOpt)" "$(lng_UInstOpt1)"
; --------------------------------------------------
Function un.CustomPageUninstall
!insertmacro MUI_HEADER_TEXT "$(lng_UInstOpt)" "$(lng_UInstOpt1)"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "inkscape.nsi.uninstall" "Field 1" "Text" "$APPDATA\Inkscape\preferences.xml"
+ !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"
DetailPrint "keepfiles = $MultiUser"
!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"
DetailPrint "keepfiles = $MultiUser"
- ;MessageBox MB_OK "adminmode = $MultiUser MultiUserOS = $askMultiUser"
+ ;MessageBox MB_OK "adminmode = $MultiUser MultiUserOS = $askMultiUser"
FunctionEnd
Function un.onInit
FunctionEnd
Function un.onInit
-
+ ;begin uninstall, could be added on top of uninstall section instead
+ ;!insertmacro UNINSTALL.LOG_BEGIN_UNINSTALL
+ IfFileExists $INSTDIR\uninstall.log uninstalllogpresent
+ MessageBox MB_OK|MB_ICONEXCLAMATION "$(lng_UninstallLogNotFound)" /SD IDOK
+ Quit
+uninstalllogpresent:
ClearErrors
StrCpy $User ""
UserInfo::GetName
ClearErrors
StrCpy $User ""
UserInfo::GetName
; Test if this was a multiuser installation
ReadRegStr $0 HKLM "${PRODUCT_DIR_REGKEY}" ""
; Test if this was a multiuser installation
ReadRegStr $0 HKLM "${PRODUCT_DIR_REGKEY}" ""
- StrCmp $0 "$INSTDIR\inkscape.exe" 0 +5
+ StrCmp $0 "$INSTDIR\inkscape.exe" 0 hkcu_user_uninstall
ReadRegStr $MultiUser HKLM "${PRODUCT_DIR_REGKEY}" "MultiUser"
ReadRegStr $askMultiUser HKLM "${PRODUCT_DIR_REGKEY}" "askMultiUser"
ReadRegStr $0 HKLM "${PRODUCT_DIR_REGKEY}" "User"
ReadRegStr $MultiUser HKLM "${PRODUCT_DIR_REGKEY}" "MultiUser"
ReadRegStr $askMultiUser HKLM "${PRODUCT_DIR_REGKEY}" "askMultiUser"
ReadRegStr $0 HKLM "${PRODUCT_DIR_REGKEY}" "User"
- Goto +4
+ Goto check_user_uninstall
+ hkcu_user_uninstall:
ReadRegStr $MultiUser HKCU "${PRODUCT_DIR_REGKEY}" "MultiUser"
ReadRegStr $askMultiUser HKCU "${PRODUCT_DIR_REGKEY}" "askMultiUser"
ReadRegStr $0 HKCU "${PRODUCT_DIR_REGKEY}" "User"
;check user if applicable
ReadRegStr $MultiUser HKCU "${PRODUCT_DIR_REGKEY}" "MultiUser"
ReadRegStr $askMultiUser HKCU "${PRODUCT_DIR_REGKEY}" "askMultiUser"
ReadRegStr $0 HKCU "${PRODUCT_DIR_REGKEY}" "User"
;check user if applicable
- StrCmp $0 "" +3
- StrCmp $0 $User +2
- MessageBox MB_OK|MB_ICONEXCLAMATION "$(lng_DIFFERENT_USER)"
+ check_user_uninstall:
+ StrCmp $0 "" diff_user_uninstall_done
+ StrCmp $0 $User diff_user_uninstall_done
+ MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(lng_DIFFERENT_USER)$(lng_OK_CANCEL_DESC)" /SD IDOK IDOK diff_user_uninstall_done IDCANCEL +1
+ Quit
+ diff_user_uninstall_done:
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "inkscape.nsi.uninstall"
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "inkscape.nsi.uninstall"
FunctionEnd
FunctionEnd
+# removes a file and if the directory is empty afterwards the directory also
+# push md5, push filename, call unremovefilename
+Function un.RemoveFile
+ Var /Global filename
+ Var /Global md5sum
+ Var /Global ismd5sum
+ Var /Global removenever ; never remove a touched file
+ Var /Global removealways ; always remove files touched by user
+ Pop $filename
+ Pop $md5sum
+
+ IfFileExists $filename +2 0
+ Return
+ StrCmp $removealways "always" unremovefile 0
+ md5dll::GetMD5File /NOUNLOAD $filename
+ Pop $ismd5sum ;md5 of file
+ StrCmp $md5sum $ismd5sum unremovefile 0
+ ;DetailPrint "uups MD5 does not match"
+ StrCmp $removenever "never" 0 +2
+ Return
+ ; 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)"
+ ;DetailPrint "messagebox finished"
+ Pop $md5sum
+ ;DetailPrint "messagebox call returned... $md5sum"
+ StrCmp $md5sum "1" unremovefile 0 ; Yes
+ StrCmp $md5sum "2" 0 unremoveno ; Yes always
+ StrCpy $removealways "always"
+ ;DetailPrint "removealways"
+ Goto unremovefile
+unremoveno:
+ StrCmp $md5sum "3" 0 unremovenever ; No
+ ;DetailPrint "No remove"
+ Return
+unremovenever:
+ StrCpy $removenever "never"
+ ;DetailPrint "removenever"
+ Return
+unremovefile:
+ ;DetailPrint "removefile"
+ ClearErrors
+ Delete $filename
+ ;now recursivly remove the path
+unrmdir:
+ ${un.GetParent} $filename $filename
+ IfErrors 0 +2
+ Return
+ RMDir $filename
+ IfErrors +2
+ Goto unrmdir
+FunctionEnd
+
Section Uninstall
; remove personal settings
Delete "$APPDATA\Inkscape\extension-errors.log"
StrCmp $MultiUser "0" 0 endPurge ; multiuser assigned in dialog
DetailPrint "purge personal settings in $APPDATA\Inkscape"
Section Uninstall
; remove personal settings
Delete "$APPDATA\Inkscape\extension-errors.log"
StrCmp $MultiUser "0" 0 endPurge ; multiuser assigned in dialog
DetailPrint "purge personal settings in $APPDATA\Inkscape"
- RMDir /r "$APPDATA\Inkscape"
- endPurge:
+ ;RMDir /r "$APPDATA\Inkscape"
+ !insertmacro delprefs
+ endPurge:
; Remove file associations for svg editor
DetailPrint "removing file associations for svg editor"
; Remove file associations for svg editor
DetailPrint "removing file associations for svg editor"
DetailPrint "removing shortcuts"
Delete "$DESKTOP\Inkscape.lnk"
Delete "$QUICKLAUNCH\Inkscape.lnk"
DetailPrint "removing shortcuts"
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\Uninstall Inkscape.lnk"
Delete "$SMPROGRAMS\Inkscape\Inkscape.lnk"
RMDir "$SMPROGRAMS\Inkscape"
DetailPrint "removing shortcuts"
Delete "$DESKTOP\Inkscape.lnk"
Delete "$QUICKLAUNCH\Inkscape.lnk"
DetailPrint "removing shortcuts"
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"
DetailPrint "removing uninstall info"
Delete "$SMPROGRAMS\Inkscape\Uninstall Inkscape.lnk"
Delete "$SMPROGRAMS\Inkscape\Inkscape.lnk"
RMDir "$SMPROGRAMS\Inkscape"
DetailPrint "removing uninstall info"
- RMDir /r "$INSTDIR"
+
+ ;uninstall from path, must be repeated for every install logged path individual
+ ;!insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\lib\locale"
+ ;!insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\locale"
+ ;!insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\doc"
+ ;!insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\share\tutorials"
+ ;!insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\share\templates"
+ ;!insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\share\screens"
+ ;!insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\share\clipart"
+ ;!insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\share\extensions"
+ ;!insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\share\icons"
+ ;!insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\share"
+ ;!insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\modules"
+ ;!insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR\python"
+ ;!insertmacro UNINSTALL.LOG_UNINSTALL "$INSTDIR"
+
+ ;end uninstall, after uninstall from all logged paths has been performed
+ ;!insertmacro UNINSTALL.LOG_END_UNINSTALL
+
+ ;RMDir /r "$INSTDIR"
+
+ StrCpy $removenever ""
+ StrCpy $removealways ""
+
+ InitPluginsDir
+ SetPluginUnload manual
+
+ ClearErrors
+ FileOpen $0 $INSTDIR\uninstall.log r
+ IfErrors uninstallnotfound
+readnextline:
+ ClearErrors
+ FileRead $0 $1
+ IfErrors done
+ ; cat the line into md5 and filename
+ StrLen $2 $1
+ IntCmp $2 35 readnextline readnextline
+ StrCpy $3 $1 32
+ StrCpy $4 $1 $2-36 34 #remove trailing CR/LF
+ StrCpy $4 $4 -2
+ Push $3
+ Push $4
+ Call un.RemoveFile
+ Goto readnextline
+uninstallnotfound:
+ MessageBox MB_OK|MB_ICONEXCLAMATION "$(lng_UninstallLogNotFound)" /SD IDOK
+done:
+ FileClose $0
+
+ 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
SetAutoClose false
SetAutoClose false