2008-09-20 13 views
7

मैं कैसे के बारे में प्रोग्राम के रूप में जाना एक MFC अनुप्रयोग में FILEVERSION स्ट्रिंग को अद्यतन करने हैं? मैं एक निर्माण प्रक्रिया है कि मैं जो किसी दिए गए रिहाई के लिए SVN राजस्व में शामिल है एक हेडर फाइल उत्पन्न करने के लिए उपयोग किया है। मैं http://www.compuphase.com/svnrev.htm से SvnRev उपयोग कर रहा हूँ जो मैं अपने MFC अनुप्रयोग के शीर्षक बार स्थापित करने के लिए प्रयोग कर एक हेडर फाइल अद्यतन करने के लिए। अब मैं अपनी फाइल जानकारी के लिए इस # परिभाषा का उपयोग करना चाहता हूं।प्रोग्राम एक MFC अनुप्रयोग w में FILEVERSION अद्यतन करने/SVN संशोधन संख्या

आगे बढ़ने के लिए सबसे अच्छा तरीका क्या है?

उत्तर

1

अपने application.rc फ़ाइल में एक संस्करण ब्लॉक नहीं है। यह ब्लॉक फाइल सिस्टम में प्रदर्शित संस्करण जानकारी को नियंत्रित करता है।

VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
ProductVersion 1,0,0,1

आप प्रोग्राम के रूप में इस फाइल को अद्यतन कर सकते हैं। फाइल को बाइनरी के रूप में खोलना और सहेजना सुनिश्चित करें। हमारे पास ऐसे मुद्दे हैं जहां संपादन टेक्स्ट के रूप में किया जाता है और फ़ाइल दूषित हो जाती है।

0

बदलने VS_VERSION_INFO प्रतिबिंबित जब आप सही Explorer में फ़ाइल पर क्लिक करें और उन लक्षणों देखेंगे।

आप कैप्शन पट्टी में वर्तमान SVN संशोधन संख्या को दिखाने के लिए चाहते हैं, तो मैं सुझाव है:

  • एक स्क्रिप्ट संस्करण संख्या हो और फ़ाइल version.h जेनरेट करने के लिए साथ है
#define SVN_VERSION_NO xxx 
  • आपका परियोजना इस version.h भी शामिल है और कैप्शन में पता चलता है कि नंबर का उपयोग करता।
11

एक .rc फ़ाइल #include हेडर फाइल जैसे कर सकते हैं .c फ़ाइलों कर सकते हैं।

#define MY_PRODUCT_VERSION "0.47" 
#define MY_PRODUCT_VERSION_NUM 0,47,0,0 

तो मैं बस अपना .rc फ़ाइल #include "version.h" है और उन परिभाषित करता है का उपयोग करें: मैं एक स्वत: जनरेट version.h फ़ाइल है, जो तरह बातें परिभाषित करता है।

VS_VERSION_INFO VERSIONINFO 
FILEVERSION MY_PRODUCT_VERSION_NUM 
PRODUCTVERSION MY_PRODUCT_VERSION_NUM 
... 
VALUE "FileVersion", MY_PRODUCT_VERSION "\0" 
VALUE "ProductVersion", MY_PRODUCT_VERSION "\0" 
... 

मैं एक MFC परियोजना के साथ इस तकनीक का प्रयास नहीं किया है। अपने VS_VERSION_INFO संसाधन को अपने .rc2 फ़ाइल (जिसे विजुअल स्टूडियो द्वारा संपादित नहीं किया जाएगा) में स्थानांतरित करना आवश्यक हो सकता है।

3

अभी तक टिप्पणी करने के लिए पर्याप्त अंक नहीं है, लेकिन जो कुछ भी समाधान आप ध्यान रखें कि FILEVERSION क्षेत्रों केवल एक छोटी पूर्णांक समर्थन कर सकते हैं चुनें। हमारी स्थिति में, हमारा एसवीएन संशोधन पहले से ही ऊपर था और इसके परिणामस्वरूप हमारे फ़ाइल में एक अवैध संशोधन संख्या हुई।

+0

अच्छा बिंदु, शायद आपको पुनर्मूल्यांकन को 1000s और इकाइयों में विभाजित करना चाहिए; या revnum (एक स्ट्रिंग के रूप में) को स्टोर करने के लिए संस्करण ब्लॉक में अन्य फ़ील्ड में से किसी एक का उपयोग करें। – gbjbaanb