From d8ec7c96aa28c8042c41b2ed47c3b58d10bff01f Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 11 Jan 2005 12:03:22 +0000 Subject: [PATCH] * w32installer.nsi: New. * mk-w32-dist: Append ".txt" to some files. Call makensis if available. --- scripts/ChangeLog | 6 + scripts/mk-w32-dist | 17 +-- scripts/w32installer.nsi | 253 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 269 insertions(+), 7 deletions(-) create mode 100644 scripts/w32installer.nsi diff --git a/scripts/ChangeLog b/scripts/ChangeLog index a5a9a3e2f..b4e53afe2 100644 --- a/scripts/ChangeLog +++ b/scripts/ChangeLog @@ -1,3 +1,9 @@ +2005-01-11 Werner Koch + + * w32installer.nsi: New. + * mk-w32-dist: Append ".txt" to some files. Call makensis if + available. + 2004-12-21 David Shaw * autogen.sh: automake needs --add-missing for conditional diff --git a/scripts/mk-w32-dist b/scripts/mk-w32-dist index f3938eb21..a73bfda1e 100755 --- a/scripts/mk-w32-dist +++ b/scripts/mk-w32-dist @@ -41,7 +41,7 @@ fi version=$(sed -n 's/^#[ ]*define[ ][ ]*VERSION[ ][ ]*\"\([0-9.a-z-]*\)\"/\1/p' $bindir/config.h) echo "building version $version" -rm * 2>/dev/null || true +rm * >/dev/null 2>/dev/null || true cp ${bindir}/g10/gpg.exe gpg.exe $STRIP gpg.exe @@ -55,8 +55,8 @@ cp ${bindir}/tools/gpgsplit.exe gpgsplit.exe $STRIP gpgsplit.exe for i in FAQ; do - cp ${bindir}/doc/$i . - todos $i + cp ${bindir}/doc/$i $i.txt + todos $i.txt done man -Tlatin1 -l ${srcdir}/doc/gpg.1 | sed `printf "s/\b.//g"` >gpg.man todos gpg.man @@ -64,16 +64,16 @@ man -Tlatin1 -l ${srcdir}/doc/gpgv.1 | sed `printf "s/\b.//g"` >gpgv.man todos gpgv.man man -Tlatin1 -l ${srcdir}/doc/gnupg.7 | sed `printf "s/\b.//g"` >gnupg.man todos gnupg.man -for i in README COPYING; do - cp ${srcdir}/$i . - todos $i +for i in README COPYING NEWS; do + cp ${srcdir}/$i $i.txt + todos $i.txt done for i in README.W32 gnupg-w32.reg; do cp ${srcdir}/doc/$i . todos $i done -# We must distribute the MO files in UTF-8, the conmversion is done by +# We must distribute the MO files in UTF-8, the conversion is done by # gpg at runtime. for i in ${srcdir}/po/*.po; do lang=$(basename $i .po) @@ -94,3 +94,6 @@ for i in ${srcdir}/po/*.po; do esac done zip -9 "gnupg-w32cli-${version}.zip" * +if makensis -version >/dev/null 2>&1 ; then + makensis -v2 -nocd -DVERSION="${version}" ${srcdir}/scripts/w32installer.nsi +fi diff --git a/scripts/w32installer.nsi b/scripts/w32installer.nsi new file mode 100644 index 000000000..8a3ebe167 --- /dev/null +++ b/scripts/w32installer.nsi @@ -0,0 +1,253 @@ +; w32installer.nsi - W32 Installer definition -*- lisp -*- +; Copyright (C) 2005 Free Software Foundation, Inc. +; +; This file is free software; as a special exception the author gives +; unlimited permission to copy and/or distribute it, with or without +; modifications, as long as this notice is preserved. +; +; This program is distributed in the hope that it will be useful, but +; WITHOUT ANY WARRANTY, to the extent permitted by law; without even the +; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +;---------------------------------------------------------------------- +; This is an installer script used to create a W32 installer "exe" file +; using NSIS. It is usually used by the mk-w32-dist script. +;---------------------------------------------------------------------- + +; TODO: +; - Display credit for the installer +; - Provide the location of the corresponding source +; - Check for iconv.dll and optionalkly install or download it. +; - Allow inclusion of the source into the installer. +; - Translate all strings +; - Setup the home directory and check for old (c:/gnupg located) +; versions of the program + +; We use the modern UI. +!include "MUI.nsh" + +; ------------- +; General stuff +; ------------- +Name "GNU Privacy Guard" + +OutFile "gnupg-w32cli-${VERSION}.exe" + +InstallDir "$PROGRAMFILES\GNU\GnuPG" + +InstallDirRegKey HKCU "Software\GNU\GnuPG" "" + +SetCompressor lzma + +ReserveFile "COPYING.txt" + +; ------------------ +; Interface Settings +; ------------------ + +!define MUI_ABORTWARNING +!define MUI_FINISHPAGE_NOAUTOCLOSE +!define MUI_UNFINISHPAGE_NOAUTOCLOSE + +; Remember the installer language +!define MUI_LANGDLL_REGISTRY_ROOT "HKCU" +!define MUI_LANGDLL_REGISTRY_KEY "Software\GNU\GnuPG" +!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language" + + +; ----- +; Pages +; ----- + +!define MUI_WELCOMEPAGE_TEXT "$(T_About)" + +!insertmacro MUI_PAGE_WELCOME + + +!define MUI_PAGE_HEADER_SUBTEXT \ + "This software is licensed under the terms of the GNU General Public \ + License (GPL) which guarantees your freedom to share and change Free \ + Software." + +!define MUI_LICENSEPAGE_TEXT_BOTTOM \ + "In short: You are allowed to run this software for any purpose. \ + You may distribute it as long as you give the recipients the same \ + rights you have received." + +!define MUI_LICENSEPAGE_BUTTON "$(^NextBtn)" + +!insertmacro MUI_PAGE_LICENSE "COPYING.txt" + + +!insertmacro MUI_PAGE_COMPONENTS +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_INSTFILES + +!define MUI_FINISHPAGE_SHOWREADME "README.txt" +!define MUI_FINISHPAGE_SHOWREADME_TEXT "$(T_ShowReadme)" +!define MUI_FINISHPAGE_LINK "Goto the GnuPG website" +!define MUI_FINISHPAGE_LINK_LOCATION "http://www.gnupg.org" +!insertmacro MUI_PAGE_FINISH + + +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_INSTFILES + + +; ----------------- +; i18n Declarations +; ----------------- + +!insertmacro MUI_LANGUAGE "English" +!insertmacro MUI_LANGUAGE "German" + +; ------------------ +; Installer Sections +; ------------------ + +;InstType "full" +;InstType "minimal" + +;---------------------- +Section "Base" SecBase +; SectionIn 1 2 RO + SectionIn RO + + SetOutPath "$INSTDIR" + + File "README.txt" + File "README.W32" + File "COPYING.txt" + File "gpg.exe" + File "gpgkeys_finger.exe" + File "gpgkeys_hkp.exe" + File "gpgkeys_http.exe" + File "gpgkeys_ldap.exe" + File "*.mo" + + WriteRegStr HKCU "Software\GNU\GnuPG" "" $INSTDIR + + WriteUninstaller "$INSTDIR\Uninstall.exe" + +SectionEnd ; Section Base + +;------------------------ +Section "Tools" SecTools +; SectionIn 1 + + File "gpgsplit.exe" + File "gpgv.exe" + +SectionEnd ; Section Tools + +;---------------------- +Section "Documentation" SecDoc +; SectionIn 1 + + File "gnupg.man" + File "gpg.man" + File "gpgv.man" + File "NEWS.txt" + File "FAQ.txt" + +SectionEnd ; Section Documentation + + +;------------------ +!ifdef WITH_SOURCE +Section "Source" SecSource + + ; Note that we include the uncompressed tarball because this allows + ; far better compression results for the distribution. We might + ; want to compress it again after installation. + File "gnupg-1.4.0.tar" + +SectionEnd ; Section Source +!endif + + +;------------------ +Section "Uninstall" + + Delete "$INSTDIR\README.txt" + Delete "$INSTDIR\README.W32" + Delete "$INSTDIR\COPYING.txt" + Delete "$INSTDIR\gpg.exe" + Delete "$INSTDIR\gpgkeys_finger.exe" + Delete "$INSTDIR\gpgkeys_hkp.exe" + Delete "$INSTDIR\gpgkeys_http.exe" + Delete "$INSTDIR\gpgkeys_ldap.exe" + Delete "$INSTDIR\*.mo" + Delete "$INSTDIR\gpgsplit.exe" + Delete "$INSTDIR\gpgv.exe" + Delete "$INSTDIR\gnupg.man" + Delete "$INSTDIR\gpg.man" + Delete "$INSTDIR\gpgv.man" + Delete "$INSTDIR\NEWS.txt" + Delete "$INSTDIR\FAQ.txt" + + Delete "$INSTDIR\Uninstall.exe" + + RMDir "$INSTDIR" + + DeleteRegKey /ifempty HKCU "Software\GNU\GnuPG" + +SectionEnd ; Uninstall + + +; --------- +; Functions +; --------- + +Function .onInit + + !insertmacro MUI_LANGDLL_DISPLAY + +FunctionEnd + + +Function un.onInit + + !insertmacro MUI_UNGETLANGUAGE + +FunctionEnd + + +; ------------ +; Descriptions +; ------------ + + +LangString T_About ${LANG_ENGLISH} \ + "GnuPG is GNU's tool for secure communication and data storage. \ + It can be used to encrypt data and to create digital signatures. \ + It includes an advanced key management facility and is compliant \ + with the proposed OpenPGP Internet standard as described in RFC2440." +LangString T_About ${LANG_GERMAN} \ + "GnuPG is das Werzeug aus dem GNU Projekt zur sicheren Kommunikation \ + sowie zum sicheren Speichern von Daten." +LangString T_ShowReadme ${LANG_ENGLISH} "Show the README file" +LangString T_ShowReadme ${LANG_GERMAN} "Die README Datei anzeigen" + + +LangString DESC_SecBase ${LANG_ENGLISH} \ + "The basic files used for the standard OpenPGP protocol" +LangString DESC_SecBase ${LANG_GERMAN} \ + "Die Basis Dateien zur Benutzung des OpenPGP Protokolls" + +LangString DESC_SecTools ${LANG_ENGLISH} \ + "Extra tools like gpgv and gpgsplit" +LangString DESC_SecTools ${LANG_GERMAN} \ + "Weitere Tools wie gpgv und gpgsplit" + +LangString DESC_SecDoc ${LANG_ENGLISH} \ + "Manual pages and a FAQ" +LangString DESC_SecDoc ${LANG_GERMAN} \ + "Handbuchseiten und eine FAQ" + +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SecBase} $(DESC_SecBase) + !insertmacro MUI_DESCRIPTION_TEXT ${SecTools} $(DESC_SecTools) + !insertmacro MUI_DESCRIPTION_TEXT ${SecDoc} $(DESC_SecDoc) +!insertmacro MUI_FUNCTION_DESCRIPTION_END +