Jak zvýšit informace o verzi po každém sestavení v aplikaci Visual C++

Překlady článku Překlady článku
ID článku: 237870 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Souhrn

Visual C++ nemá funkce automaticky přibývá informace o zdroji verze projektu po každém sestavení. Tento článek popisuje funkci jeden způsob.

Další informace

Program k úpravě souboru prostředků kompilátoru (.rc) namísto pomocí kroků popsaných v tomto poli můžete psát. Soubor RC je však pod kontrolou Visual C++. Visual C++ upraví RC při ukládání souboru, a to může ovlivnit verze zdroje. Postup popsaný v této části lze použít jakýkoli projekt Visual C++. Tento příklad používá Microsoft Foundation Classes projektu.

Vytvoření nového projektu pomocí Appwizard MFC (EXE) a jeho volání MyProject. MyProject, bude mít soubor MyProject.rc, který obsahuje MyProject.rc2. Soubor .rc2 je určena pro uživatelem definované prostředky. Takto zvýšit jeho MyProject informace o verzi po každém sestavení:
  1. Verze prostředek odebrat ze souboru .rc a umístěte jej do souboru .rc2:

    1. V textovém editoru otevřete MyProject.rc a MyProject.rc2 (nalézt ve složce Res). Chcete-li použít editor Visual C++, klepněte na tlačítko Otevřít v Soubor nabídku a vyberte Text v Otevřít seznam souboru MyProject.rc.
    2. Najděte zdroj příkazů verze v MyProject.rc. Že by měl vypadat podobně jako:
      /////////////////////////////////////////////////////////////////////// 
      // 
      // 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. Vyjmout ze souboru MyProject.rc verze zdroje a vložte jej do souboru MyProject.rc2 pod poznámkou "Přidat ručně upravovat zdroje zde." Informace o významu jednotlivých polí ve zdroji naleznete v prohlášení o VERSIONINFO prostředku v nápovědě.
  2. Nahraďte data souboru MSNMSGR.exe a PRODUCTVERSION makra, FILEVER a PRODUCTVER. Podobně nahraďte řetězec data souboru Msnmsgr.exe a ProductVersion makra, STRFILEVER a STRPRODUCTVER.
  3. Přidat # include VersionNo.h bezprostředně před výkaz zdrojů VS_VERSION_INFO. Nyní bude vypadat verze zdroje:
    /////////////////////////////////////////////////////////////////////// 
    // 
    // 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. Vytvoření záhlaví souboru s názvem VersionNo.h ve stejném adresáři jako projekt. Tento soubor obsahuje následující příkazy, které jsou definice maker používá v kroku 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"
    						
    Poznámka: Přidáte zpáteční znaky konce řádku a přeprava na posledním řádku.

    Nyní zahrnuje MyProject.rc soubor MyProject.rc2 a soubor MyProject.rc2 obsahuje VersionNo.h.
  5. Obsah souboru VersionNo.h bude změněn pomocí makra jazyka Visual Basic Script. Makro níže popsané popisovače události Visual C++ BuildFinish, tak, že jej není spalovat až do dokončení nové sestavení. Pokaždé, když se nazývá tento kód VB Script, nejprve zvýší číslo verze v záhlaví souboru pevnou částku, pak se soubor uloží a zavře. Během následné sestavení číslo nové verze do spustitelného souboru.

    Chcete-li nainstalovat a používat kód VB Script, postupujte takto:

    1. Otevřete existující soubor DSM (makro) nebo vytvořit nový soubor DSM v jazyce C++. Chcete-li vytvořit nový soubor, klepněte na tlačítko Nový v Soubor nabídka select Soubor maker v Soubory karta, zadejte jeho název a klepněte na tlačítko OK.
    2. Vložte následující kód následující skript jazyka Visual Basic (prázdný soubor DSM nelze nainstalovat v jazyce C++; dalším krokem vysvětluje instalaci):
      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
      								
      POZNÁMKA: Tento kód je ukázkový příklad není podporován. Můžete jej změnit vaše scénáře sestavení.
    3. Nainstalujte soubor DSM, pokud již není nainstalována. Chcete-li nainstalovat, klepněte na tlačítko Vlastní nastavení v Nástroje nabídky, klepněte Doplňky a makra soubory Procházet vyberte soubor DSM a na kartě Zavřít.
  6. Vybrat Vytvořit MyProject.exe od Sestavení nabídka. Po dokončení sestavení, otevřete soubor VersionNo.h. Bude obsahovat následující příkazy:
    #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"
    						
    Pokud vytváříte kód znovu, tyto informace o verzi v zařazeny do spustitelného souboru, a informace o verzi se zvětší. Kód makra popsaným zabránit přírůstkového čísla verze, pokud sestavení chyby lze zavádět.

Odkazy

Další informace o objektovém modelu aplikace Visual C++ naleznete v následujícím tématu v knihovně MSDN:
http://msdn.microsoft.com/en-us/library/aa712880 (VS.71) .aspx

Další informace o VB Script makra naleznete v následujícím tématu v knihovně MSDN:
http://msdn.microsoft.com/en-us/library/aa247202 (VS.60) .aspx

Další informace o jazyce VB Script naleznete v následujícím tématu, které se v knihovně MSDN:
http://msdn.microsoft.com/en-us/library/d1wf56tt (vs.71) .aspx

Další informace o příkazu Visual C++ VERSIONINFO prostředku naleznete v následujícím tématu v knihovně MSDN:
http://msdn.microsoft.com/en-us/library/aa381043.aspx

Vlastnosti

ID článku: 237870 - Poslední aktualizace: 26. dubna 2011 - Revize: 5.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
Klíčová slova: 
kbautomation kbdevstudio kbhowto kbide kbscript kbvcobj kbmt KB237870 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:237870

Dejte nám zpětnou vazbu

 

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