كيفية زيادة معلومات الإصدار بعد كل إنشاء في Visual C++

ترجمات الموضوعات ترجمات الموضوعات
معرف المقالة: 237870 - عرض المنتجات التي تنطبق عليها هذه المقالة.
توسيع الكل | طي الكل

الموجز

لم يكن Visual C++ ميزة لزيادة معلومات الموارد إصدار المشروع بعد كل إنشاء تلقائياً. توضح هذه المقالة طريقة لتوفير مثل هذه ميزة.

معلومات أخرى

يمكنك كتابة برنامج لتعديل ملف برنامج التحويل البرمجي (.rc) المورد بدلاً من استخدام الخطوات الموضحة هنا. ومع ذلك، يكون الملف RC تحت تحكم Visual C++. C++ المرئية بتعديل ملف RC أثناء الحفظ ثم قد يؤثر هذا على مورد الإصدار. يمكن تطبيق الأسلوب الموصوفة في هذا المقطع إلى أي مشروع Visual C++. يستخدم هذا المثال مشروع فئات Foundation Microsoft.

إنشاء مشروع جديد باستخدام Appwizard MFC (EXE) و تسميته MyProject. سيكون MyProject ملف MyProject.rc يتضمن MyProject.rc2. يتم تعني الملف .rc2 للموارد المعرفة من قبل المستخدم. اتبع هذه الخطوات زيادة معلومات الإصدار الخاصة MyProject بعد كل الإنشاء:
  1. إزالة مورد الإصدار من ملف .rc ووضعها في ملف .rc2:

    1. افتح كل MyProject.rc MyProject.rc2 (موجود في مجلد Res) في محرر نص. استخدام محرر Visual C++ ، انقر فوق فتح في القائمة "ملف" ثم حدد النص في القائمة فتح باسم الملف MyProject.rc.
    2. العثور على الإصدار عبارات المورد في MyProject.rc. يجب أن تبدو شيء ما مثل:
      /////////////////////////////////////////////////////////////////////// 
      // 
      // 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. قص مورد الإصدار من ملف MyProject.rc ولصقه في الملف MyProject.rc2 أدناه التعليق "إضافة يدوياً تحرير الموارد هنا." للحصول على معلومات حول معنى كل منها من الحقول في المورد راجع بيان المورد VERSIONINFO في التعليمات.
  2. استبدال البيانات FILEVERSION PRODUCTVERSION وحدات الماكرو FILEVER و PRODUCTVER. وبشكل مماثل، استبدال بيانات سلسلة FileVersion و ProductVersion وحدات الماكرو STRFILEVER و STRPRODUCTVER.
  3. إضافة # تتضمن VersionNo.h مباشرة قبل عبارة المورد VS_VERSION_INFO. الآن ستبدو مورد الإصدار مثل:
    /////////////////////////////////////////////////////////////////////// 
    // 
    // 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. إنشاء ملف رأس يسمى VersionNo.h في نفس المشروع الدليل. يحتوي هذا الملف على العبارات التالية والتي هي تعريفات وحدات الماكرو المستخدمة في الخطوة 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"
    						
    ملاحظة: إضافة تغذية و حرف إرجاع الأحرف في السطر الأخير.

    الآن، يتضمن ملف MyProject.rc MyProject.rc2 ويتضمن ملف MyProject.rc2 VersionNo.h.
  5. سيتم تعديل محتويات الملف VersionNo.h باستخدام ماكرو Visual Basic Script. الماكرو وصف أدناه مقابض الحدث BuildFinish Visual C++ ، لذا فإنه سوف لا يتم تشغيل حتى يتم إنشاء. عندما يتم استدعاء هذه التعليمة البرمجية برنامج VB فإنه بزيادة أرقام الإصدارات داخل ملف الرأس أولاً بواسطة مقدار ثابت ثم فإنه لحفظ الملف وإغلاق عليه. أثناء إنشاء لاحقة, يتم تضمين رقم الإصدار الجديد في الملف القابل للتنفيذ.

    لتثبيت واستخدام رمز برنامج VB قم بما يلي:

    1. فتح ملف DSM (الماكرو) موجود أو إنشاء ملف DSM جديد في Visual C++. لإنشاء ملف جديد انقر فوق "جديد" في قائمة "ملف" ، حدد ملف ماكرو في التبويب ملفات بإعطاء اسم للملف ثم انقر فوق موافق.
    2. قم بلصق التعليمة البرمجية برنامج VB التالية أدناه (لا يمكن تثبيت ملف DSM فارغ في Visual C++; يشرح الخطوة التالية لتثبيت):
      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
      								
      ملاحظة: رمز هذا نموذج غير معتمد. قد تعديلها لسيناريو الإنشاء.
    3. تثبيت ملف DSM إذا لم يكن مثبتاً بالفعل. لتثبيت ، انقر فوق تخصيص في القائمة أدوات انقر فوق علامة التبويب الوظيفة الإضافية والملفات ماكرو ، استعرض لتحديد ملف DSM ثم انقر فوق إغلاق.
  6. حدد إنشاء MyProject.exe من القائمة بنية. بعد انتهاء الإنشاء فتح ملف VersionNo.h. سوف يحتوي على العبارات التالية:
    #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"
    						
    إذا إنشاء التعليمات البرمجية مرة أخرى، هذا معلومات الإصدار في تضمينها في الملف التنفيذي وكنت يتزايد معلومات الإصدار. يمكن تقديم بعض التعليمات البرمجية في ماكرو وصفه من قبل لمنع أرقام الإصدارات incrementing إذا الإنشاء إنتاجها أخطاء.

مراجع

للحصول على مزيد من المعلومات حول طراز كائن Visual C++ راجع الموضوع التالي في مكتبة MSDN:
http://msdn.microsoft.com/en-us/library/aa712880(VS.71).aspx

للحصول على مزيد من المعلومات حول وحدات الماكرو برنامج VB راجع الموضوع التالي في مكتبة MSDN:
http://msdn.microsoft.com/en-us/library/aa247202(VS.60).aspx

للحصول على مزيد من المعلومات حول برنامج VB اللغة راجع الموضوع التالي في مكتبة MSDN:
http://msdn.microsoft.com/en-us/library/d1wf56tt(vs.71).aspx

للحصول على مزيد من المعلومات حول بيان المورد VERSIONINFO Visual C++ ، راجع الموضوع التالي في مكتبة MSDN:
http://msdn.microsoft.com/en-us/library/aa381043.aspx

الخصائص

معرف المقالة: 237870 - تاريخ آخر مراجعة: 28/رجب/1426 - مراجعة: 3.2
تنطبق على
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
كلمات أساسية: 
kbmt kbautomation kbdevstudio kbhowto kbide kbscript kbvcobj KB237870 KbMtar
ترجمة آلية
هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية
اضغط هنا لرابط المقالة باللغة الانجليزية237870

إرسال ملاحظات

 

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