Comment faire pour incrémenter les informations de version après chaque version de Visual C++

Traductions disponibles Traductions disponibles
Numéro d'article: 237870 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Résumé

Visual C++ n'a pas une fonctionnalité pour incrémenter automatiquement les informations de ressources de version de votre projet après chaque version. Cet article décrit une méthode pour fournir une telle fonctionnalité.

Plus d'informations

Vous pouvez écrire un programme pour modifier le fichier compilateur (.rc) ressources au lieu d'utiliser les étapes décrites ici. Toutefois, le fichier RC est sous le contrôle de Visual C++. Visual C++ modifie le fichier RC lors de l'enregistrement, et cela peut affecter la ressource de version. L'approche décrite dans cette section peut être appliquée à un projet Visual C++. Cet exemple montre comment utiliser un projet Microsoft Foundation classes.

Créer un nouveau projet à l'aide la appwizard MFC (EXE) et appeler il MyProject . MyProject va avoir un fichier MyProject.rc, qui inclut MyProject.rc2. Le fichier .RC2 est destiné à des ressources définis par l'utilisateur. Procédez comme suit pour incrémenter les informations de version du MyProject après chaque version :
  1. Supprimer la ressource de version du fichier .rc et placez-le dans le fichier .RC2 :

    1. Ouvrez MyProject.rc et MyProject.rc2 (trouvée dans le dossier res), dans un éditeur de texte. Pour utiliser l'Éditeur de Visual C++, cliquez sur Ouvrir dans le menu Fichier et sélectionnez texte dans la liste Ouvrir en tant que pour le fichier MyProject.rc.
    2. Rechercher la version ressource instructions MyProject.rc. Il doit ressembler à:
      /////////////////////////////////////////////////////////////////////// 
      // 
      // Version
      // 
      
      VS_VERSION_INFO VERSIONINFO
       FILEVERSION 1,0,0,1
       PRODUCTVERSION 1,0,0,1
       FILEFLAGSMASK 0x3fL
      #ifdef _DEBUG
       FILEFLAGS 0x1L
      #else
       FILEFLAGS 0x0L
      #endif
       FILEOS 0x4L
       FILETYPE 0x1L
       FILESUBTYPE 0x0L
      BEGIN
          BLOCK "StringFileInfo"
          BEGIN
              BLOCK "040904b0"
              BEGIN
                  VALUE "Comments", "Sample Application\0"
                  VALUE "CompanyName", "Microsoft Corp.\0"
                  VALUE "FileDescription", "MyProject MFC Application\0"
                  VALUE "FileVersion", "1, 0, 0, 1\0"
                  VALUE "InternalName", "MyProject\0"
                  VALUE "LegalCopyright", "Copyright (C) 1999\0"
                  VALUE "OriginalFilename", "MyProject.EXE\0"
                  VALUE "ProductName", "MyProject Application\0"
                  VALUE "ProductVersion", "1, 0, 0, 1\0"
              END
          END
          BLOCK "VarFileInfo"
          BEGIN
              VALUE "Translation", 0x409, 1200
          END
      END
      							
    3. Coupez la ressource de version à partir du fichier MyProject.rc et collez-le dans le fichier MyProject.rc2 sous le commentaire « ajouter modifiée manuellement ressources présentées ici. » Pour savoir ce que signifie chaque un des champs de la ressource, consultez la déclaration de ressource VERSIONINFO de l'aide.
  2. Remplacez les données FILEVERSION et PRODUCTVERSION avec les macros FILEVER et PRODUCTVER. De même, remplacez les données de chaîne FileVersion et ProductVersion par les macros STRFILEVER et STRPRODUCTVER.
  3. Ajouter un # inclure VersionNo.h immédiatement avant l'instruction de ressources VS_VERSION_INFO. Maintenant la ressource version apparaîtra comme :
    /////////////////////////////////////////////////////////////////////// 
    // 
    // Version
    // 
    #include "VersionNo.h"
    VS_VERSION_INFO VERSIONINFO
     FILEVERSION FILEVER
     PRODUCTVERSION PRODUCTVER
     FILEFLAGSMASK 0x3fL
    #ifdef _DEBUG
     FILEFLAGS 0x1L
    #else
     FILEFLAGS 0x0L
    #endif
     FILEOS 0x4L
     FILETYPE 0x1L
     FILESUBTYPE 0x0L
    BEGIN
        BLOCK "StringFileInfo"
        BEGIN
            BLOCK "040904b0"
            BEGIN
                VALUE "Comments", "Sample Application\0"
                VALUE "CompanyName", "Microsoft Corp.\0"
                VALUE "FileDescription", "MyProject MFC Application\0"
                VALUE "FileVersion", STRFILEVER
                VALUE "InternalName", "MyProject\0"
                VALUE "LegalCopyright", "Copyright (C) 1997\0"
                VALUE "OriginalFilename", "MyProject.EXE\0"
                VALUE "ProductName", "MyProject Application\0"
                VALUE "ProductVersion", STRPRODUCTVER
            END
        END
        BLOCK "VarFileInfo"
        BEGIN
            VALUE "Translation", 0x409, 1200
        END
    END
    					
  4. Créer un fichier en-tête appelé VersionNo.h dans le même répertoire que votre projet. Ce fichier contiendra les instructions suivantes, qui sont les définitions de macros utilisés dans l'étape 2:
    #define FILEVER        1,0,0,1
    #define PRODUCTVER     1,0,0,1
    #define STRFILEVER     "1, 0, 0, 1\0"
    #define STRPRODUCTVER  "1, 0, 0, 1\0"
    						
    Remarque : ajouter le saut de ligne et de chariot renvoient des caractères sur la dernière ligne.

    Maintenant, fichier MyProject.rc inclut MyProject.rc2 et fichier MyProject.rc2 inclut VersionNo.h.
  5. Le contenu du fichier VersionNo.h est modifié l'aide d'une macro Visual Basic Script. La macro décrite ci-dessous poignées de l'événement Visual C++ BuildFinish, afin qu'il ne sera pas déclenché qu'une version soit terminée. Chaque fois que ce code de script Visual Basic est appelé, il tout d'abord incrémente les numéros de version dans le fichier d'en-tête un montant fixe, puis il enregistre le fichier et le ferme. Au cours d'une version ultérieure, le nouveau numéro de version est inclu dans le fichier exécutable.

    Pour installer et utiliser le code de script Visual Basic, procédez comme suit :

    1. Ouvrez un fichier de module spécifique au périphérique (macro) existant ou créez un nouveau fichier du module spécifique au périphérique dans Visual C++. Pour créer un nouveau fichier, cliquez sur Nouveau dans le menu Fichier , sélectionnez fichier de macro dans l'onglet fichiers lui donner un nom et cliquez sur OK .
    2. Collez le code script Visual Basic suivant ci-dessous (un fichier du module spécifique au périphérique vide ne peut pas être installé dans Visual C++; l'étape suivante explique l'installation):
      Function GetProjectDir(FullName)
      
      'VC++ doesn't provide any method for getting the path of the active project
      'See the VB Script reference for more information on the VB Script functions 
      'used in this function
      
      Dim proj_path
      proj_path = Split(StrReverse(FullName),"\",-1,1)
      
      Dim count
      count = UBound(proj_path)
      
      Dim full_path
      full_path = ""
      Dim i
      
      for i = 1 to count 
      	full_path = full_path & "\" & proj_path(i)
      next
      
      GetProjectDir = StrReverse(full_path)
      
      End Function
      
      
      Sub ReplaceText(selection, count, incrementby)
      
      'selection represents the TextSelection object
      'count represents the position of the version number to be incremented
      'incrementby represents a number that will be added to the existing version number
      
      selection.WordRight dsMove, count
      selection.WordRight dsExtend, 1
      Dim str
      str = selection.Text
      str = str + incrementby
      
      selection.Text = str
      
      End Sub
      
      
      Sub Application_BuildFinish(numError, numWarning)
      
      'This event will be triggered after every build of a project
      'You can check numError and/or numWarning to determine if you want to continue
      'If numError <> 0 Then
          'exit sub
      'Obtain the full path of the active project
      Dim full_path
      full_path = GetProjectDir(ActiveProject.FullName)
      
      full_path = full_path & "versionno.h"
      
      'Open the VersionNo.h file
      Documents.Open full_path
      
      'Obtain the TextSelection object
      Dim selection
      set selection = ActiveDocument.Selection
      selection.StartOfDocument 
      
      'Increment the version information
      ReplaceText selection, 9, 1
      selection.LineDown
      selection.StartOfLine
      ReplaceText selection, 9, 1
      selection.LineDown
      selection.StartOfLine
      ReplaceText selection, 10, 1
      selection.LineDown
      selection.StartOfLine
      ReplaceText selection, 10, 1
      
      ActiveDocument.Save
      ActiveDocument.Close
       
      End Sub
      								
      Remarque : ce code est un exemple non pris en charge. Vous pouvez modifier qu'il pour votre scénario de génération.
    3. Installez le fichier du module spécifique au périphérique si elle n'est pas déjà installé. Pour installer, cliquez sur Personnaliser dans le menu Outils , sur l'onglet Compléments et fichiers de macros , accédez à sélectionner le fichier du module spécifique au périphérique, cliquez sur Fermer .
  6. Sélectionnez créer MyProject.exe dans le menu Générer . Une fois la génération terminée, ouvrez le fichier VersionNo.h. Il contiendra les instructions suivantes :
    #define FILEVER        1,0,0,2
    #define PRODUCTVER     1,0,0,2
    #define STRFILEVER     "1, 0, 0, 2\0"
    #define STRPRODUCTVER  "1, 0, 0, 2\0"
    						
    Si générer le code à nouveau ces informations de version dans inclus dans le fichier exécutable, et les informations de version sont incrémentées. Vous pouvez introduire un code de la macro décrite précédemment pour empêcher les numéros de version incrémentation si la version produit des erreurs.

Références

Pour plus d'informations sur le modèle d'objet Visual C++ Voir la rubrique suivante dans la bibliothèque MSDN :
http://msdn.microsoft.com/en-us/library/aa712880(VS.71).aspx

Pour plus d'informations sur les macros Visual Basic script, consultez la rubrique suivante dans la bibliothèque MSDN :
http://msdn.microsoft.com/en-us/library/aa247202(VS.60).aspx

Pour plus d'informations sur le langage de script Visual Basic, consultez la rubrique suivante dans la bibliothèque MSDN :
http://msdn.microsoft.com/en-us/library/d1wf56tt(vs.71).aspx

Pour plus d'informations sur le tableau Ressources Visual C++ VERSIONINFO, voir la rubrique suivante dans la bibliothèque MSDN :
http://msdn.microsoft.com/en-us/library/aa381043.aspx

Propriétés

Numéro d'article: 237870 - Dernière mise à jour: vendredi 2 septembre 2005 - Version: 3.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual C++ 5.0 Édition Entreprise
  • Microsoft Visual C++ 6.0 Édition Entreprise
  • Microsoft Visual C++ 5.0 Édition Professionnelle
  • Microsoft Visual C++ 6.0 Édition Professionnelle
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
Mots-clés : 
kbmt kbautomation kbdevstudio kbhowto kbide kbscript kbvcobj KB237870 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 237870
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com