Subversion Repositories DevTools

Rev

Blame | Last modification | View Log | RSS feed

;*****************************************************************
; 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