Identifier le Service Pack CATIA via macro VBA

Comment identifier le Service Pack (SP) d’une version de CATIA à l’aide d’une macro VBA, en recherchant une clé dans la base de registre ou par une autre méthode ?

Pour identifier le Service Pack (SP) d’une version de CATIA via une macro VBA, la méthode la plus fiable consiste à lire le contenu d’un fichier spécifique plutôt qu’à chercher dans la base de registre.

Voici la démarche experte :

  1. Localisation du fichier de Service Pack :
    Le Service Pack installé est généralement indiqué dans un fichier texte nommé LevelSPK.txt.

  2. Chemin d’accès au fichier :
    Ce fichier se trouve dans le répertoire d’installation de CATIA. Le chemin typique est le suivant :
    C:\Program Files\Dassault Systemes\BXX\intel_a\
    BXX représente la version principale de CATIA (par exemple, B18 pour CATIA V5 R18, B19 pour V5 R19, etc.).

  3. Implémentation VBA :
    Vous pouvez utiliser VBA pour lire le contenu de ce fichier LevelSPK.txt.
    Voici un exemple de code VBA pour lire le fichier et extraire le numéro du Service Pack :

    Sub GetCatiaServicePack()
        Dim filePath As String
        Dim spVersion As String
        Dim fileNum As Integer
        Dim lineFromFile As String
        Dim installDir As String
        Dim catiaVersion As String ' Exemple: 'B19' pour V5 R19
    
        ' --- Configuration --- 
        ' Vous devrez peut-être adapter cette partie pour trouver dynamiquement le répertoire d'installation de CATIA
        ' ou demander à l'utilisateur de le spécifier.
        ' Pour cet exemple, nous supposons une structure commune.
        catiaVersion = "B19" ' Remplacez par la version de CATIA concernée
        installDir = "C:\Program Files\Dassault Systemes\" & catiaVersion & "\intel_a\"
        filePath = installDir & "LevelSPK.txt"
        ' ---------------------
    
        On Error GoTo ErrorHandler
    
        ' Vérifier si le fichier existe
        If Dir(filePath) = "" Then
            MsgBox "Le fichier LevelSPK.txt n'a pas été trouvé à l'emplacement : " & filePath, vbExclamation
            Exit Sub
        End If
    
        ' Ouvrir le fichier en lecture seule
        fileNum = FreeFile
        Open filePath For Input As #fileNum
    
        ' Lire le contenu ligne par ligne (souvent, le SP est sur la première ligne ou facilement identifiable)
        Do While Not EOF(fileNum)
            Line Input #fileNum, lineFromFile
            ' Le format du fichier peut varier légèrement, mais il contient généralement le numéro du SP
            ' Exemple: "CATIA V5 R19 SP6"
            If InStr(lineFromFile, "SP") > 0 Then
                spVersion = lineFromFile
                Exit Do ' Sortir dès qu'on trouve une ligne contenant "SP"
            End If
        Loop
    
        Close #fileNum
    
        If spVersion <> "" Then
            MsgBox "Le Service Pack de CATIA est : " & spVersion, vbInformation
        Else
            MsgBox "Impossible de déterminer le Service Pack à partir du fichier.", vbExclamation
        End If
    
        Exit Sub
    
    ErrorHandler:
        MsgBox "Une erreur s'est produite : " & Err.Description, vbCritical
        If fileNum <> 0 Then Close #fileNum
    End Sub
    

Conseils supplémentaires :

  • Gestion des erreurs : Assurez-vous d’inclure une gestion des erreurs robuste pour les cas où le fichier n’existe pas ou si les permissions d’accès sont insuffisantes.
  • Adaptabilité : Le chemin d’installation peut varier. Il est préférable de rendre le chemin d’accès dynamique ou de le demander à l’utilisateur si le script doit être utilisé sur différentes machines.
  • Versions antérieures : Pour des versions très anciennes de CATIA, la méthode pourrait différer, mais pour CATIA V5 et les versions plus récentes, LevelSPK.txt est la norme.

Cette approche est plus fiable que la recherche dans la base de registre, car la structure de celle-ci peut changer entre les versions de CATIA ou de Windows, tandis que le fichier LevelSPK.txt est une méthode de documentation standardisée par Dassault Systèmes pour les Service Packs.