Skip to content
Snippets Groups Projects
Commit 50089563efa0 authored by Cédric Krier's avatar Cédric Krier :atom:
Browse files

Automatically uninstall previous version from Windows installer

The series number is used to detect previous installation.

issue7007
review38221002
parent 7ddf63495e0e
No related branches found
No related tags found
No related merge requests found
......@@ -8,7 +8,7 @@
!endif
!define CURLANG ${LANG_CATALAN}
LangString LicenseText ${CURLANG} "Tryton est alliberat sota la llicncia GNU General Public License publicada per la Free Software Foundation, o b la versi 3 de la llicncia, o (sota la vostra elecci) qualsevol versi posterior. Llegiu detingudament la llicncia. Premeu Segent per continuar."
LangString LicenseNext ${CURLANG} "&Segent"
LangString PreviousInstall ${CURLANG} "Desinstalleu 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"
......@@ -14,4 +14,4 @@
LangString SecTrytonName ${CURLANG} "Tryton"
LangString SecTrytonDesc ${CURLANG} "Installa 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"
......@@ -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"
......
......@@ -8,5 +8,5 @@
!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"
......@@ -12,4 +12,4 @@
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"
......@@ -14,4 +14,4 @@
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"
......@@ -8,5 +8,5 @@
!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"
......@@ -12,3 +12,3 @@
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"
......@@ -14,4 +14,4 @@
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"
#!/bin/sh
set -e
version=`python setup.py --version`
series=${version%.*}
python setup.py compile_catalog
python setup-freeze.py install_exe -d dist
......@@ -4,3 +5,3 @@
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
......@@ -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"
......
;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} " "
......@@ -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,5 +18,6 @@
OutFile "tryton-${VERSION}.exe"
SetCompressor lzma
SetCompress auto
Unicode true
;Default installation folder
......@@ -17,5 +22,5 @@
;Default installation folder
InstallDir "$PROGRAMFILES\tryton-${VERSION}"
InstallDir "$PROGRAMFILES\Tryton-${SERIES}"
;Get installation folder from registry if available
......@@ -20,4 +25,4 @@
;Get installation folder from registry if available
InstallDirRegKey HKCU "Software\tryton-${VERSION}" ""
InstallDirRegKey HKCU "Software\Tryton-${SERIES}" ""
......@@ -23,5 +28,5 @@
BrandingText "Tryton ${VERSION}"
BrandingText "Tryton ${SERIES}"
;Vista redirects $SMPROGRAMS to all users without this
RequestExecutionLevel admin
......@@ -69,8 +74,6 @@
!include "slovenian.nsh"
!insertmacro MUI_LANGUAGE "Spanish"
!include "spanish.nsh"
!insertmacro MUI_LANGUAGE "Russian"
!include "russian.nsh"
;Reserve Files
......@@ -82,9 +85,20 @@
;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,7 +126,6 @@
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
......@@ -117,7 +130,8 @@
;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 @@
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,8 +163,7 @@
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
......@@ -155,8 +168,8 @@
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"
......@@ -158,9 +171,9 @@
!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:
......
......@@ -8,5 +8,5 @@
!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 razliico 3 ali (po vai izbiri) katerokoli poznejo razliico. 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"
......@@ -12,4 +12,4 @@
LangString LicenseNext ${CURLANG} "&Naprej"
LangString PreviousInstall ${CURLANG} "Prosimo, da odstranite prejnjo 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"
......@@ -14,4 +14,4 @@
LangString SecTrytonName ${CURLANG} "Tryton"
LangString SecTrytonDesc ${CURLANG} "Namestitev tryton.exe in ostalih potrebnih datotek"
LangString SecStartMenuName ${CURLANG} "Blinjici v zaetnem meniju in na namizju"
LangString SecStartMenuDesc ${CURLANG} "Ustvari blinjici v zaetnem 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"
......@@ -8,5 +8,5 @@
!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 versin 3 de la licencia, o (a su eleccin) cualquier versin 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"
......@@ -12,4 +12,4 @@
LangString LicenseNext ${CURLANG} "&Siguiente"
LangString PreviousInstall ${CURLANG} "Desinstale la instalacin 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"
......@@ -14,4 +14,4 @@
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"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment