Code

Fixed rendering glitch in bicubic scaler
[inkscape.git] / packaging / win32 / inkscape.nsi
index 4a4dd2845a2a587c5601d208e2247209c2547e31..ebd80cbd51f087dd646062d283ccf6ea7f3733a7 100644 (file)
@@ -7,7 +7,7 @@
 ; DEFINES
 ; #######################################
 !define PRODUCT_NAME "Inkscape"
 ; 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 PRODUCT_PUBLISHER "Inkscape Organization"
 !define PRODUCT_WEB_SITE "http://www.inkscape.org"
 !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\inkscape.exe"
@@ -29,6 +29,25 @@ SetCompressor /SOLID lzma
 !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
+
 
 ; Welcome page
 !insertmacro MUI_PAGE_WELCOME
 
 ; Welcome page
 !insertmacro MUI_PAGE_WELCOME
@@ -69,16 +88,18 @@ ShowUninstDetails hide
 
 ; Language files
 !include "english.nsh" 
 
 ; 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 "czech.nsh" 
 !include "finnish.nsh" 
 !include "french.nsh" 
 !include "german.nsh" 
 !include "italian.nsh" 
-!include "slovak.nsh" 
+!include "japanese.nsh"
 !include "polish.nsh" 
 !include "polish.nsh" 
-!include "spanish.nsh" 
+!include "russian.nsh" 
+!include "slovak.nsh" 
 !include "slovenian.nsh" 
 !include "slovenian.nsh" 
+!include "spanish.nsh" 
 
 ReserveFile "inkscape.nsi.uninstall"
 
 
 ReserveFile "inkscape.nsi.uninstall"
 
@@ -399,24 +420,42 @@ FunctionEnd
 !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
 
@@ -517,6 +556,7 @@ 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
 
@@ -533,24 +573,31 @@ Section $(lng_Core) SecCore
   File /nonfatal /a /r "..\..\inkscape\doc"
   File /nonfatal /a /r "..\..\inkscape\plugins"
   File /nonfatal /a /r /x *.??*.???* /x "examples" /x "tutorials" "..\..\inkscape\share"
   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.classic.svg"  
   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
   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
   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"
-  SetOutPath $INSTDIR\share\screens
-  File /a "..\..\inkscape\share\screens\about.bg.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
@@ -559,10 +606,12 @@ 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
 SectionEnd
 
 Section $(lng_Alluser) SecAlluser
@@ -660,13 +709,17 @@ SectionGroup $(lng_Addfiles) SecAddfiles
 Section $(lng_Examples) SecExamples
   SectionIn 1 2
   SetOutPath $INSTDIR\share
 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
@@ -689,6 +742,10 @@ Section $(lng_bg) SecBulgarian
   !insertmacro Language bg bg
 SectionEnd
 
   !insertmacro Language bg bg
 SectionEnd
 
+Section $(lng_bn) SecBengali
+  !insertmacro Language bn bn
+SectionEnd
+
 Section $(lng_ca) SecCatalan
   !insertmacro Language ca ca
 SectionEnd
 Section $(lng_ca) SecCatalan
   !insertmacro Language ca ca
 SectionEnd
@@ -717,6 +774,10 @@ Section $(lng_en) SecEnglish
   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_CA) SecEnglishCanadian
   !insertmacro Language en_CA en_CA
 SectionEnd
@@ -729,6 +790,10 @@ Section $(lng_en_US@piglatin) SecEnglishPiglatin
   !insertmacro Language en_US@piglatin en_US@Piglatin
 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
 Section $(lng_es) SecSpanish
   !insertmacro Language 'es' 'es'
 SectionEnd
@@ -749,7 +814,7 @@ Section $(lng_fr) SecFrench
   !insertmacro Language 'fr' 'fr'
 SectionEnd
 
   !insertmacro Language 'fr' 'fr'
 SectionEnd
 
-Section $(lng_fi) SecFinish
+Section $(lng_fi) SecFinnish
   !insertmacro Language 'fi' 'fi'
 SectionEnd
 
   !insertmacro Language 'fi' 'fi'
 SectionEnd
 
@@ -762,6 +827,11 @@ Section $(lng_gl) SecGallegan
   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
 Section $(lng_hr) SecCroatian
   !insertmacro Language hr hr
   SectionIn 1 2 3
@@ -772,6 +842,11 @@ Section $(lng_hu) SecHungarian
   SectionIn 1 2 3
 SectionEnd
 
   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
@@ -833,6 +908,10 @@ Section $(lng_pt_BR) SecPortugueseBrazil
   !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
@@ -923,8 +1002,9 @@ Section -FinalizeInstallation
 
   ; uninstall settings
   ClearErrors
 
   ; 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"
   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"
@@ -969,6 +1049,9 @@ SectionEnd
 !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"
@@ -1053,25 +1136,30 @@ Function .onInit
   !insertmacro Parameter "az" ${SecAzerbaijani}
   !insertmacro Parameter "be" ${SecByelorussian}
   !insertmacro Parameter "bg" ${SecBulgarian}
   !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 "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 "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 "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 "fr" ${SecFrench}
   !insertmacro Parameter "ga" ${SecIrish}
   !insertmacro Parameter "gl" ${SecGallegan}
+  !insertmacro Parameter "he" ${SecHebrew}
   !insertmacro Parameter "hr" ${SecCroatian}
   !insertmacro Parameter "hu" ${SecHungarian}
   !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 "it" ${SecItalian}
   !insertmacro Parameter "ja" ${SecJapanese}
   !insertmacro Parameter "km" ${SecKhmer}
@@ -1087,6 +1175,7 @@ Function .onInit
   !insertmacro Parameter "pl" ${SecPolish}
   !insertmacro Parameter "pt" ${SecPortuguese}
   !insertmacro Parameter "pt_BR" ${SecPortugueseBrazil}
   !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 "ru" ${SecRussian}
   !insertmacro Parameter "rw" ${SecKinyarwanda}
   !insertmacro Parameter "sk" ${SecSlovak}
@@ -1130,11 +1219,17 @@ FunctionEnd
 Function .onSelChange
 FunctionEnd
 
 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)"
 ; --------------------------------------------------
 
 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_WRITE "inkscape.nsi.uninstall" "Field 2" "Text" "$(lng_PurgePrefs)"
 
   !insertmacro MUI_INSTALLOPTIONS_DISPLAY "inkscape.nsi.uninstall"
@@ -1146,6 +1241,8 @@ FunctionEnd
 
 
 Function un.onInit
 
 
 Function un.onInit
+  ;begin uninstall, could be added on top of uninstall section instead
+  !insertmacro UNINSTALL.LOG_BEGIN_UNINSTALL
 
   ClearErrors
   StrCpy $User ""
 
   ClearErrors
   StrCpy $User ""
@@ -1159,17 +1256,19 @@ Function un.onInit
  
   ; 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
+  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:
          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:
@@ -1316,7 +1415,26 @@ Section Uninstall
   RMDir  "$SMPROGRAMS\Inkscape"
 
   DetailPrint "removing uninstall info"
   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
 
 
   SetAutoClose false