Changes between Initial Version and Version 2 of Ticket #36


Ignore:
Timestamp:
Mar 31, 2010 11:26:15 PM (15 years ago)
Author:
cedric
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #36

    • Property Status changed from new to accepted
  • Ticket #36 – Description

    initial v2  
    1 Installateur pour la version 0.3 en utilisant le script NSIS 
     1Installateur pour la version 0.3 en utilisant le script NSIS. 
     2{{{ 
     3!include MUI.nsh ; interface moderne 
     4!include zipdll.nsh ; pour que le programme puisse décompresser un zip  
     5!include Services.nsi ; pour tester l'existence du service PostgreSQL 
     6; ces elts sont à rajouter comme extension au NSIS programe file 
     7 
     8!define sysGetDiskFreeSpaceEx 'kernel32::GetDiskFreeSpaceExA(t, *l, *l, *l) i' 
     9 
     10;------------------------------------------------------------------------------------------------------------------------ 
     11; The name of the installer 
     12Name "Stacomi0.3" 
     13Caption "Station de contrôle des migrations" 
     14 
     15; The file to write 
     16OutFile STACOMI0.3-setup.exe 
     17 
     18; The default installation directory 
     19InstallDir $PROGRAMFILES 
     20; macro NSIS 
     21 
     22; Registry key to check for directory (so if you install again, it will  
     23; overwrite the old one automatically) 
     24InstallDirRegKey HKLM "Software\MigraTools" "Install_Dir" 
     25 
     26;------------------------------------------------------------------------------------------------------------------------ 
     27RequestExecutionLevel admin 
     28AutoCloseWindow false 
     29ShowInstDetails show 
     30;------------------------------------------------------------------------------------------------------------------------ 
     31 
     32!insertmacro MUI_PAGE_WELCOME 
     33!insertmacro MUI_PAGE_LICENSE "license.rtf" 
     34!insertmacro MUI_PAGE_COMPONENTS 
     35!insertmacro MUI_PAGE_INSTFILES 
     36!insertmacro MUI_PAGE_FINISH 
     37!insertmacro MUI_LANGUAGE "French" 
     38UninstPage uninstConfirm 
     39UninstPage instfiles 
     40 
     41 
     42Function .onInstFailed 
     43    MessageBox MB_OK "Installation annulée par l'utilisateur" 
     44FunctionEnd 
     45 
     46function FreeDiskSpace 
     47  System::Call '${sysGetDiskFreeSpaceEx}(r0,.,,.r1)' 
     48  ; convert the large integer byte values into managable kb 
     49  System::Int64Op $1 / 1024 
     50  ; Return the free space 
     51  Pop $1 
     52functionend 
     53  
     54section - 
     55  StrCpy $0 '$PROGRAMFILES' ; le chemin ou les logiciels sont installés 
     56  Call FreeDiskSpace 
     57  
     58  StrCpy $2 800000 ; L'installation prend au maximum 800 Mo 
     59  System::Int64Op $1 > $2 ; Comparaison des espaces dispo/nécessaires 
     60  Pop $3 ; résultat 
     61  
     62  IntCmp $3 1 okay 
     63    MessageBox MB_OK "Pas assez d'espace disque. Veuillez faire de la place sur votre disque dur..." 
     64        Abort 
     65  okay: 
     66SectionEnd 
     67 
     68 
     69 
     70Section "Stacomi v.0.3" sec1 
     71        SetOutPath "C:\WINDOWS\Temp\" ; le répertoire (temporaire) de décompression 
     72        MessageBox MB_YESNO "Ceci va installer le programme Stacomi. Voulez-vous continuer ?" IDYES noAbort 
     73        Return 
     74         
     75        noAbort: 
     76                File "stacomi\stacomi.zip" 
     77                ZipDLL::extractall "stacomi.zip" $INSTDIR 
     78                 
     79                ;;création du fichier de désinstallation et mise a jour des registres 
     80                WriteUninstaller $INSTDIR\stacomi\uninstaller.exe 
     81                WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Stacomi" \ 
     82                 "DisplayName" "Contrôle des migrateurs 2010 - ONEMA" 
     83                WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Stacomi" \ 
     84                 "UninstallString" "$\"$INSTDIR\stacomi\uninstaller.exe"                 
     85SectionEnd 
     86 
     87Section "PostgreSQL v.8.4.3-1" sec2 
     88        SetOutPath "C:\WINDOWS\Temp\" ; le répertoire (temporaire) de décompression 
     89        MessageBox MB_YESNO "Ceci va installer le programme PostgreSQL v.8.4.3-1. Voulez-vous continuer ?" IDYES noAbort 
     90        Return 
     91 
     92        noAbort: 
     93                File "postgres\postgresql-8.4.3-1-windows.exe" 
     94 
     95                ; regarde si postgreSQL est déjà installé 
     96                StrCpy $0 0 
     97                ;HKLM hotkey local machine de lma base de registre 
     98                EnumRegKey $2 HKLM "Software\PostgreSQL\Installations" $0 
     99                ; strcm compare le resultat de 2 avec "" 
     100                StrCmp $2 "" NotInstalledYet   
     101                ReadRegStr $3 HKLM "Software\PostgreSQL\Installations\$2" "Base Directory" ;lecture du path dans la base de regitre 
     102 
     103                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" 
     104                 
     105                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) 
     106                StrCpy $postgresPath $3 ; StrCpy = copie de 3 dans postgresPath 
     107                Return 
     108 
     109                NotInstalledYet: ; installation de postgres 
     110                        ; sinon installation de la version 8.4           
     111                        ExecWait 'postgresql-8.4.3-1-windows.exe --mode unattended  
     112                        StrCpy $postgresPath "$PROGRAMFILES\\PostgreSQL"  
     113                        Return 
     114         
     115SectionEnd 
     116 
     117Section "Pilote ODBC" sec4 
     118        SetOutPath "C:\WINDOWS\Temp\" ; le répertoire (temporaire) de décompression 
     119        MessageBox MB_YESNO "Ceci va installer le pilote ODBC PostgreSQL. Voulez-vous continuer (defaut oui)?" IDYES noAbort 
     120        Return 
     121         
     122        noAbort: 
     123        ;lancement de l'installation du pilote ODBC PostgreSQL 
     124        File "psqlodbc.msi" 
     125        ExecWait '"msiexec" /i "psqlodbc.msi" /qn' 
     126        ; Option silencieuse 
     127 
     128        ; création du lien ODBC 
     129        File "DriverLienODBC\lienODBC.bat" 
     130        File "DriverLienODBC\ScriptCreationLienODBC.reg" 
     131        ExecWait 'lienODBC.bat' 
     132 
     133SectionEnd 
     134 
     135Section "Import BD_CONTMIG_LOCAL" sec3 
     136 
     137        SetOutPath "C:\WINDOWS\Temp\" ; le répertoire (temporaire) de décompression 
     138         
     139        /* 
     140                ; regarde si postgreSQL est déjà installé 
     141                services::GetServiceNameFromDisplayName 'postgre' 
     142                Pop $0 
     143                IntCmp $0 0 NotInstalledYet ; si la recherche a retourné 0 résultat => aucune installation n'a été détectée 
     144                IntOp $0 $0 - 1 
     145                Pop $1 
     146        */ 
     147        ; Dans le cas ou Postgres est décoché, le programme ci dessous ne sera pas exécuté plus haut, on refait... 
     148        ; regarde si postgreSQL est déjà installé 
     149        StrCpy $0 0 
     150        ;HKLM hotkey local machine de lma base de registre 
     151        EnumRegKey $2 HKLM "Software\PostgreSQL\Installations" $0 
     152        ; strcm compare le resultat de 2 avec "" 
     153        StrCmp $2 "" NotInstalledYet   
     154        ReadRegStr $3 HKLM "Software\PostgreSQL\Installations\$2" "Base Directory" ;lecture du path dans la base de regitre 
     155 
     156        ; mise a jour de la variable permettant de localiser l'install de postgreSQL précédente... 
     157        StrCpy $postgresPath $3 
     158                 
     159        MessageBox MB_YESNO "Ceci va installer une copie de la base de données BD_CONTMIG_LOCAL. Voulez-vous continuer ?" IDYES continue 
     160        Return 
     161         
     162        continue: 
     163        File "Basepleine.backup" 
     164        File "crea_bd_contmig_local.sql" 
     165 
     166        ;client_encoding = 'UTF8' 
     167    ExecWait '$postgresPath\bin\psql.exe -h localhost -p 5432 -U postgres -f crea_bd_contmig_local.sql'  
     168        ExecWait '$postgresPath\bin\pg_restore.exe -h localhost -p 5432 -U postgres -d "BD_CONTMIG_LOCAL" -v "BasePleine.backup"' 
     169        Return 
     170 
     171        NotInstalledYet: 
     172        MessageBox MB_OK|MB_ICONINFORMATION "PostgreSQL doit être installé. Installez-le avant" 
     173         
     174SectionEnd 
     175 
     176Section "R v.2.10.1" sec5 
     177        SetOutPath "C:\WINDOWS\Temp\" ; le répertoire (temporaire) de décompression 
     178        MessageBox MB_YESNO "Ceci va installer le programme R en version 2.10.1. Voulez-vous continuer ?" IDYES noAbort 
     179        Return 
     180         
     181        noAbort: 
     182        ;lancement de l'installation de R 
     183        ;File met le fichier dans l'executable puis va le décomprreser dans c/windows/temp 
     184        File "R\R-2.10.1-win32.exe" 
     185        File "R\libraries.zip" 
     186        ; File "R\scriptInstallStacomi.txt" 
     187         
     188        ; installation de R 
     189        ExecWait 'R-2.10.1-win32.exe /SILENT'  
     190        ; ExecWait '"$PROGRAMFILES\R\R-2.10.1\bin\R.exe" -f scriptInstallStacomi.txt' ; installation du package stacomi 
     191         
     192        ; extraction des packages nécessaires pour faire fonctionner le programme 
     193        ZipDLL::extractall "libraries.zip" $INSTDIR\R\R-2.10.1\library 
     194         
     195        ; création du répertoire calcmigData : récupération du chemin de "Mes documents" 
     196        ; Call "GetMyDocs" ; la fonction écrit le chemin de "Mes documents" dans $0 
     197        CreateDirectory "$0\CalcmigData" 
     198 
     199SectionEnd 
     200/* 
     201Section "Documentation" sec6 
     202        SetOutPath "C:\WINDOWS\Temp\" ; le répertoire (temporaire) de décompression 
     203                MessageBox MB_YESNO "Ceci va copier la documentation sur le disque. Voulez-vous continuer ?" IDYES noAbort 
     204                Return 
     205                 
     206                noAbort: 
     207                        File "Documentation.zip" 
     208                        ZipDLL::extractall "Documentation.zip" "$INSTDIR\stacomi" 
     209 
     210        CreateShortCut "$DESKTOP\Documentation stacomi.lnk" "$PROGRAMFILES\stacomi\Documentation\documentation.htm" 
     211SectionEnd 
     212*/ 
     213Section "Raccourci stacomi" sec6 
     214        SetOutPath "$INSTDIR\stacomi" 
     215        CreateShortCut "$DESKTOP\stacomi.lnk" "$PROGRAMFILES\stacomi\stacomi0.3.1603.jar" 
     216SectionEnd 
     217 
     218Section Uninstall 
     219  ;Removes directory and registry key: 
     220  RMDIR /r $INSTDIR 
     221  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Stacomi" 
     222SectionEnd 
     223 
     224 
     225 
     226 
     227 
     228; This Function will display "My Documents" Folder path. 
     229; Now it suppose to work with multiple users. 
     230; Created by Joel  
     231Function "GetMyDocs" 
     232  ReadRegStr $0 HKCU \ 
     233             "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" \ 
     234             Personal 
     235FunctionEnd 
     236 
     237; delete a directory only if empty 
     238Function un.DeleteDirIfEmpty 
     239  FindFirst $R0 $R1 "$0\*.*" 
     240  strcmp $R1 "." 0 NoDelete 
     241   FindNext $R0 $R1 
     242   strcmp $R1 ".." 0 NoDelete 
     243    ClearErrors 
     244    FindNext $R0 $R1 
     245    IfErrors 0 NoDelete 
     246     FindClose $R0 
     247     Sleep 1000 
     248     RMDir "$0" 
     249  NoDelete: 
     250   FindClose $R0 
     251FunctionEnd 
     252 
     253 
     254; Returns: 0 - PostgreSQL not found. -1 - PostgreSQL found but too old. Otherwise - PostgreSQL version 
     255; DetectPostgreSQL. Version requested is on the stack. 
     256; Returns (on stack) "0" on failure (java too old or not installed), otherwise path to java interpreter 
     257; Stack value will be overwritten! 
     258; Function DetectPostgreSQL 
     259; Exch $0 ; Get version requested  
     260;Now the previous value of $0 is on the stack, and the asked for version of JDK is in $0 
     261; Push $1 ; $1 = PostgreSQL version string (ie 8.2) 
     262; Push $2 ; $2 = registry key 
     263 
     264;scan through all installs to get the highest version 
     265; StrCpy $0 0 
     266; DetectPostgreSQLLoop: 
     267; EnumRegKey $2 HKLM "Software\PostgreSQL\Installations" $0 
     268; StrCmp $2 "" DetectPostgreSQLDone 
     269; ReadRegStr $1 HKLM "Software\PostgreSQL\Installations\$2" "Version" 
     270; ReadRegStr $3 HKLM "Software\PostgreSQL\Installations\$2" "Base Directory" 
     271; IntOp $0 $0 + 1 
     272; goto DetectPostgreSQLLoop 
     273; DetectPostgreSQLDone: 
     274; StrCmp $1 "" NoFound 
     275; IntCmp $1 $0 FoundNew FoundOld FoundNew 
     276 
     277; NoFound: 
     278; Push "0" 
     279; Goto DetectPostgreSQLEnd 
     280; FoundOld: 
     281; Push "-1" 
     282; Goto DetectPostgreSQLEnd  
     283; FoundNew: 
     284; Push "$3" 
     285; Goto DetectPostgreSQLEnd 
     286; DetectPostgreSQLEnd: 
     287;;Top of stack is return value, then r4,r3,r2,r1 
     288; Exch ; => r2,rv,r1,r0 
     289; Pop $2 ; => rv,r1,r0 
     290; Exch ; => r1,rv,r0 
     291; Pop $1 ; => rv,r0 
     292; Exch ; => r0,rv 
     293; Pop $0 ; => rv  
     294; FunctionEnd 
     295 
     296 
     297 
     298 
     299 
     300; --------------------------------------------------------------------------------------------- 
     301; DESCRIPTIONS  
     302; --------------------------------------------------------------------------------------------- 
     303!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN 
     304        !insertmacro MUI_DESCRIPTION_TEXT ${sec1} "Installation de l'interface de saisie Java" 
     305        !insertmacro MUI_DESCRIPTION_TEXT ${sec2} "Installation de PostgreSQL v.8.4, le serveur de base de données" 
     306        !insertmacro MUI_DESCRIPTION_TEXT ${sec3} "Création et initialisation de la base de données pour les migrations" 
     307        !insertmacro MUI_DESCRIPTION_TEXT ${sec4} "Installation du pilote et lien ODBC pour accéder à la base de données à partir de R" 
     308        !insertmacro MUI_DESCRIPTION_TEXT ${sec5} "Installation de R 2.10.1 et des packages stacomi et ggplot2usr pour le calcul des migrations" 
     309;       !insertmacro MUI_DESCRIPTION_TEXT ${sec6} "Copie de la documentation des applications de saisie et d'analyse. Documentation au format HTML" 
     310        !insertmacro MUI_DESCRIPTION_TEXT ${sec6} "Création d'un raccourci sur le bureau, permettant d'accéder à l'interface de saisie des données" 
     311!insertmacro MUI_FUNCTION_DESCRIPTION_END 
     312 
     313 
     314 
     315 
     316 
     317 
     318 
     319 
     320 
     321 
     322 
     323}}}