Add update handling to installer and uninstaller
[gpg4win.git] / src / inst-gpg4win.nsi
1 # inst-gpg4win.nsi - Hidden section for common files. -*- coding: latin-1; -*-
2 # Copyright (C) 2006 g10 Code GmbH
3 #
4 # This file is part of GPG4Win.
5 #
6 # GPG4Win is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
10 #
11 # GPG4Win is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19
20
21 # This is the very first section installed.
22 Section "-gpg4win" SEC_gpg4win
23 !ifdef SOURCES
24   SetOutPath "$INSTDIR"
25   File "${BUILD_DIR}/../gpg4win-${VERSION}.tar.bz2"
26 !else
27   StrCpy $is_update "0"
28 # Start the slideshow.
29   SetDetailsPrint none
30
31   SetOutPath "$PLUGINSDIR\Slides"
32   File "${BUILD_DIR}/slideshow/slide1-gpgol.png"
33   File "${BUILD_DIR}/slideshow/slide2-gpgex.png"
34   #File "${BUILD_DIR}/slideshow/slide3-kleopatra.png"
35   File "${BUILD_DIR}/slideshow/slide4-summary.png"
36   File "${BUILD_DIR}/slideshow/slides.dat"
37   g4wihelp::slide_show /NOUNLOAD /CCOLOR=0x000000 "/auto=$PLUGINSDIR\Slides\slides.dat" /FIT=WIDTH
38   SetDetailsPrint both
39   SetOutPath "$INSTDIR"
40
41 # Uninstall an old version if found.
42   ClearErrors
43   ReadRegStr $0 SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\GPG4Win" "DisplayVersion"
44   IfErrors skip_uninst 0
45   StrCmp $0 "" skip_uninst
46   DetailPrint  "$(T_UninstallingOldVersion)$0"
47   ReadRegStr $0 SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\GPG4Win" "UninstallString"
48   IfErrors skip_uninst 0
49   ReadRegStr $1 SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\GPG4Win" "InstallLocation"
50   IfErrors skip_uninst 0
51
52   ExecWait '$0 /S /UPDATE=1 _?=$1'
53 # Deleting here does not work?
54   StrCpy $is_update "1"
55   Delete /REBOOTOK "$1\gpg4win-uninstall.exe"
56   RmDir "$1"
57
58 skip_uninst:
59   SetOutPath "$INSTDIR\share\gpg4win"
60
61   File "${BUILD_DIR}/README.en.txt"
62   File "${BUILD_DIR}/README.de.txt"
63   File /oname=README.ar.txt "${BUILD_DIR}/README.en.txt"
64   File /oname=README.cz.txt "${BUILD_DIR}/README.en.txt"
65   File /oname=README.es.txt "${BUILD_DIR}/README.en.txt"
66   File /oname=README.fr.txt "${BUILD_DIR}/README.en.txt"
67   File /oname=README.it.txt "${BUILD_DIR}/README.en.txt"
68   File /oname=README.no.txt "${BUILD_DIR}/README.en.txt"
69   File /oname=README.pt.txt "${BUILD_DIR}/README.en.txt"
70   File /oname=README.ru.txt "${BUILD_DIR}/README.en.txt"
71   File /oname=README.zh_CN.po "${BUILD_DIR}/README.en.txt"
72   File /oname=README.zh_TW.po "${BUILD_DIR}/README.en.txt"
73
74   File "${BUILD_DIR}/HOWTO-SMIME.en.txt"
75   File "${BUILD_DIR}/HOWTO-SMIME.de.txt"
76
77   File "${BUILD_DIR}/versioninfo.txt"
78
79   # Write a version file.
80   DetailPrint "Opening VERSION file for writing"
81   FileOpen $0 "$INSTDIR\VERSION" w
82   FileWrite $0 "${PACKAGE}$\r$\n"
83   FileWrite $0 "${VERSION}$\r$\n"
84   FileClose $0
85   DetailPrint "VERSION closed"
86
87   # Register the install directory for Gpg4win suite.
88   WriteRegStr SHCTX "Software\${PRETTY_PACKAGE_SHORT}" "Install Directory" $INSTDIR
89   DetailPrint "Saved install directory in the registry"
90
91   # We used to determine the language using a Registry entry.
92   # Although we don't want to delete the user's Lang Registry Setting
93   # because he might have have selected a different language than his
94   # default.  We delete the global Lang of the installation.
95   DeleteRegValue SHCTX "Software\GNU\GnuPG" "Lang"
96   DetailPrint "Deleted obsolete Lang entry"
97
98   # This old key is required for GPGee.  Please do not use in new
99   # applications.
100   # Note: We don't use it anymore so that gpgme decides what gpg to use
101   #       For the new gpg4win we actually use gpg2.exe.
102   #       To cope with old installations we actually remove this value.
103   #       However we can only remove the SHCTX version not those set by
104   #       the user under HKCU.
105   #WriteRegStr SHCTX "Software\GNU\GnuPG" "gpgProgram" "$INSTDIR\gpg.exe"
106   DeleteRegValue SHCTX "Software\GNU\GnuPG" "gpgProgram"
107   DetailPrint "Deleted obsolete gpgProgram value"
108
109   # Install gpg4win included tools
110   SetOutPath "$INSTDIR\bin"
111   File "${BUILD_DIR}/sha1sum.exe"
112   File "${BUILD_DIR}/sha256sum.exe"
113   File "${BUILD_DIR}/md5sum.exe"
114   File "${BUILD_DIR}/mkportable.exe"
115
116   # Install the mingw32 runtime libraries.  They are stored in the
117   # build directory with a different suffix, so that makensis does not
118   # list symbol names.
119   File /oname=libstdc++-6.dll     "${BUILD_DIR}/libstdc++-6.dll-x"
120   File /oname=libgcc_s_sjlj-1.dll "${BUILD_DIR}/libgcc_s_sjlj-1.dll-x"
121   File /oname=libwinpthread-1.dll "${BUILD_DIR}/libwinpthread-1.dll-x"
122
123 !endif
124
125 SectionEnd
126
127 LangString DESC_Menu_gpg4win_readme ${LANG_ENGLISH} \
128    "General information on Gpg4win"
129
130 LangString DESC_Menu_gpg4win_howtosmime ${LANG_ENGLISH} \
131    "Instruction to configure S/MIME"
132
133 LangString DESC_Menu_gnupg_faq ${LANG_ENGLISH} \
134    "Show the Frequently Asked Questions document for GnuPG"