2008-01-21 Marcus Brinkmann <marcus@g10code.de>
authorMarcus Brinkmann <mb@g10code.com>
Mon, 21 Jan 2008 21:07:05 +0000 (21:07 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Mon, 21 Jan 2008 21:07:05 +0000 (21:07 +0000)
* src/installer.nsi: Include Memento.nsh, define
MEMENTO_REGISTRY_ROOT and MEMENTO_REGISTRY_KEY.
* src/inst-sections.nsi: Call MementoSectionDone.
(onInit): Call MementoSectionRestore.
(onInstSuccess): Call MementoSectionSave.
* src/inst-claws-mail.nsi, src/inst-eudoragpg.nsi,
src/inst-gnupg.nsi, src/inst-gnupg2.nsi, src/inst-gpa.nsi,
src/inst-gpgee.nsi, src/inst-gpgex.nsi, src/inst-gpgol.nsi,
src/inst-kleopatra.nsi, src/inst-man_advanced_de.nsi,
src/inst-man_advanced_en.nsi, src/inst-man_novice_de.nsi,
src/inst-man_novice_en.nsi, src/inst-sylpheed-claws.nsi,
src/inst-winpt.nsi: Replace Section/SectionEnd by Memento macro
calls.
* src/make-msi.pl (gpg4win_nsis_stubs): Support memento sections.

20 files changed:
ChangeLog
src/inst-claws-mail.nsi
src/inst-eudoragpg.nsi
src/inst-gnupg.nsi
src/inst-gnupg2.nsi
src/inst-gpa.nsi
src/inst-gpgee.nsi
src/inst-gpgex.nsi
src/inst-gpgol.nsi
src/inst-kleopatra.nsi
src/inst-man_advanced_de.nsi
src/inst-man_advanced_en.nsi
src/inst-man_novice_de.nsi
src/inst-man_novice_en.nsi
src/inst-sections.nsi
src/inst-sylpheed-claws.nsi
src/inst-winpt.nsi
src/installer.nsi
src/make-msi.guids
src/make-msi.pl

index de3e228..5e94c74 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2008-01-21  Marcus Brinkmann  <marcus@g10code.de>
+
+       * src/installer.nsi: Include Memento.nsh, define
+       MEMENTO_REGISTRY_ROOT and MEMENTO_REGISTRY_KEY.
+       * src/inst-sections.nsi: Call MementoSectionDone.
+       (onInit): Call MementoSectionRestore.
+       (onInstSuccess): Call MementoSectionSave.
+       * src/inst-claws-mail.nsi, src/inst-eudoragpg.nsi,
+       src/inst-gnupg.nsi, src/inst-gnupg2.nsi, src/inst-gpa.nsi,
+       src/inst-gpgee.nsi, src/inst-gpgex.nsi, src/inst-gpgol.nsi,
+       src/inst-kleopatra.nsi, src/inst-man_advanced_de.nsi,
+       src/inst-man_advanced_en.nsi, src/inst-man_novice_de.nsi,
+       src/inst-man_novice_en.nsi, src/inst-sylpheed-claws.nsi,
+       src/inst-winpt.nsi: Replace Section/SectionEnd by Memento macro
+       calls.
+       * src/make-msi.pl (gpg4win_nsis_stubs): Support memento sections.
+
 2008-01-18  Marcus Brinkmann  <marcus@g10code.de>
 
        * packages/packages.current: Update gpgol.
index e81b17a..7c075ae 100644 (file)
@@ -24,7 +24,7 @@
 !define prefix ${ipdir}/claws-mail-${gpg4win_pkg_claws_mail_version}
 
 
-Section /o "Claws-Mail" SEC_claws_mail
+${MementoUnselectedSection} "Claws-Mail" SEC_claws_mail
   SetOutPath "$INSTDIR"
 !ifdef SOURCES
   File "${gpg4win_pkg_claws_mail}"
@@ -47,7 +47,7 @@ Section /o "Claws-Mail" SEC_claws_mail
   SetOutPath "$INSTDIR\share\locale\de\LC_MESSAGES"
   File ${prefix}/share/locale/de/LC_MESSAGES/claws-mail.mo
 !endif
-SectionEnd
+${MementoSectionEnd}
 
 
 LangString DESC_SEC_claws_mail ${LANG_ENGLISH} \
index 277f371..745a1ed 100644 (file)
@@ -24,7 +24,7 @@
 !define prefix ${ipdir}/eudoragpg-${gpg4win_pkg_eudoragpg_version}
 
 
-Section "EudoraGPG" SEC_eudoragpg
+${MementoSection} "EudoraGPG" SEC_eudoragpg
   SetOutPath "$INSTDIR"
 !ifdef SOURCES
   File "${gpg4win_pkg_eudoragpg}"
@@ -34,7 +34,7 @@ Section "EudoraGPG" SEC_eudoragpg
   SetOutPath "$INSTDIR\share\eudoragpg"
   File "${prefix}/share/eudoragpg/eudoragpg.html"
 !endif
-SectionEnd
+${MementoSectionEnd}
 
 
 LangString DESC_SEC_eudoragpg ${LANG_ENGLISH} \
index fbe1adc..091d191 100644 (file)
@@ -24,7 +24,7 @@
 !define prefix ${ipdir}/gnupg-${gpg4win_pkg_gnupg_version}
 
 
-Section "GnuPG" SEC_gnupg
+${MementoSection} "GnuPG" SEC_gnupg
   SectionIn RO
 
   SetOutPath "$INSTDIR"
@@ -89,7 +89,7 @@ Section "GnuPG" SEC_gnupg
   Call AddToPath
 
 !endif
-SectionEnd
+${MementoSectionEnd}
 
 
 LangString DESC_SEC_gnupg ${LANG_ENGLISH} \
index 5d2b0df..92e0a68 100644 (file)
@@ -26,7 +26,7 @@
 !define source ${bpdir}/gnupg2-${gpg4win_pkg_gnupg2_version}
 
 
-Section "GnuPG2" SEC_gnupg2
+${MementoSection} "GnuPG2" SEC_gnupg2
   SectionIn RO
 
   SetOutPath "$INSTDIR"
@@ -105,7 +105,7 @@ Section "GnuPG2" SEC_gnupg2
 
   no_config_gpg_conf_files:
 !endif
-SectionEnd
+${MementoSectionEnd}
 
 LangString DESC_SEC_gnupg2 ${LANG_ENGLISH} \
    "GNU Privacy Guard with S/MIME support"
index 2ac816e..2a95243 100644 (file)
@@ -24,7 +24,7 @@
 !define prefix ${ipdir}/gpa-${gpg4win_pkg_gpa_version}
 
 
-Section "GPA" SEC_gpa
+${MementoSection} "GPA" SEC_gpa
   SetOutPath "$INSTDIR"
 !ifdef SOURCES
   File "${gpg4win_pkg_gpa}"
@@ -56,7 +56,7 @@ Section "GPA" SEC_gpa
   no_config_gpa_files:
 
 !endif
-SectionEnd
+${MementoSectionEnd}
 
 
 LangString DESC_SEC_gpa ${LANG_ENGLISH} \
index 17cb33b..cfaf506 100644 (file)
@@ -24,7 +24,7 @@
 !define prefix ${ipdir}/gpgee-${gpg4win_pkg_gpgee_version}
 
 
-Section /o "GPGee" SEC_gpgee
+${MementoUnselectedSection} /o "GPGee" SEC_gpgee
   SetOutPath "$INSTDIR"
 !ifdef SOURCES
   File "${gpg4win_pkg_gpgee_src}"
@@ -60,7 +60,7 @@ Section /o "GPGee" SEC_gpgee
   File ${prefix}/GPGee/gpl.txt
 
 !endif
-SectionEnd
+${MementoSectionEnd}
 
 LangString T_GPGee_RegFailed ${LANG_ENGLISH} \
    "Warning: Registration of the GPGee explorer extension failed."
index 48aed44..8b15eaf 100644 (file)
@@ -40,7 +40,7 @@ Section "-removegpgee"
 SectionEnd
 
 
-Section "GpgEX" SEC_gpgex
+${MementoSection} "GpgEX" SEC_gpgex
   SetOutPath "$INSTDIR"
 !ifdef SOURCES
   File "${gpg4win_pkg_gpgex}"
@@ -68,7 +68,7 @@ Section "GpgEX" SEC_gpgex
   File ${prefix}/share/doc/gpgex/gpgex-de.html
 
 !endif
-SectionEnd
+${MementoSectionEnd}
 
 
 LangString T_GpgEX_RegFailed ${LANG_ENGLISH} \
index 791845d..f6e275a 100644 (file)
@@ -24,7 +24,7 @@
 !define bdir ${bpdir}/gpgol-${gpg4win_pkg_gpgol_version}-build
 
 
-Section "GpgOL" SEC_gpgol
+${MementoSection} "GpgOL" SEC_gpgol
   SetOutPath "$INSTDIR"
 !ifdef SOURCES
   File "${gpg4win_pkg_gpgol}"
@@ -51,7 +51,7 @@ Section "GpgOL" SEC_gpgol
   File "${bdir}/doc/gpgol.pdf"
 
 !endif
-SectionEnd
+${MementoSectionEnd}
 
 
 LangString T_GpgOL_RegFailed ${LANG_ENGLISH} \
index 42f6b89..7716bf7 100644 (file)
@@ -23,7 +23,7 @@
 !endif
 !define prefix ${ipdir}/kleopatra-${gpg4win_pkg_kleopatra_version}
 
-Section "Kleopatra" SEC_kleopatra
+${MementoSection} "Kleopatra" SEC_kleopatra
   SetOutPath "$INSTDIR"
 !ifdef SOURCES
   File "${gpg4win_pkg_kleopatra_src}"
@@ -100,7 +100,7 @@ Section "Kleopatra" SEC_kleopatra
   File ${prefix}/share/icons/oxygen/scalable/apps/kleopatra.svgz
 
 !endif
-SectionEnd
+${MementoSectionEnd}
 
 
 LangString DESC_SEC_kleopatra ${LANG_ENGLISH} \
index ca4a830..6bdd0ba 100644 (file)
@@ -23,7 +23,7 @@
 !endif
 
 
-Section "$(DESC_Name_man_advanced_de)" SEC_man_advanced_de
+${MementoSection} "$(DESC_Name_man_advanced_de)" SEC_man_advanced_de
   SetOutPath "$INSTDIR"
 !ifdef SOURCES
   # No need to include anything as the manuals are part of gpg4win
@@ -33,7 +33,7 @@ Section "$(DESC_Name_man_advanced_de)" SEC_man_advanced_de
   SetOutPath "$INSTDIR\share\gpg4win"
   File "${BUILD_DIR}/../doc/manual/durchblicker.pdf"
 !endif
-SectionEnd
+${MementoSectionEnd}
 
 
 LangString DESC_Name_man_advanced_de ${LANG_ENGLISH} \
index 0aac50a..6177531 100644 (file)
@@ -23,7 +23,7 @@
 !endif
 
 
-Section "$(DESC_Name_man_advanced_en)" SEC_man_advanced_en
+${MementoSection} "$(DESC_Name_man_advanced_en)" SEC_man_advanced_en
   SetOutPath "$INSTDIR"
 !ifdef SOURCES
   # No need to include anything as the manuals are part of gpg4win
@@ -33,7 +33,7 @@ Section "$(DESC_Name_man_advanced_en)" SEC_man_advanced_en
   SetOutPath "$INSTDIR\share\gpg4win"
   File "${BUILD_DIR}/../doc/manual/advanced.pdf"
 !endif
-SectionEnd
+${MementoSectionEnd}
 
 
 LangString DESC_Name_man_advanced_en ${LANG_ENGLISH} \
index 9148596..f92c811 100644 (file)
@@ -23,7 +23,7 @@
 !endif
 
 
-Section "$(DESC_Name_man_novice_de)" SEC_man_novice_de
+${MementoSection} "$(DESC_Name_man_novice_de)" SEC_man_novice_de
   SetOutPath "$INSTDIR"
 !ifdef SOURCES
   # No need to include anything as the manuals are part of gpg4win
@@ -33,7 +33,7 @@ Section "$(DESC_Name_man_novice_de)" SEC_man_novice_de
   SetOutPath "$INSTDIR\share\gpg4win"
   File "${BUILD_DIR}/../doc/manual/einsteiger.pdf"
 !endif
-SectionEnd
+${MementoSectionEnd}
 
 
 LangString DESC_Name_man_novice_de ${LANG_ENGLISH} \
index 8401089..f0b9e07 100644 (file)
@@ -23,7 +23,7 @@
 !endif
 
 
-Section "$(DESC_Name_man_novice_en)" SEC_man_novice_en
+${MementoSection} "$(DESC_Name_man_novice_en)" SEC_man_novice_en
   SetOutPath "$INSTDIR"
 !ifdef SOURCES
   # No need to include anything as the manuals are part of gpg4win
@@ -33,7 +33,7 @@ Section "$(DESC_Name_man_novice_en)" SEC_man_novice_en
   SetOutPath "$INSTDIR\share\gpg4win"
   File "${BUILD_DIR}/../doc/manual/novices.pdf"
 !endif
-SectionEnd
+${MementoSectionEnd}
 
 
 LangString DESC_Name_man_novice_en ${LANG_ENGLISH} \
index 035c5da..e2d0e23 100644 (file)
 
 # Dependency Management
 
+${MementoSectionDone}
+
 !include "Sections.nsh"
 
 
@@ -771,6 +773,7 @@ Call G4wRunOnce
   # generate the file from a template.
   !insertmacro MUI_INSTALLOPTIONS_EXTRACT "installer-options.ini"
 
+  ${MementoSectionRestore}
   Call CalcDefaults
   Call CalcDepends
   Call CheckOtherGnuPGApps
@@ -782,6 +785,7 @@ Function .onInstFailed
 FunctionEnd
 
 Function .onInstSuccess
+  ${MementoSectionSave}
   Delete $TEMP\gpgspltmp.wav
 FunctionEnd
 
index 3fbba1e..c2da74e 100644 (file)
@@ -24,7 +24,7 @@
 !define prefix ${ipdir}/sylpheed-claws-${gpg4win_pkg_sylpheed_claws_version}
 
 
-Section /o "Sylpheed-Claws" SEC_sylpheed
+${MementoUnselectedSection} "Sylpheed-Claws" SEC_sylpheed
   SetOutPath "$INSTDIR"
 !ifdef SOURCES
   File "${gpg4win_pkg_sylpheed_claws}"
@@ -45,7 +45,7 @@ Section /o "Sylpheed-Claws" SEC_sylpheed
   SetOutPath "$INSTDIR\share\locale\de\LC_MESSAGES"
   File ${prefix}/share/locale/de/LC_MESSAGES/sylpheed-claws.mo
 !endif
-SectionEnd
+${MementoSectionEnd}
 
 
 LangString DESC_SEC_sylpheed ${LANG_ENGLISH} \
index 15c1925..3b3ff2b 100644 (file)
@@ -23,7 +23,7 @@
 !endif
 !define prefix ${ipdir}/winpt-${gpg4win_pkg_winpt_version}
 
-Section "WinPT" SEC_winpt
+${MementoSection} "WinPT" SEC_winpt
   SetOutPath "$INSTDIR"
 !ifdef SOURCES
   File "${gpg4win_pkg_winpt}"
@@ -40,7 +40,7 @@ Section "WinPT" SEC_winpt
   #File ${prefix}/NEWS.txt
   #File ${prefix}/README.txt
 !endif
-SectionEnd
+${MementoSectionEnd}
 
 
 LangString DESC_SEC_winpt ${LANG_ENGLISH} \
index a50d6a6..75c84f1 100644 (file)
 # !define Regkey_for_Env 'HKCU "Environment"'
 
 
-
+# We use Memento to remember past installation choices.
+!include Memento.nsh
+!define MEMENTO_REGISTRY_ROOT HKLM
+!define MEMENTO_REGISTRY_KEY \
+  Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRETTY_PACKAGE_SHORT}
 
 
 # We use the modern UI.
