index 4a4dd2845a2a587c5601d208e2247209c2547e31..ebd80cbd51f087dd646062d283ccf6ea7f3733a7 100644 (file)
; DEFINES
; #######################################
!define PRODUCT_NAME "Inkscape"
-!define PRODUCT_VERSION "0.44+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 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
+
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; Language files
!include "english.nsh"
-!include "catalan.nsh"
+; !include "catalan.nsh" the catalan support has been abandoned by NSIS as of version 2.28
!include "czech.nsh"
!include "finnish.nsh"
!include "french.nsh"
!include "german.nsh"
!include "italian.nsh"
-!include "slovak.nsh"
+!include "japanese.nsh"
!include "polish.nsh"
-!include "spanish.nsh"
+!include "russian.nsh"
+!include "slovak.nsh"
!include "slovenian.nsh"
+!include "spanish.nsh"
ReserveFile "inkscape.nsi.uninstall"
!macro Language polng lng
SectionIn 1 2 3
SetOutPath $INSTDIR
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
File /nonfatal /a "..\..\inkscape\*.${lng}.txt"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SetOutPath $INSTDIR\locale
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
File /nonfatal /a /r "..\..\inkscape\locale\${polng}"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SetOutPath $INSTDIR\lib\locale
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
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
- 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
- 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
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
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
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
File /nonfatal /a "..\..\inkscape\share\tutorials\*.${polng}.*"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
skip_tutorials:
!macroend
SectionIn 1 2 3 RO
SetOutPath $INSTDIR
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
SetOverwrite on
SetAutoClose false
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"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
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"
+ !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"
- SetOutPath $INSTDIR\share\screens
- File /a "..\..\inkscape\share\screens\about.bg.svg"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SetOutPath $INSTDIR\modules
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
File /nonfatal /a /r "..\..\inkscape\modules\*.*"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
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
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"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SectionEnd
Section $(lng_Alluser) SecAlluser
Section $(lng_Examples) SecExamples
SectionIn 1 2
SetOutPath $INSTDIR\share
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
File /nonfatal /a /r /x "*.??*.???*" "..\..\inkscape\share\examples"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SectionEnd
Section $(lng_Tutorials) SecTutorials
SectionIn 1 2
SetOutPath $INSTDIR\share
+ !insertmacro UNINSTALL.LOG_OPEN_INSTALL
File /nonfatal /a /r /x "*.??*.???*" "..\..\inkscape\share\tutorials"
+ !insertmacro UNINSTALL.LOG_CLOSE_INSTALL
SectionEnd
SectionGroupEnd
!insertmacro Language bg bg
SectionEnd
+Section $(lng_bn) SecBengali
+ !insertmacro Language bn bn
+SectionEnd
+
Section $(lng_ca) SecCatalan
!insertmacro Language ca ca
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
!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
!insertmacro Language 'fr' 'fr'
SectionEnd
-Section $(lng_fi) SecFinish
+Section $(lng_fi) SecFinnish
!insertmacro Language 'fi' 'fi'
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
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
!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
; 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" "$INSTDIR\${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"
!macroend
Function .onInit
+ ;prepare log always within .onInit function
+ !insertmacro UNINSTALL.LOG_PREPARE_INSTALL
+
;Extract InstallOptions INI files
StrCpy $AskMultiUser "1"
StrCpy $MultiUser "0"
!insertmacro Parameter "az" ${SecAzerbaijani}
!insertmacro Parameter "be" ${SecByelorussian}
!insertmacro Parameter "bg" ${SecBulgarian}
+ !insertmacro Parameter "bn" ${SecBengali}
!insertmacro Parameter "ca" ${SecCatalan}
!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" ${SecFinish}
+ !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 "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}
Function .onSelChange
FunctionEnd
+
+Function .onInstSuccess
+ ;create/update log always within .onInstSuccess function
+ !insertmacro UNINSTALL.LOG_UPDATE_INSTALL
+FunctionEnd
+
; --------------------------------------------------
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"
Function un.onInit
+ ;begin uninstall, could be added on top of uninstall section instead
+ !insertmacro UNINSTALL.LOG_BEGIN_UNINSTALL
ClearErrors
StrCpy $User ""
; 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"
- 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
- StrCmp $0 "" +3
- StrCmp $0 $User +2
+ 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:
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"
SetAutoClose false