;***************************************************************** ; Author : Hugues DOILLON ; Date : 03/2007 ; Modifié : ;***************************************************************** !include "FileFunc.nsh" !include "LogicLib.nsh" !include "InformationApplication.nsh" !insertmacro GetFileExt ; Spécifie si oui ou non l'installation sera silencieuse SilentInstall silent ;ddp; OutFile "Installation_librairie_temp\SetupInstallationLibrairie.exe" Function .onInit ; Fichier écrit contenant la liste des librairies à installer FileOpen $R0 "${GBE_BINDIR}\InstallationLibrairie.nsh" w ;------------------------------------------------------------------------------------------------------------------------------- ;------------------------------------------------------------------------------------------------------------------------------- FileWrite $R0 "!macro SectionLibrairies" ; Retour à la ligne FileWriteByte $R0 "13" FileWriteByte $R0 "10" ; Parcourt des librairies du répertoire SysDir_DLL FindFirst $R1 $R2 "${LIBRAIRIE_SYSDIR}\*.*" loop2: StrCmp $R2 "" done2 StrCmp $R2 '.' nothing2 StrCmp $R2 '..' nothing2 StrCmp $R2 '.svn' nothing2 ; Commande d'enregistrement des librairies enrgistré dans le fichier FileWrite $R0 "!insertmacro InstallLib DLL 0 REBOOT_PROTECTED $\"${LIBRAIRIE_SYSDIR}\$R2$\" $\"$SYSDIR\$R2$\" $\"$SYSDIR$\"" ; Retour à la ligne FileWriteByte $R0 "13" FileWriteByte $R0 "10" nothing2: FindNext $R1 $R2 Goto loop2 done2: ;------------------------------------------------------------------------------------------------------------------------------- ; Parcourt des librairies du répertoire SysDir_DLL FindFirst $R1 $R2 "${LIBRAIRIE_REGISTRED_SYSDIR}\*.*" loop3: StrCmp $R2 "" done3 StrCmp $R2 '.' nothing3 StrCmp $R2 '..' nothing3 StrCmp $R2 '.svn' nothing3 ; Recupere l extension ${GetFileExt} "$R2" $R3 StrCmp $R3 "tlb" 0 else31 FileWrite $R0 "!insertmacro InstallLib TLB 0 REBOOT_PROTECTED $\"${LIBRAIRIE_REGISTRED_SYSDIR}\$R2$\" $\"$SYSDIR\$R2$\" $\"$SYSDIR$\"" Goto done31 else31: FileWrite $R0 "!insertmacro InstallLib REGDLL 0 REBOOT_PROTECTED $\"${LIBRAIRIE_REGISTRED_SYSDIR}\$R2$\" $\"$SYSDIR\$R2$\" $\"$SYSDIR$\"" done31: ; Retour à la ligne FileWriteByte $R0 "13" FileWriteByte $R0 "10" nothing3: FindNext $R1 $R2 Goto loop3 done3: ;------------------------------------------------------------------------------------------------------------------------------- ; Parcourt des librairies du répertoire Librairie_ProgramFiles FindFirst $R1 $R2 "${LIBRAIRIE_PROGRAMFILES}\*.*" loop4: StrCmp $R2 "" done4 StrCmp $R2 '.' nothing4 StrCmp $R2 '..' nothing4 StrCmp $R2 '.svn' nothing4 ; Commande d'enregistrement des librairies enrgistré dans le fichier FileWrite $R0 "!insertmacro InstallLib DLL 0 NOREBOOT_PROTECTED $\"${LIBRAIRIE_PROGRAMFILES}\$R2$\" $\"$$INSTDIR\$R2$\" $\"$$INSTDIR$\"" ; Retour à la ligne FileWriteByte $R0 "13" FileWriteByte $R0 "10" nothing4: FindNext $R1 $R2 Goto loop4 done4: ;------------------------------------------------------------------------------------------------------------------------------- ; Parcourt des librairies du répertoire Librairie_ProgramFiles_Register FindFirst $R1 $R2 "${LIBRAIRIE_REGISTRED_PROGRAMFILES}\*.*" loop5: StrCmp $R2 "" done5 StrCmp $R2 '.' nothing5 StrCmp $R2 '..' nothing5 StrCmp $R2 '.svn' nothing5 ; Recupere l extension ${GetFileExt} "$R2" $R3 StrCmp $R3 "tlb" 0 else51 FileWrite $R0 "!insertmacro InstallLib TLB 0 NOREBOOT_PROTECTED $\"${LIBRAIRIE_REGISTRED_PROGRAMFILES}\$R2$\" $\"$$INSTDIR\$R2$\" $\"$$INSTDIR$\"" Goto done51 else51: FileWrite $R0 "!insertmacro InstallLib REGDLL 0 NOREBOOT_PROTECTED $\"${LIBRAIRIE_REGISTRED_PROGRAMFILES}\$R2$\" $\"$$INSTDIR\$R2$\" $\"$$INSTDIR$\"" done51: ; Retour à la ligne FileWriteByte $R0 "13" FileWriteByte $R0 "10" nothing5: FindNext $R1 $R2 Goto loop5 done5: FileWrite $R0 "!macroend" FileWriteByte $R0 "13" FileWriteByte $R0 "10" ;------------------------------------------------------------------------------------------------------------------------------- ;------------------------------------------------------------------------------------------------------------------------------- ; Fonction qui désinstalle l'application FileWrite $R0 "!macro DesinstalleApplication" FileWriteByte $R0 "13" FileWriteByte $R0 "10" ; Parcourt des librairies du répertoire Librairie_ProgramFiles ; NOTSHARED - La librairie n'est pas partagée ; NOREBOOT_NOTPROTECTED Averti l'utilisateur quand la librairie est utilisée. L'utilisateur devra fermer les applications l'utilisant. ; Met à jour la librairie sans vérifier la protection de fichier Windows. FindFirst $R1 $R2 "${LIBRAIRIE_PROGRAMFILES}\*.*" loopU1: StrCmp $R2 "" doneU1 StrCmp $R2 '.' nothingU1 StrCmp $R2 '..' nothingU1 StrCmp $R2 '.svn' nothingU1 ; Commande d'enregistrement des librairies enrgistré dans le fichier FileWrite $R0 "!insertmacro UnInstallLib DLL NOTSHARED NOREBOOT_PROTECTED $\"$$INSTDIR\$R2$\"" ; Retour à la ligne FileWriteByte $R0 "13" FileWriteByte $R0 "10" nothingU1: FindNext $R1 $R2 Goto loopU1 doneU1: ; Parcourt des librairies du répertoire Librairie_ProgramFiles_Register FindFirst $R1 $R2 "${LIBRAIRIE_REGISTRED_PROGRAMFILES}\*.*" loopU2: StrCmp $R2 "" doneU2 StrCmp $R2 '.' nothingU2 StrCmp $R2 '..' nothingU2 StrCmp $R2 '.svn' nothingU2 ; Recupere l extension ${GetFileExt} "$R2" $R3 StrCmp $R3 "tlb" 0 elseU21 FileWrite $R0 "!insertmacro UnInstallLib TLB NOTSHARED NOREBOOT_PROTECTED $\"$$INSTDIR\$R2$\"" Goto doneU21 elseU21: FileWrite $R0 "!insertmacro UnInstallLib REGDLL NOTSHARED NOREBOOT_PROTECTED $\"$$INSTDIR\$R2$\"" doneU21: ; Retour à la ligne FileWriteByte $R0 "13" FileWriteByte $R0 "10" nothingU2: FindNext $R1 $R2 Goto loopU2 doneU2: ; Parcourt des fichiers du répertoire Application_ProgramFiles FindFirst $R1 $R2 "${APPLICATION_PROGRAMFILES}\*.*" loopU3: StrCmp $R2 "" doneU3 StrCmp $R2 '.' nothingU3 StrCmp $R2 '..' nothingU3 StrCmp $R2 '.svn' nothingU3 ${If} ${FileExists} "${APPLICATION_PROGRAMFILES}\$R2\*.*" ; On supprime le dossier FileWrite $R0 "RMDir /r $\"$$INSTDIR\$R2$\"" ${Else} ; On supprime le fichier FileWrite $R0 "Delete $\"$$INSTDIR\$R2$\"" ${EndIf} ; Retour à la ligne FileWriteByte $R0 "13" FileWriteByte $R0 "10" nothingU3: FindNext $R1 $R2 Goto loopU3 doneU3: FileWrite $R0 "RMDir $\"$$INSTDIR$\"" FileWriteByte $R0 "13" FileWriteByte $R0 "10" FileWrite $R0 "!macroend" FileWriteByte $R0 "13" FileWriteByte $R0 "10" ;------------------------------------------------------------------------------------------------------------------------------- FindCLose $R0 FunctionEnd Section SectionEnd