Automatically uninstall previous version from Windows installer

The series number is used to detect previous installation.

issue7007
review38221002
This commit is contained in:
Cédric Krier
2018-05-23 23:31:31 +02:00
parent 15a0003e0e
commit b5516cccdb
11 changed files with 59 additions and 62 deletions
+6 -6
View File
@@ -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"
+1 -1
View File
@@ -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"
BIN
View File
Binary file not shown.
+4 -4
View File
@@ -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"
+5 -5
View File
@@ -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"
+2 -1
View File
@@ -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
+1 -1
View File
@@ -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"
-17
View File
@@ -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} "Ñîçäàòü ÿðëûêè â ìåíþ Ïóñê è íà ðàáî÷åì ñòîëå"
+32 -19
View File
@@ -5,6 +5,10 @@
!ifndef VERSION
!error "Missing VERSION! Specify it with '/DVERSION=<VERSION>'"
!endif
;Check series
!ifndef SERIES
!error "Missing SERIES! Specify if with '/DSERIES=<SERIES>'"
!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:
+4 -4
View File
@@ -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"
+4 -4
View File
@@ -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"