From b5516cccdb8a24b2bf7173ae4d4e46ef444b7ed4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 23 May 2018 23:31:31 +0200 Subject: [PATCH] Automatically uninstall previous version from Windows installer The series number is used to detect previous installation. issue7007 review38221002 --- catalan.nsh | 12 +++++----- english.nsh | 2 +- farsi.nsh | Bin 1664 -> 1796 bytes french.nsh | 8 +++---- german.nsh | 10 ++++---- make-win32-installer.sh | 3 ++- portuguese.nsh | 2 +- russian.nsh | 17 -------------- setup.nsi | 51 +++++++++++++++++++++++++--------------- slovenian.nsh | 8 +++---- spanish.nsh | 8 +++---- 11 files changed, 59 insertions(+), 62 deletions(-) delete mode 100644 russian.nsh diff --git a/catalan.nsh b/catalan.nsh index c1d455256b..a5b848f0fc 100644 --- a/catalan.nsh +++ b/catalan.nsh @@ -8,10 +8,10 @@ !endif !define CURLANG ${LANG_CATALAN} -LangString LicenseText ${CURLANG} "Tryton està alliberat sota la llicència «GNU General Public License» publicada per la Free Software Foundation, o bé la versió 3 de la llicència, o (sota la vostra elecció) qualsevol versió posterior. Llegiu detingudament la llicència. Premeu «Següent» per continuar." -LangString LicenseNext ${CURLANG} "&Següent" -LangString PreviousInstall ${CURLANG} "Desinstal·leu la versió anterior de Tryton" +LangString LicenseText ${CURLANG} "Tryton està alliberat sota la llicència «GNU General Public License» publicada per la Free Software Foundation, o bé la versió 3 de la llicència, o (sota la vostra elecció) qualsevol versió posterior. Llegiu detingudament la llicència. Premeu «Següent» per continuar." +LangString LicenseNext ${CURLANG} "&Següent" +LangString PreviousInstall ${CURLANG} "Tryton ja està instal·lat.$\n$\nPremeu `OK` per eliminar la versió anterior o `Cancel·la` per cancel·lar l'actualització." LangString SecTrytonName ${CURLANG} "Tryton" -LangString SecTrytonDesc ${CURLANG} "Instal·la tryton.exe i altres fitxers necessaris" -LangString SecStartMenuName ${CURLANG} "Accessos directes al menú d'inici i a l'escriptori" -LangString SecStartMenuDesc ${CURLANG} "Crea accessos directes al menú d'inici i a l'escriptori" +LangString SecTrytonDesc ${CURLANG} "Instal·la tryton.exe i altres fitxers necessaris" +LangString SecStartMenuName ${CURLANG} "Accessos directes al menú d'inici i a l'escriptori" +LangString SecStartMenuDesc ${CURLANG} "Crea accessos directes al menú d'inici i a l'escriptori" diff --git a/english.nsh b/english.nsh index 7f5ac26947..7b2ee98071 100644 --- a/english.nsh +++ b/english.nsh @@ -10,7 +10,7 @@ LangString LicenseText ${CURLANG} "Tryton is released under the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Please carefully read the license. Click Next to continue." LangString LicenseNext ${CURLANG} "&Next" -LangString PreviousInstall ${CURLANG} "Please uninstall the previous Tryton installation" +LangString PreviousInstall ${CURLANG} "Tryton is already installed.$\n$\nClick `OK` to remove the previous version or `Cancel` to cancel this upgrade." LangString SecTrytonName ${CURLANG} "Tryton" LangString SecTrytonDesc ${CURLANG} "Install tryton.exe and other required files" LangString SecStartMenuName ${CURLANG} "Start Menu and Desktop Shortcuts" diff --git a/farsi.nsh b/farsi.nsh index a17e59b0cd03fffbc7c9b223ead98266f3b6ab2b..590c343b4900411c99ea1774e87ab3c6cf5aaa98 100644 GIT binary patch delta 200 zcmZqRZQ~E?~JcKs5>ss~KF_ ytk^uv*>(f1MQ8*If-N}1<_4w>ffhLdwJ5UjfVKHEcr)x~m@L3-vDtyefe8RIY97)6 delta 74 zcmZqSYvA2*jd}7MHXc(gHbXXbwli#6Y#wZGYzho+Y^H1)K-z>&pUoXeI{|qvKzRiQ XkU9khT{Z(Y$I0@{nwyWXI4}VKDX0yb diff --git a/french.nsh b/french.nsh index 38c4910ce1..1c5dfd1300 100644 --- a/french.nsh +++ b/french.nsh @@ -8,10 +8,10 @@ !endif !define CURLANG ${LANG_FRENCH} -LangString LicenseText ${CURLANG} "Tryton est publié sous la GNU General Public License comme publiée par la Free Software Foundation, soit la version 3 de la License, ou (à votre choix) toute version ultérieure. S'il vous plaît lisez attentivement la license. Cliquez sur Suivant pour continuer." +LangString LicenseText ${CURLANG} "Tryton est publié sous la GNU General Public License comme publiée par la Free Software Foundation, soit la version 3 de la License, ou (à votre choix) toute version ultérieure. S'il vous plaît lisez attentivement la license. Cliquez sur Suivant pour continuer." LangString LicenseNext ${CURLANG} "&Suivant" -LangString PreviousInstall ${CURLANG} "Veuillez désinstaller la précédente installation de Tryton" +LangString PreviousInstall ${CURLANG} "Tryton est déjà installé.$\n$\nCliquez `OK` pour supprimer la précédente version ou `Annuler` pour annuler cette mis à jour." LangString SecTrytonName ${CURLANG} "Tryton" LangString SecTrytonDesc ${CURLANG} "Installe tryton.exe et d'autres fichiers requis" -LangString SecStartMenuName ${CURLANG} "Raccourcis dans le menu Démarrer et sur le bureau" -LangString SecStartMenuDesc ${CURLANG} "Créé les raccourcis dans le menu Démarrer et sur le bureau" +LangString SecStartMenuName ${CURLANG} "Raccourcis dans le menu Démarrer et sur le bureau" +LangString SecStartMenuDesc ${CURLANG} "Crée les raccourcis dans le menu Démarrer et sur le bureau" diff --git a/german.nsh b/german.nsh index f3b36c52f1..e191c43c8b 100644 --- a/german.nsh +++ b/german.nsh @@ -8,10 +8,10 @@ !endif !define CURLANG ${LANG_GERMAN} -LangString LicenseText ${CURLANG} "Tryton wird unter der GNU General Public License wie von der Free Software Foundation veröffentlicht freigegeben, entweder Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren Version. Bitte lesen Sie die Lizenz aufmerksam. Klicken Sie auf Weiter, um fortzufahren." +LangString LicenseText ${CURLANG} "Tryton wird unter der GNU General Public License wie von der Free Software Foundation veröffentlicht freigegeben, entweder Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren Version. Bitte lesen Sie die Lizenz aufmerksam. Klicken Sie auf Weiter, um fortzufahren." LangString LicenseNext ${CURLANG} "&Weiter" -LangString PreviousInstall ${CURLANG} "Bitte deinstallieren Sie die vorherige Installation des Tryton Clients" +LangString PreviousInstall ${CURLANG} "Tryton ist bereits installiert.$\n$\nWählen Sie `OK`, um die bisherige Version zu entfernen oder `Abbrechen` um die Aktualisierung abzubrechen." LangString SecTrytonName ${CURLANG} "Tryton" -LangString SecTrytonDesc ${CURLANG} "tryton.exe und andere benötigte Dateien installieren" -LangString SecStartMenuName ${CURLANG} "Startmenü und Desktop-Verknüpfungen" -LangString SecStartMenuDesc ${CURLANG} "Verknüpfungen im Startmenü und auf dem Desktop erstellen" +LangString SecTrytonDesc ${CURLANG} "tryton.exe und andere benötigte Dateien installieren" +LangString SecStartMenuName ${CURLANG} "Startmenü und Desktop-Verknüpfungen" +LangString SecStartMenuDesc ${CURLANG} "Verknüpfungen im Startmenü und auf dem Desktop erstellen" diff --git a/make-win32-installer.sh b/make-win32-installer.sh index 8caa6d0ce0..1aa22c8126 100644 --- a/make-win32-installer.sh +++ b/make-win32-installer.sh @@ -1,6 +1,7 @@ #!/bin/sh set -e version=`python setup.py --version` +series=${version%.*} python setup.py compile_catalog python setup-freeze.py install_exe -d dist -makensis -DVERSION=${version} setup.nsi +makensis -DVERSION=${version} -DSERIES=${series} setup.nsi diff --git a/portuguese.nsh b/portuguese.nsh index c60ef3b8fd..c68dc0ba56 100644 --- a/portuguese.nsh +++ b/portuguese.nsh @@ -10,7 +10,7 @@ LangString LicenseText ${CURLANG} "Tryton é licenciado sob a General Public License conforme publicada pela Free Software Foundation, conforme a versão 3 da licença, ou (segundo sua escolha) qualquer versão posterior. Favor ler a licença cuidadosamente. Clique em Seguinte para continuar." LangString LicenseNext ${CURLANG} "&Seguinte" -LangString PreviousInstall ${CURLANG} "Favor remover a instalação anterior do Tryton" +LangString PreviousInstall ${CURLANG} "O Tryton já está instalado.$\n$\nClique em 'OK' para remover a versão anterior ou 'Cancelar' para cancelar esta atualização." LangString SecTrytonName ${CURLANG} "Tryton" LangString SecTrytonDesc ${CURLANG} "Instala tryton.exe e outros arquivos necessários" LangString SecStartMenuName ${CURLANG} "Menu Iniciar e Atalhos da Ã�rea de Trabalho" diff --git a/russian.nsh b/russian.nsh deleted file mode 100644 index 17cd252d60..0000000000 --- a/russian.nsh +++ /dev/null @@ -1,17 +0,0 @@ -;This file is part of Tryton. The COPYRIGHT file at the top level of -;this repository contains the full copyright notices and license terms. - -!verbose 3 - -!ifdef CURLANG - !undef CURLANG -!endif -!define CURLANG ${LANG_RUSSIAN} - -LangString LicenseText ${CURLANG} "Tryton ðàñïðîñòðàíÿåòñÿ ïîä ëèöåíçèåé GNU General Public License, îïóáëèêîâàííîé Free Software Foundation, âåðñèè 3, ëèáî (ïî âàøåìó âûáîðó) ëþáîé áîëåå ïîçäíåé âåðñèè. Ïîæàëóéñòà, âíèìàòåëüíî ïðî÷èòàéòå ëèöåíçèþ. Íàæìèòå êíîïêó Äàëåå, ÷òîáû ïðîäîëæèòü." -LangString LicenseNext ${CURLANG} "&Äàëåå" -LangString PreviousInstall ${CURLANG} "Ïîæàëóéñòà óäàëèòå ïðåäûäóùóþ âåðñèþ Tryton" -LangString SecTrytonName ${CURLANG} "Tryton" -LangString SecTrytonDesc ${CURLANG} "Óñòàíîâèòü tryton.exe è íåîáõîäèìûå ôàéëû" -LangString SecStartMenuName ${CURLANG} "ßðëûêè â ìåíþ Ïóñê è íà Ðàáî÷åì ñòîëå" -LangString SecStartMenuDesc ${CURLANG} "Ñîçäàòü ÿðëûêè â ìåíþ Ïóñê è íà ðàáî÷åì ñòîëå" diff --git a/setup.nsi b/setup.nsi index c383871e90..71f3999a31 100644 --- a/setup.nsi +++ b/setup.nsi @@ -5,6 +5,10 @@ !ifndef VERSION !error "Missing VERSION! Specify it with '/DVERSION='" !endif +;Check series +!ifndef SERIES + !error "Missing SERIES! Specify if with '/DSERIES='" +!endif ;Include Modern UI !include "MUI.nsh" @@ -14,14 +18,15 @@ Name "Tryton ${VERSION}" OutFile "tryton-${VERSION}.exe" SetCompressor lzma SetCompress auto +Unicode true ;Default installation folder -InstallDir "$PROGRAMFILES\tryton-${VERSION}" +InstallDir "$PROGRAMFILES\Tryton-${SERIES}" ;Get installation folder from registry if available -InstallDirRegKey HKCU "Software\tryton-${VERSION}" "" +InstallDirRegKey HKCU "Software\Tryton-${SERIES}" "" -BrandingText "Tryton ${VERSION}" +BrandingText "Tryton ${SERIES}" ;Vista redirects $SMPROGRAMS to all users without this RequestExecutionLevel admin @@ -69,8 +74,6 @@ Var STARTMENU_FOLDER !include "slovenian.nsh" !insertmacro MUI_LANGUAGE "Spanish" !include "spanish.nsh" -!insertmacro MUI_LANGUAGE "Russian" -!include "russian.nsh" ;Reserve Files @@ -82,9 +85,20 @@ Var STARTMENU_FOLDER ;Installer Sections Function .onInit ClearErrors - ReadRegStr $0 HKCU "Software\tryton-${VERSION}" "" - IfErrors DoInstall 0 - MessageBox MB_OK "$(PreviousInstall)" + ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\tryton-${SERIES}" "UninstallString" + StrCmp $0 "" DoInstall + + MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(PreviousInstall)" /SD IDOK IDOK Uninstall + Quit + + Uninstall: + ReadRegStr $1 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\tryton-${SERIES}" "InstallLocation" + ClearErrors + StrCpy $2 "/S" + IfSilent +2 + StrCpy $2 "" + ExecWait '$0 $2 _?=$1' + IfErrors 0 DoInstall Quit DoInstall: FunctionEnd @@ -112,12 +126,12 @@ SectionIn 1 2 RO WriteRegStr HKCR "tryton\shell\open\command" "" '$INSTDIR\tryton.exe "%1"' ;Write the installation path into the registry - WriteRegStr HKCU "Software\tryton-${VERSION}" "" $INSTDIR - WriteRegStr HKLM "Software\tryton-${VERSION}" "" $INSTDIR + WriteRegStr HKLM "Software\Tryton-${SERIES}" "" $INSTDIR ;Write the uninstall keys for Windows - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\tryton-${VERSION}" "DisplayName" "Tryton ${VERSION} (remove only)" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\tryton-${VERSION}" "UninstallString" "$INSTDIR\uninstall.exe" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\tryton-${SERIES}" "DisplayName" "Tryton ${VERSION} (remove only)" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\tryton-${SERIES}" "UninstallString" "$INSTDIR\uninstall.exe" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\tryton-${SERIES}" "InstallLocation" "$INSTDIR" ;Create the uninstaller WriteUninstaller uninstall.exe @@ -131,8 +145,8 @@ SectionIn 1 2 CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER" CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 - CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Tryton-${VERSION}.lnk" "$INSTDIR\tryton.exe" "" "$INSTDIR\tryton.exe" 0 - CreateShortCut "$DESKTOP\Tryton-${VERSION}.lnk" "$INSTDIR\tryton.exe" "" "$INSTDIR\tryton.exe" 0 + CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Tryton-${SERIES}.lnk" "$INSTDIR\tryton.exe" "" "$INSTDIR\tryton.exe" 0 + CreateShortCut "$DESKTOP\Tryton-${SERIES}.lnk" "$INSTDIR\tryton.exe" "" "$INSTDIR\tryton.exe" 0 !insertmacro MUI_STARTMENU_WRITE_END @@ -149,18 +163,17 @@ Section "Uninstall" RMDIR /r "$INSTDIR" ;remove registry keys - DeleteRegKey HKCU "Software\tryton-${VERSION}" - DeleteRegKey HKLM "Software\tryton-${VERSION}" - DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\tryton-${VERSION}" + DeleteRegKey HKLM "Software\Tryton-${SERIES}" + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\tryton-${SERIES}" SetShellVarContext all - Delete "$DESKTOP\Tryton-${VERSION}.lnk" + Delete "$DESKTOP\Tryton-${SERIES}.lnk" !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP StrCmp $MUI_TEMP "" noshortcuts Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk" - Delete "$SMPROGRAMS\$MUI_TEMP\Tryton-${VERSION}.lnk" + Delete "$SMPROGRAMS\$MUI_TEMP\Tryton-${SERIES}.lnk" RMDir "$SMPROGRAMS\$MUI_TEMP" noshortcuts: diff --git a/slovenian.nsh b/slovenian.nsh index 8cbcbc7c94..1bb6974cb0 100644 --- a/slovenian.nsh +++ b/slovenian.nsh @@ -8,10 +8,10 @@ !endif !define CURLANG ${LANG_SLOVENIAN} -LangString LicenseText ${CURLANG} "Tryton je izdan pod licenco GNU General Public License, kot jo je objavila Free Software Foundation, bodisi pod razlièico 3 ali (po va¹i izbiri) katerokoli poznej¹o razlièico. Licenco pozorno preberite. Kliknite Naprej za nadaljevanje." +LangString LicenseText ${CURLANG} "Tryton je izdan pod licenco GNU General Public License, kot jo je objavila Free Software Foundation, bodisi pod razlièico 3 ali (po va¹i izbiri) katerokoli poznej¹o razlièico. Licenco pozorno preberite. Kliknite Naprej za nadaljevanje." LangString LicenseNext ${CURLANG} "&Naprej" -LangString PreviousInstall ${CURLANG} "Prosimo, da odstranite prej¹njo namestitev Trytona" +LangString PreviousInstall ${CURLANG} "Tryton je že nameÅ¡Ä�en.$\n$\nKliknite »V redu«, da odstranite prejÅ¡njo razliÄ�ico ali »PrekliÄ�i«, da prekliÄ�ete to nadgradnjo." LangString SecTrytonName ${CURLANG} "Tryton" LangString SecTrytonDesc ${CURLANG} "Namestitev tryton.exe in ostalih potrebnih datotek" -LangString SecStartMenuName ${CURLANG} "Bli¾njici v zaèetnem meniju in na namizju" -LangString SecStartMenuDesc ${CURLANG} "Ustvari bli¾njici v zaèetnem meniju in na namizju" +LangString SecStartMenuName ${CURLANG} "Bli¾njici v zaèetnem meniju in na namizju" +LangString SecStartMenuDesc ${CURLANG} "Ustvari bli¾njici v zaèetnem meniju in na namizju" diff --git a/spanish.nsh b/spanish.nsh index 5f3e5941c1..58602cfea8 100644 --- a/spanish.nsh +++ b/spanish.nsh @@ -8,10 +8,10 @@ !endif !define CURLANG ${LANG_SPANISH} -LangString LicenseText ${CURLANG} "Tryton está liberado bajo la licencia «GNU General Public License» publicada por la Free Software Foundation, o bien la versión 3 de la licencia, o (a su elección) cualquier versión posterior. Lea cuidadosamente la licencia. Pulse «Siguiente» para continuar." +LangString LicenseText ${CURLANG} "Tryton está liberado bajo la licencia «GNU General Public License» publicada por la Free Software Foundation, o bien la versión 3 de la licencia, o (a su elección) cualquier versión posterior. Lea cuidadosamente la licencia. Pulse «Siguiente» para continuar." LangString LicenseNext ${CURLANG} "&Siguiente" -LangString PreviousInstall ${CURLANG} "Desinstale la instalación anterior de Tryton" +LangString PreviousInstall ${CURLANG} "Tryton ya está instalado.$\n$\nPulse `OK` para eliminar la versión anterior o `Cancelar` para cancelar la actualización." LangString SecTrytonName ${CURLANG} "Tryton" LangString SecTrytonDesc ${CURLANG} "Instalar tryton.exe y otros archivos necesarios" -LangString SecStartMenuName ${CURLANG} "Accesos directos en el menú de inicio y en el escritorio" -LangString SecStartMenuDesc ${CURLANG} "Crear accesos directos en el menú de inicio y en el escritorio" +LangString SecStartMenuName ${CURLANG} "Accesos directos en el menú de inicio y en el escritorio" +LangString SecStartMenuDesc ${CURLANG} "Crear accesos directos en el menú de inicio y en el escritorio"