Opened 15 years ago
Closed 15 years ago
#36 closed task (fixed)
Installateur
Reported by: | cedric | Owned by: | cedric |
---|---|---|---|
Priority: | major | Milestone: | Release v0.3 stacomiJAVA |
Component: | Programme Java | Version: | 0.3 |
Keywords: | Cc: |
Description (last modified by cedric)
Installateur pour la version 0.3 en utilisant le script NSIS.
!include MUI.nsh ; interface moderne !include zipdll.nsh ; pour que le programme puisse décompresser un zip !include Services.nsi ; pour tester l'existence du service PostgreSQL ; ces elts sont à rajouter comme extension au NSIS programe file !define sysGetDiskFreeSpaceEx 'kernel32::GetDiskFreeSpaceExA(t, *l, *l, *l) i' ;------------------------------------------------------------------------------------------------------------------------ ; The name of the installer Name "Stacomi0.3" Caption "Station de contrôle des migrations" ; The file to write OutFile STACOMI0.3-setup.exe ; The default installation directory InstallDir $PROGRAMFILES ; macro NSIS ; Registry key to check for directory (so if you install again, it will ; overwrite the old one automatically) InstallDirRegKey HKLM "Software\MigraTools" "Install_Dir" ;------------------------------------------------------------------------------------------------------------------------ RequestExecutionLevel admin AutoCloseWindow false ShowInstDetails show ;------------------------------------------------------------------------------------------------------------------------ !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE "license.rtf" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH !insertmacro MUI_LANGUAGE "French" UninstPage uninstConfirm UninstPage instfiles Function .onInstFailed MessageBox MB_OK "Installation annulée par l'utilisateur" FunctionEnd function FreeDiskSpace System::Call '${sysGetDiskFreeSpaceEx}(r0,.,,.r1)' ; convert the large integer byte values into managable kb System::Int64Op $1 / 1024 ; Return the free space Pop $1 functionend section - StrCpy $0 '$PROGRAMFILES' ; le chemin ou les logiciels sont installés Call FreeDiskSpace StrCpy $2 800000 ; L'installation prend au maximum 800 Mo System::Int64Op $1 > $2 ; Comparaison des espaces dispo/nécessaires Pop $3 ; résultat IntCmp $3 1 okay MessageBox MB_OK "Pas assez d'espace disque. Veuillez faire de la place sur votre disque dur..." Abort okay: SectionEnd Section "Stacomi v.0.3" sec1 SetOutPath "C:\WINDOWS\Temp\" ; le répertoire (temporaire) de décompression MessageBox MB_YESNO "Ceci va installer le programme Stacomi. Voulez-vous continuer ?" IDYES noAbort Return noAbort: File "stacomi\stacomi.zip" ZipDLL::extractall "stacomi.zip" $INSTDIR ;;création du fichier de désinstallation et mise a jour des registres WriteUninstaller $INSTDIR\stacomi\uninstaller.exe WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Stacomi" \ "DisplayName" "Contrôle des migrateurs 2010 - ONEMA" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Stacomi" \ "UninstallString" "$\"$INSTDIR\stacomi\uninstaller.exe" SectionEnd Section "PostgreSQL v.8.4.3-1" sec2 SetOutPath "C:\WINDOWS\Temp\" ; le répertoire (temporaire) de décompression MessageBox MB_YESNO "Ceci va installer le programme PostgreSQL v.8.4.3-1. Voulez-vous continuer ?" IDYES noAbort Return noAbort: File "postgres\postgresql-8.4.3-1-windows.exe" ; regarde si postgreSQL est déjà installé StrCpy $0 0 ;HKLM hotkey local machine de lma base de registre EnumRegKey $2 HKLM "Software\PostgreSQL\Installations" $0 ; strcm compare le resultat de 2 avec "" StrCmp $2 "" NotInstalledYet ReadRegStr $3 HKLM "Software\PostgreSQL\Installations\$2" "Base Directory" ;lecture du path dans la base de regitre MessageBox MB_OK|MB_ICONINFORMATION "PostgreSQL ne sera pas installé car une installation précédente a déjà été détectée,veuillez la désinstaller $3" Var /GLOBAL postgresPath ; mise a jour de la variable permettant de localiser l'install de postgreSQL précédente... (le fait de mettre global permet de déclarer la variable dans l'ensemble du programme) StrCpy $postgresPath $3 ; StrCpy = copie de 3 dans postgresPath Return NotInstalledYet: ; installation de postgres ; sinon installation de la version 8.4 ExecWait 'postgresql-8.4.3-1-windows.exe --mode unattended StrCpy $postgresPath "$PROGRAMFILES\\PostgreSQL" Return SectionEnd Section "Pilote ODBC" sec4 SetOutPath "C:\WINDOWS\Temp\" ; le répertoire (temporaire) de décompression MessageBox MB_YESNO "Ceci va installer le pilote ODBC PostgreSQL. Voulez-vous continuer (defaut oui)?" IDYES noAbort Return noAbort: ;lancement de l'installation du pilote ODBC PostgreSQL File "psqlodbc.msi" ExecWait '"msiexec" /i "psqlodbc.msi" /qn' ; Option silencieuse ; création du lien ODBC File "DriverLienODBC\lienODBC.bat" File "DriverLienODBC\ScriptCreationLienODBC.reg" ExecWait 'lienODBC.bat' SectionEnd Section "Import BD_CONTMIG_LOCAL" sec3 SetOutPath "C:\WINDOWS\Temp\" ; le répertoire (temporaire) de décompression /* ; regarde si postgreSQL est déjà installé services::GetServiceNameFromDisplayName 'postgre' Pop $0 IntCmp $0 0 NotInstalledYet ; si la recherche a retourné 0 résultat => aucune installation n'a été détectée IntOp $0 $0 - 1 Pop $1 */ ; Dans le cas ou Postgres est décoché, le programme ci dessous ne sera pas exécuté plus haut, on refait... ; regarde si postgreSQL est déjà installé StrCpy $0 0 ;HKLM hotkey local machine de lma base de registre EnumRegKey $2 HKLM "Software\PostgreSQL\Installations" $0 ; strcm compare le resultat de 2 avec "" StrCmp $2 "" NotInstalledYet ReadRegStr $3 HKLM "Software\PostgreSQL\Installations\$2" "Base Directory" ;lecture du path dans la base de regitre ; mise a jour de la variable permettant de localiser l'install de postgreSQL précédente... StrCpy $postgresPath $3 MessageBox MB_YESNO "Ceci va installer une copie de la base de données BD_CONTMIG_LOCAL. Voulez-vous continuer ?" IDYES continue Return continue: File "Basepleine.backup" File "crea_bd_contmig_local.sql" ;client_encoding = 'UTF8' ExecWait '$postgresPath\bin\psql.exe -h localhost -p 5432 -U postgres -f crea_bd_contmig_local.sql' ExecWait '$postgresPath\bin\pg_restore.exe -h localhost -p 5432 -U postgres -d "BD_CONTMIG_LOCAL" -v "BasePleine.backup"' Return NotInstalledYet: MessageBox MB_OK|MB_ICONINFORMATION "PostgreSQL doit être installé. Installez-le avant" SectionEnd Section "R v.2.10.1" sec5 SetOutPath "C:\WINDOWS\Temp\" ; le répertoire (temporaire) de décompression MessageBox MB_YESNO "Ceci va installer le programme R en version 2.10.1. Voulez-vous continuer ?" IDYES noAbort Return noAbort: ;lancement de l'installation de R ;File met le fichier dans l'executable puis va le décomprreser dans c/windows/temp File "R\R-2.10.1-win32.exe" File "R\libraries.zip" ; File "R\scriptInstallStacomi.txt" ; installation de R ExecWait 'R-2.10.1-win32.exe /SILENT' ; ExecWait '"$PROGRAMFILES\R\R-2.10.1\bin\R.exe" -f scriptInstallStacomi.txt' ; installation du package stacomi ; extraction des packages nécessaires pour faire fonctionner le programme ZipDLL::extractall "libraries.zip" $INSTDIR\R\R-2.10.1\library ; création du répertoire calcmigData : récupération du chemin de "Mes documents" ; Call "GetMyDocs" ; la fonction écrit le chemin de "Mes documents" dans $0 CreateDirectory "$0\CalcmigData" SectionEnd /* Section "Documentation" sec6 SetOutPath "C:\WINDOWS\Temp\" ; le répertoire (temporaire) de décompression MessageBox MB_YESNO "Ceci va copier la documentation sur le disque. Voulez-vous continuer ?" IDYES noAbort Return noAbort: File "Documentation.zip" ZipDLL::extractall "Documentation.zip" "$INSTDIR\stacomi" CreateShortCut "$DESKTOP\Documentation stacomi.lnk" "$PROGRAMFILES\stacomi\Documentation\documentation.htm" SectionEnd */ Section "Raccourci stacomi" sec6 SetOutPath "$INSTDIR\stacomi" CreateShortCut "$DESKTOP\stacomi.lnk" "$PROGRAMFILES\stacomi\stacomi0.3.1603.jar" SectionEnd Section Uninstall ;Removes directory and registry key: RMDIR /r $INSTDIR DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Stacomi" SectionEnd ; This Function will display "My Documents" Folder path. ; Now it suppose to work with multiple users. ; Created by Joel Function "GetMyDocs" ReadRegStr $0 HKCU \ "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" \ Personal FunctionEnd ; delete a directory only if empty Function un.DeleteDirIfEmpty FindFirst $R0 $R1 "$0\*.*" strcmp $R1 "." 0 NoDelete FindNext $R0 $R1 strcmp $R1 ".." 0 NoDelete ClearErrors FindNext $R0 $R1 IfErrors 0 NoDelete FindClose $R0 Sleep 1000 RMDir "$0" NoDelete: FindClose $R0 FunctionEnd ; Returns: 0 - PostgreSQL not found. -1 - PostgreSQL found but too old. Otherwise - PostgreSQL version ; DetectPostgreSQL. Version requested is on the stack. ; Returns (on stack) "0" on failure (java too old or not installed), otherwise path to java interpreter ; Stack value will be overwritten! ; Function DetectPostgreSQL ; Exch $0 ; Get version requested ;Now the previous value of $0 is on the stack, and the asked for version of JDK is in $0 ; Push $1 ; $1 = PostgreSQL version string (ie 8.2) ; Push $2 ; $2 = registry key ;scan through all installs to get the highest version ; StrCpy $0 0 ; DetectPostgreSQLLoop: ; EnumRegKey $2 HKLM "Software\PostgreSQL\Installations" $0 ; StrCmp $2 "" DetectPostgreSQLDone ; ReadRegStr $1 HKLM "Software\PostgreSQL\Installations\$2" "Version" ; ReadRegStr $3 HKLM "Software\PostgreSQL\Installations\$2" "Base Directory" ; IntOp $0 $0 + 1 ; goto DetectPostgreSQLLoop ; DetectPostgreSQLDone: ; StrCmp $1 "" NoFound ; IntCmp $1 $0 FoundNew FoundOld FoundNew ; NoFound: ; Push "0" ; Goto DetectPostgreSQLEnd ; FoundOld: ; Push "-1" ; Goto DetectPostgreSQLEnd ; FoundNew: ; Push "$3" ; Goto DetectPostgreSQLEnd ; DetectPostgreSQLEnd: ;;Top of stack is return value, then r4,r3,r2,r1 ; Exch ; => r2,rv,r1,r0 ; Pop $2 ; => rv,r1,r0 ; Exch ; => r1,rv,r0 ; Pop $1 ; => rv,r0 ; Exch ; => r0,rv ; Pop $0 ; => rv ; FunctionEnd ; --------------------------------------------------------------------------------------------- ; DESCRIPTIONS ; --------------------------------------------------------------------------------------------- !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${sec1} "Installation de l'interface de saisie Java" !insertmacro MUI_DESCRIPTION_TEXT ${sec2} "Installation de PostgreSQL v.8.4, le serveur de base de données" !insertmacro MUI_DESCRIPTION_TEXT ${sec3} "Création et initialisation de la base de données pour les migrations" !insertmacro MUI_DESCRIPTION_TEXT ${sec4} "Installation du pilote et lien ODBC pour accéder à la base de données à partir de R" !insertmacro MUI_DESCRIPTION_TEXT ${sec5} "Installation de R 2.10.1 et des packages stacomi et ggplot2usr pour le calcul des migrations" ; !insertmacro MUI_DESCRIPTION_TEXT ${sec6} "Copie de la documentation des applications de saisie et d'analyse. Documentation au format HTML" !insertmacro MUI_DESCRIPTION_TEXT ${sec6} "Création d'un raccourci sur le bureau, permettant d'accéder à l'interface de saisie des données" !insertmacro MUI_FUNCTION_DESCRIPTION_END
Change History (4)
comment:1 Changed 15 years ago by cedric
- Status changed from new to accepted
comment:2 Changed 15 years ago by cedric
- Description modified (diff)
comment:3 Changed 15 years ago by cedric
comment:4 Changed 15 years ago by cedric
- Resolution set to fixed
- Status changed from accepted to closed
Ok l'installateur fonctionne
Note: See
TracTickets for help on using
tickets.
Reste à vérifier la version du lien ODBC
Modifier le script sql du fichier d'install à partir de la source contenant les données de l'IAV.