index b9e1637..1cbbf64 100644 (file)
@@ -8,6 +8,7 @@ f5898ebd-f30a-4cfc-9763-2a98befe6719 /PRODUCT/1.9.0.613
 80591336-e7ec-47d6-8b79-7d923c35d3de /PRODUCT/1.9.0.616
 bf1af37b-2d40-4956-add4-3abb7154b0ed /PRODUCT/1.9.0.625
 d75a8790-3457-49aa-ac8d-946a33c7bb1a /PRODUCT/1.9.0.668
+3f94d3d4-7d64-44fc-a2be-28073eb595e1 /PRODUCT/1.9.0.682
 fb54db39-2456-4fcc-9550-2790db663015 /REGISTRY/HKLM/Software\GNU\GnuPG/Install Directory
 ad23691b-1734-4dec-b91a-d4ff286190ea /REGISTRY/HKLM/Software\GNU\GnuPG/gpgProgram
 e0807a2f-4e70-48f8-b047-c5d3e219c3e7 /UPGRADE/1
@@ -35,6 +36,7 @@ be9b9b72-a574-429c-83b3-ad463852c930 VisualPng.exe
 2a6c061a-c8df-4756-b075-f3b5d386b6a9 cjpeg.exe
 4c4e070f-6ca6-49b3-9ff5-aae36352e909 claws-mail-manual.pdf
 e727cf5b-9485-4b5c-b54d-5a0866082b03 claws-mail.exe
+d602f33b-70ae-465d-b768-1d436499ab44 dbus-env.bat
 460d777c-6ce0-48f3-90ac-d260c9dcbb3e dbus-launch.exe
 ee21a9ad-8d11-470d-8478-b89d19764248 dbus-monitor.exe
 90cc13c3-d94c-44e5-bf0f-bcde6b7105ae dbus-send.exe
@@ -273,6 +275,7 @@ d1851b33-a3ad-4bfa-831f-77795b11f127 share\config\kdebug.areas
 fa4fd7f9-1a16-4dd9-98f8-133a087247f6 share\config\ui\ui_standards.rc
 034afb0a-ea97-466c-a6b7-89a6be0891a9 share\doc\gpgex\gpgex-de.html
 3e81d9d7-fc44-4d0d-822c-44522b15b95d share\doc\gpgex\gpgex-en.html
+1e0dd2f5-40b2-466e-9bad-85dc8882aa26 share\doc\gpgol\gpgol.pdf
 333ef410-acf0-4cac-a9dc-d691c127cb7b share\gnupg\FAQ
 648f5486-56d0-4a03-a2f4-23ba6f7d0c74 share\gnupg\com-certs.pem
 03294f27-91ac-4eed-81e3-ee4ee602668d share\gnupg\faq.html
index b504989..4d0cada 100644 (file)
@@ -652,13 +652,21 @@ sub gpg4win_nsis_stubs
     # We parse SetOutPath and File directives in sections.
     # Everything else is ignored.
 
-    elsif ($parser->{state} eq '' and $command eq 'Section')
+    elsif ($parser->{state} eq ''
+          and ($command eq 'Section' or $command eq '${MementoSection}'
+               or $command eq '${MementoUnselectedSection}'))
     {
        my $idx = 0;
        # Default install level for MSI is 3.
        my $level = $::nsis_level_default;
        my $hidden = 0;
        
+       if ($command eq '${MementoUnselectedSection}')
+       {
+           # Default install level for MSI is 3.
+           $level = $::nsis_level_optional;
+       }
+
        # Check for options first.
        return if ($idx > $#args);
        if ($args[$idx] eq '/o')
@@ -667,7 +675,7 @@ sub gpg4win_nsis_stubs
            $level = $::nsis_level_optional;
            $idx++;
        }
-
+       
        return if ($idx > $#args);
 
        my $title = nsis_eval ($parser, $file, $args[$idx++]);
@@ -681,7 +689,7 @@ sub gpg4win_nsis_stubs
            $hidden = 1;
            substr ($title, 0, 1) = '';
        }
-               
+
        # We only pay attention to special sections and those which
        # have a section index defined.
        if ($title eq 'startmenu')
@@ -715,7 +723,7 @@ sub gpg4win_nsis_stubs
     }
     elsif ($parser->{state} eq 'in-section')
     {
-       if ($command eq 'SectionEnd')
+       if ($command eq 'SectionEnd' or $command eq '${MementoSectionEnd}')
        {
            delete $parser->{pkg};
            undef $parser->{state};
@@ -797,7 +805,7 @@ sub gpg4win_nsis_stubs
 
     elsif ($parser->{state} eq 'section-startmenu')
     {
-       if ($command eq 'SectionEnd')
+       if ($command eq 'SectionEnd' or $command eq '${MementoSectionEnd}')
        {
            undef $parser->{state};
        }