मैं मौजूदा जानकारी को .exe, .dll के लिए संस्करण जानकारी कैसे सेट करूं?


113

हमारी निर्माण प्रक्रिया के हिस्से के रूप में मुझे हमारे सभी संकलित बायनेरिज़ के लिए संस्करण जानकारी सेट करने की आवश्यकता है। कुछ बायनेरिज़ में पहले से ही संस्करण की जानकारी है (संकलन समय पर जोड़ी गई) और कुछ नहीं।

मैं निम्नलिखित जानकारी को लागू करने में सक्षम होना चाहता हूं:

  • कंपनी का नाम
  • सर्वाधिकार सूचना
  • उत्पाद का नाम
  • उत्पाद वर्णन
  • फ़ाइल संस्करण
  • उत्पाद संस्करण

ये सभी विशेषताएँ बिल्ड स्क्रिप्ट द्वारा निर्दिष्ट की जाती हैं और संकलन के बाद लागू की जानी चाहिए। ये C ++ बिल्डर 2007 के साथ संकलित मानक बायनेरिज़ (असेंबली नहीं) हैं।

मैं यह कैसे कर सकता हूँ?


रिसोर्सहैकर का उपयोग किस लिए किया जाता है ? वास्तव में कैसे कार्य निर्धारित है? क्या समस्या का उपयोग UpdateResourceसमारोह में, अगर मौजूदा संस्करण में कार्य अद्यतन संस्करण
RbMm

इस प्रयास करें: alternativeto.net/software/xn-resource-editor , मुझे लगता है कि रिवर्स इंजीनियरिंग उपकरण इस करते देखते हैं
i_thamary

जवाबों:


59

हालांकि यह एक बैच प्रक्रिया नहीं है, लेकिन विज़ुअल स्टूडियो फ़ाइल संसाधनों को जोड़ / संपादित भी कर सकता है।

बस .EXE या .DLL पर फ़ाइल-> ओपन-> फाइल का उपयोग करें। यह संस्करण सूचना पोस्ट-बिल्ड को ठीक करने या उन फ़ाइलों में जोड़ने के लिए आसान है, जिनके पास इन संसाधनों को शुरू करने के लिए नहीं है।


8
जब मैंने इसे आज़माया तो यह पूरी तरह से काम कर गया। पूरी तरह से संस्करण की जानकारी गुम होने वाली फ़ाइल के लिए: Visual Studio में DLL खोलने के बाद, संपादन> संसाधन जोड़ें> संस्करण पर जाएँ और नया पर क्लिक करें। फिर नए वर्जन टैब में, फाइललरेशन और प्रोडक्शन, कंपनीनाम, आदि को बदलें, फाइलों को सेव करें और आप सभी सेट हो जाएं!
ट्वासब्रिलिग

2
@UweBaemayr। आपने जो उत्तर उद्धृत किया है, मैं उसी पर पूछना चाहता हूं जैसे कि हम इसे स्वचालित कर सकते हैं जैसे मैं एक ही पोस्ट बिल्ड करता हूं और मैं इसे स्वचालित करना चाहता हूं। पर कैसे ?
स्टीवस्कैम

1
मेरे पुराने डेल्फी win32 के लिए यह काम नहीं करेगा। पूरी तरह से dll जानकारी को सही ढंग से बदल दिया जाता है, जब इस पर पवित्रता की जाँच चल रही हो तो आपको पता चलता है कि यह दूषित है।
स्टेयर्स

3
विंडोज 8, वीएस 2015 पर यह (संस्करण जानकारी जोड़ें) की कोशिश की और विंडोज एक्सप्लोरर में सभी अच्छा है, सिवाय ... निष्पादन योग्य अब शुरू नहीं होगा।
Liviu

36

कई अन्य उत्तरों के विपरीत, यह समाधान पूरी तरह से मुफ्त सॉफ्टवेयर का उपयोग करता है।

सबसे पहले, Resources.rcइस तरह एक फ़ाइल बनाएँ :

VS_VERSION_INFO VERSIONINFO
    FILEVERSION    1,0,0,0
    PRODUCTVERSION 1,0,0,0
{
    BLOCK "StringFileInfo"
    {
        BLOCK "040904b0"
        {
            VALUE "CompanyName",        "ACME Inc.\0"
            VALUE "FileDescription",    "MyProg\0"
            VALUE "FileVersion",        "1.0.0.0\0"
            VALUE "LegalCopyright",     "© 2013 ACME Inc. All Rights Reserved\0"
            VALUE "OriginalFilename",   "MyProg.exe\0"
            VALUE "ProductName",        "My Program\0"
            VALUE "ProductVersion",     "1.0.0.0\0"
        }
    }
    BLOCK "VarFileInfo"
    {
        VALUE "Translation", 0x409, 1200
    }
}

इसके बाद, GoRC का .resउपयोग करके इसे एक फ़ाइल में संकलित करें:

GoRC /fo Resources.res Resources.rc

(आईने के लिए मेरी टिप्पणी नीचे देखें GoRC.exe)

फिर इसे जोड़ने के लिए CLI मोड में रिसोर्स हैकर का उपयोग करें .exe:

ResHacker -add MyProg.exe, MyProg.exe, Resources.res,,,

बस!


1
@CharlesB मैंने देखा कि खुद, लेकिन यह सही लिंक है। लगता है जैसे कोई अपने वेब होस्ट का भुगतान करना भूल गया! यहाँ द्विआधारी, मैंने इसे अपने सार्वजनिक असेम्ब्ला खाते में दिखाया है: असेंबली.com/ code
danny-

3
आप GoRC के स्थान पर Microsoft संसाधन संकलक का उपयोग कर सकते हैं । यह विंडोज एसडीके के साथ उपलब्ध है।
होलिस्टिक डेवलपर

संसाधन हैकर के लिए अंगूठे, मैंने इसका उपयोग इस उत्तर में किया है और यह शानदार, शानदार कार्यक्रम है। (कार्यक्रम या निर्माता के साथ कोई आत्मीयता ;-)
user2109254

@ युवीकेम मैंने कुछ समय के लिए इसका उपयोग नहीं किया है, लेकिन मुझे पूरा यकीन है कि वे आवश्यक हैं।
डैनी बेकेट

6
कमांड लाइन की तरह लगता है थोड़ा बदल गया है: ResourceHacker.exe -open Source.dll -save Changed.dll -action addoverwrite -resource Version.resइसके अलावा, रिसोर्सहैकर .rc ही फ़ाइल को संकलित कर सकता है:ResourceHacker.exe -open Version.rc -save Version.res -action compile
यूसुफ़ तारिक गुनेयादीन

23

या आप Win32 exe / dll फ़ाइलों के लिए फ्रीवेयर StampVer की जांच कर सकते हैं ।
यह केवल फ़ाइल और उत्पाद संस्करणों को बदलेगा, यदि उनके पास पहले से ही एक संस्करण संसाधन है। यदि कोई मौजूद नहीं है तो यह संस्करण संसाधन नहीं जोड़ सकता है।


19

rcedit सापेक्ष नया है और कमांड लाइन से अच्छी तरह से काम करता है: https://github.com/atom/rcedit

$ rcedit "path-to-exe-or-dll" --set-version-string "Comments" "This is an exe"
$ rcedit "path-to-exe-or-dll" --set-file-version "10.7"
$ rcedit "path-to-exe-or-dll" --set-product-version "10.7"

एक एनपीएम मॉड्यूल भी है जो इसे जावास्क्रिप्ट से लपेटता है और यदि आप ग्रंट का उपयोग कर रहे हैं तो यह एक गंभीर कार्य है।


5
ध्यान दें कि rcedit केवल मौजूदा संसाधनों को ही संशोधित कर सकती है नए नहीं डालें
बेवन कॉलिन्स

2
7zip sfx अभिलेखागार के साथ काम नहीं करता है: / 7zip संग्रह भाग को काट देता है।
मगमरज़

1
इसे आज़माया, जब एक ही डायरेक्टरी में फाइल लोड करने में असमर्थ रहे और ऐसा लगे कि उपकरण होस्ट कॉन्फ़िगरेशन पर निर्भर हो सकता है
Arijoon

7zS.sfx ठूंठ के साथ काम करता है, VERSIONINFO के साथ पहला भाग जिसके अंदर आप एक साथ एक सेल्फ एक्सट्रैक्टिंग आर्कैट का उपयोग करते हैं। मैन्युअल रूप से आप 7zS.exe में 7zS.sfx का भी नाम बदल सकते हैं और इसे विजुअल स्टूडियो में संपादित कर सकते हैं लेकिन चूंकि संस्करण संख्या हर बिल्ड के लिए बदल रही है जिसे आप इसे सेट करने के लिए अंदर rcedit स्टेटमेंट वाली बैच फ़ाइल पसंद करते हैं।
एन्ड्रेसरोह्रैटलासफॉर्मफॉर्म

1
यह उपकरण बहुत बुरा है, कृपया इस बग को अपने बायनेरिज़ पर लगाने से पहले देखें: github.com/electron/rcedit/issues/51
Brun

14

इस तरह के किसी चीज़ के बारे में क्या?

verpatch /va foodll.dll %VERSION% %FILEDESCR% %COMPINFO% %PRODINFO% %BUILDINFO%

पूर्ण स्रोतों के साथ यहां उपलब्ध है


Verpatch मेरे लिए एक खराब उत्पाद संस्करण संसाधन बनाने के लिए लग रहा था ( /va /pvविकल्प का उपयोग करके )। संस्करण विंडोज एक्सप्लोरर में सही ढंग से दिखाई दिया, लेकिन अंतिम वर्ण गायब था जब कोड के साथ पुनर्प्राप्त किया गया था VerQueryValue। बुरे संसाधन को ठीक करने के लिए, मैंने ऐसा किया: (1) संसाधन हैकर में DLL लोड करें। (2) संस्करण संसाधन देखें। (3) संकलन (कुछ को संशोधित करें फिर बटन को सक्षम करने के लिए इसे वापस बदलें)। (४) बचाना।
dan-gph

verpatch मेरे DLLs के x64 और x86 दोनों संस्करणों के लिए बहुत बढ़िया काम करता है, हालांकि एवेवियर बिल्ड प्रोजेक्ट में यह केवल x64 के लिए काम करता है और यह x86 dll के लिए बिल्कुल कुछ नहीं कर रहा है - कोई त्रुटि भी नहीं! किसी भी संकेत क्या हो सकता है? मैं देख सकता हूं कि एप्रोवर लॉग में वर्कशीट कमांड निष्पादित हो रही है, कोई त्रुटि नहीं है, और डीएलएल को किसी भी तरह से प्रतिस्थापित नहीं किया जा रहा है और अंत में संस्करण स्टैम्प नहीं है; x64 के लिए सब कुछ सभी स्थितियों पर ठीक काम करता है। कृपया कोई सुराग?
ओवी

@ ओवी-वान केनोबी: मुझे नहीं पता था कि एपवेर क्या था, लेकिन आपके विवरण के अनुसार, यह मुझे एक एवियोर समस्या की तरह लगता है। सबसे कम से कम, अगर यह संभव है, तो एवेवियर वातावरण में कुछ डिबगिंग के लिए तैयार हो जाओ! ...
फिलोफेल

10

यह उपकरण ChangeVersion है [1]

सुविधाओं की सूची (वेबसाइट से):

  • कमांड लाइन इंटरफेस
  • .EXE, .DLL और .RES फ़ाइलों के लिए समर्थन
  • एक संस्करण मुखौटा के आधार पर FileVersion और ProductVersion को अपडेट करें
  • संस्करण कुंजी स्ट्रिंग जोड़ें / बदलें / निकालें
  • फ़ाइल झंडे समायोजित करें (डिबग, विशेष, निजी आदि)
  • अद्यतन परियोजना फाइलें (.bdsproj | .bpr | .bpk | .dproj)
  • मुख्य एप्लिकेशन आइकन जोड़ें / बदलें
  • कॉन्फ़िगरेशन के साथ ini फ़ाइल का उपयोग करें
  • विंडोज विस्टा सपोर्ट (उन्नयन की जरूरत है)
  • निरंतर निर्माण वातावरण में एकीकृत करना आसान है

पूर्ण प्रकटीकरण: मैं उस आदमी को जानता हूं जिसने यह उपकरण लिखा था, मैं उसके साथ काम करता था। लेकिन इसका मतलब यह भी है कि मुझे पता है कि वह गुणवत्ता सॉफ्टवेयर बनाता है;)


[१] लिंक मृत है। लगता है कि download.cnet.com पर मिरर किया गया संस्करण है ।


@ गैरेथ मैंने एक दर्पण लिंक जोड़ा। दूसरों को, मुझे संदेह है कि इस जवाब का बिना किसी काम के संदर्भ में कोई मूल्य है।
वुल्फ

5
एक समाप्त टूल में दूसरा लिंक परिणाम है"Change Version v2012.9.6.0 - (C)2007-2012 The-Software-Box.com This trial version has expired"
प्रीत संघ

2
जब इसे कमांड लाइन में चलाया जाता है, तो यह "वर्जन चेंज v2012.9.6.0 - (C) 2007-2012 The-Software-Box.com को बदल देता है। यह ट्रायल वर्जन समाप्त हो गया है"
RDeveloper

10

मैं इसे बिना किसी अतिरिक्त टूल के साथ कर रहा हूं। मैंने अभी अपनी Win32 ऐप परियोजना में निम्नलिखित फाइलें जोड़ी हैं।

एक हेडर फ़ाइल जो कुछ स्थिरांक को परिभाषित करती है, जिससे हम अपनी संसाधन फ़ाइल और यहां तक ​​कि प्रोग्राम कोड पर पुन: उपयोग कर सकते हैं। हमें केवल एक फ़ाइल को बनाए रखने की आवश्यकता है। क्यूटी टीम के लिए धन्यवाद जिसने मुझे दिखाया कि मैं इसे क्यूटी परियोजना पर कैसे करूं, यह अब मेरे Win32 ऐप पर भी काम करता है।

---- [version.h] ----

#ifndef VERSION_H
#define VERSION_H

#define VER_FILEVERSION             0,3,0,0
#define VER_FILEVERSION_STR         "0.3.0.0\0"

#define VER_PRODUCTVERSION          0,3,0,0
#define VER_PRODUCTVERSION_STR      "0.3.0.0\0"

#define VER_COMPANYNAME_STR         "IPanera"
#define VER_FILEDESCRIPTION_STR     "Localiza archivos duplicados"
#define VER_INTERNALNAME_STR        "MyProject"
#define VER_LEGALCOPYRIGHT_STR      "Copyright 2016 ipanera@gmail.com"
#define VER_LEGALTRADEMARKS1_STR    "All Rights Reserved"
#define VER_LEGALTRADEMARKS2_STR    VER_LEGALTRADEMARKS1_STR
#define VER_ORIGINALFILENAME_STR    "MyProject.exe"
#define VER_PRODUCTNAME_STR         "My project"

#define VER_COMPANYDOMAIN_STR       "www.myurl.com"

#endif // VERSION_H

---- [MyProjectVersion.rc] ----

#include <windows.h>
#include "version.h"

VS_VERSION_INFO VERSIONINFO
FILEVERSION     VER_FILEVERSION
PRODUCTVERSION  VER_PRODUCTVERSION
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904E4"
        BEGIN
            VALUE "CompanyName",        VER_COMPANYNAME_STR
            VALUE "FileDescription",    VER_FILEDESCRIPTION_STR
            VALUE "FileVersion",        VER_FILEVERSION_STR
            VALUE "InternalName",       VER_INTERNALNAME_STR
            VALUE "LegalCopyright",     VER_LEGALCOPYRIGHT_STR
            VALUE "LegalTrademarks1",   VER_LEGALTRADEMARKS1_STR
            VALUE "LegalTrademarks2",   VER_LEGALTRADEMARKS2_STR
            VALUE "OriginalFilename",   VER_ORIGINALFILENAME_STR
            VALUE "ProductName",        VER_PRODUCTNAME_STR
            VALUE "ProductVersion",     VER_PRODUCTVERSION_STR
        END
    END

    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1252
    END
END

2
बस उत्सुक; आपने अपनी .rc फ़ाइल को हर बार डायलॉग बदलने या प्रोजेक्ट में किसी संसाधन को संशोधित करने से कैसे रोका? मैंने अब तक इस तरह के एक दो लेख देखे हैं और ऐसा लगता है कि यह काम करेगा यदि आपको फिर से एक संसाधन को बदलना नहीं है जो आईडीई द्वारा ऑटो पीढ़ी का कारण होगा।
shawn1874

@ shawn1874 - स्वचालित रूप से जोड़ी #include <windows.h>गई resource.hफ़ाइल में लाइन शामिल करें । उस फ़ाइल को पुनर्जीवित नहीं किया गया है (.rc फ़ाइल के शीर्ष पर नोट यह इंगित करता है कि यह कोड जनरेट किया गया है, और इसे डिजाइनर में संशोधित किया जा सकता है)।
CJBS

1
@CJBS कि सवाल का जवाब नहीं है। यद्यपि यह काम कर सकता है, यह नहीं बताता है कि पोस्ट किए गए उत्तर कैसे काम कर सकते हैं। पोस्ट किए गए उत्तर में user3016543 .rc फ़ाइल के भीतर version.h को शामिल करता है। .Rc फ़ाइल के ओवरराइट से निपटने के कई तरीके हैं जो मुझे पता है कि मुझे कैसे करना है। मैं केवल इस तरह से सवाल कर रहा हूं कि यह विशेष उत्तर दिखाया गया है क्योंकि यह मुझे सही नहीं लगता है।
shawn1874

मैं अनुमान लगा रहा हूं कि यह विधि उसके लिए काम करती है क्योंकि प्रश्न के घटक में संवाद घटक नहीं होते हैं इसलिए फ़ाइल अक्सर या कभी भी पुनर्जीवित नहीं होती है। हालाँकि MFC संवाद संसाधनों के साथ एक विंडोज़ अनुप्रयोग में ऐसा नहीं होगा।
shann1874

1
मुझे एक ऐसी तकनीक की याद दिलाने के लिए धन्यवाद, जिसे मैंने पहली बार एक संसाधन फ़ाइल में कार्रवाई में देखा था जिसे विनबैच एक्सटेंडर एसडीके के साथ भेज दिया गया था। जब से मुझे इसकी आवश्यकता हुई है, तब तक मुझे इतना समय लग गया था कि मैं अधिकांश विवरण भूल चुका था। आपके स्पष्टीकरण ने इसे वापस ला दिया।
डेविड ए। ग्रे

8

verpatch अच्छा है, लेकिन यूनिकोड वर्ण संभाल नहीं करता है ...
कोशिश ResourceLib


6

कई उपकरण हैं, जो कई महान उत्तरों द्वारा उल्लिखित हैं, मैं एक को चुनने जा रहा हूं।

संसाधन हैकर

मैंने [एंगसज]: रिसोर्स हैकर से नवीनतम संस्करण ( 5.1.7 ) डाउनलोड किया । सभी आवश्यक जानकारी उस पृष्ठ (कमांड लाइन विकल्प, स्क्रिप्ट, ...) पर पाई जा सकती है। निम्नलिखित वॉकथ्रू में मैं 2 निष्पादनयोग्य (लैब चूहों) पर काम करने जा रहा हूं, जो (स्पष्ट कारणों के लिए) मैंने अपने cwd में कॉपी किया है :

  • ResourceHacker.exe : मैंने सोचा कि यह अपने आप संचालित करना दिलचस्प होगा
  • cmake.exe : कोई संस्करण जानकारी सेट के साथ यादृच्छिक निष्पादन योग्य ( मेरी मशीन पर v3.6.3 स्थापना का हिस्सा )

आगे जाने से पहले, मैं यह उल्लेख करना चाहता हूं कि रिसोर्सहैकर के पास एक अजीब टर्मिनल आउटपुट है , और निम्नलिखित कॉपी / पेस्ट टुकड़े थोड़ा भ्रम पैदा कर सकते हैं।

1. सेटअप

यह एक प्रारंभिक कदम की तरह है, पर्यावरण से परिचित होने के लिए, यह दिखाने के लिए कि कोई फंकी बिजनेस नहीं चल रहा है, ...

e:\Work\Dev\StackOverflow\q000284258> sopr.bat
*** Set shorter prompt to better fit when pasted in StackOverflow (or other) pages ***

[prompt]> dir
 Volume in drive E is Work
 Volume Serial Number is 3655-6FED

 Directory of e:\Work\Dev\StackOverflow\q000284258

2019-01-28  20:09    <DIR>          .
2019-01-28  20:09    <DIR>          ..
2016-11-03  09:17         5,413,376 cmake.exe
2019-01-03  02:06         5,479,424 ResourceHacker.exe
2019-01-28  20:30               496 ResourceHacker.ini
               3 File(s)     10,893,296 bytes
               2 Dir(s)  103,723,261,952 bytes free

[prompt]> set PATH=%PATH%;c:\Install\x64\CMake\CMake\3.6.3\bin

[prompt]> .\cmake --help >nul 2>&1

[prompt]> echo %errorlevel%
0

[prompt]> .\ResourceHacker.exe -help

[prompt]>

==================================
Resource Hacker Command Line Help:
==================================

-help             : displays these abbreviated help instructions.
-help commandline : displays help for single commandline instructions
-help script      : displays help for script file instructions.




[prompt]> echo %errorlevel%
0

जैसा कि देखा गया है, निष्पादन योग्य ठीक हैं, वे ठीक चलते हैं, और यहां बताया गया है कि उनका विवरण (जिस पर हम ध्यान रखते हैं) जैसे दिखते हैं:

Img0-आरंभिक

2. संसाधन

संसाधन फाइलें पाठ फाइलें होती हैं जिनमें संसाधन होते हैं। एक संसाधन (सरलीकृत) है:

  • नाम
  • प्रकार
  • मूल्य

अधिक जानकारी के लिए [MS.Docs] की जाँच करें : संसाधन फ़ाइलों के बारे में । कई उपकरण (मौजूदा उत्तरों में उल्लिखित) हैं जो संसाधन फ़ाइल संपादन की सुविधा देते हैं जैसे:

  • VStudio एक नया प्रोजेक्ट शुरू करते समय एक डिफ़ॉल्ट बनाता है
  • कोई भी ऐसी फ़ाइल मैन्युअल रूप से बना सकता है
  • लेकिन, चूंकि यह रिसोर्स हैकर , और:

    • यह मौजूदा निष्पादन योग्य संसाधनों को निकालने में सक्षम है
    • इसमें संसाधन निहित हैं (जैसा कि पिछली तस्वीर में दिखाया गया है)

    मैं इस कदम के लिए इसका इस्तेमाल करने जा रहा हूँ ( -action extract)

अगला, एक संसाधन के लिए .exe ( .dll , ...) में एम्बेडेड होने के लिए इसे बाइनरी फॉर्म में संकलित किया जाना चाहिए , जो पीई प्रारूप में फिट बैठता है । फिर से, बहुत सारे उपकरण हैं जो इसे प्राप्त कर सकते हैं, लेकिन जैसा कि आपने शायद अनुमान लगाया था कि मैं संसाधन हैकर ( -action compile) से चिपके रहने वाला हूं ।

[prompt]> :: Extract the resources into a file
[prompt]> .\ResourceHacker.exe -open .\ResourceHacker.exe -save .\sample.rc -action extract -mask VersionInfo,, -log con

[prompt]>

[28 Jan 2019, 20:58:03]

Current Directory:
e:\Work\Dev\StackOverflow\q000284258

Commandline:
.\ResourceHacker.exe  -open .\ResourceHacker.exe -save .\sample.rc -action extract -mask VersionInfo,, -log con

Open    : e:\Work\Dev\StackOverflow\q000284258\ResourceHacker.exe
Save    : e:\Work\Dev\StackOverflow\q000284258\sample.rc


Success!

[prompt]> :: Modify the resource file and set our own values
[prompt]>
[prompt]> :: Compile the resource file
[prompt]> .\ResourceHacker.exe -open .\sample.rc -save .\sample.res -action compile -log con

[prompt]>

[28 Jan 2019, 20:59:51]

Current Directory:
e:\Work\Dev\StackOverflow\q000284258

Commandline:
.\ResourceHacker.exe  -open .\sample.rc -save .\sample.res -action compile -log con

Open    : e:\Work\Dev\StackOverflow\q000284258\sample.rc
Save    : e:\Work\Dev\StackOverflow\q000284258\sample.res

Compiling: e:\Work\Dev\StackOverflow\q000284258\sample.rc
Success!

[prompt]> dir /b
cmake.exe
ResourceHacker.exe
ResourceHacker.ini
sample.rc
sample.res

आपके मामले में संसाधन फ़ाइल को सहेजना और संपादित करना आवश्यक नहीं होगा, क्योंकि फ़ाइल पहले से ही मौजूद होगी, मैंने इसे बस उद्देश्यों को प्रदर्शित करने के लिए किया था। नीचे यह संशोधित होने के बाद संसाधन फ़ाइल है (और इस तरह संकलित होने से पहले)।

नमूना :

1 VERSIONINFO
FILEVERSION 3,1,4,1592
PRODUCTVERSION 2,7,1,8
FILEOS 0x4
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
    BLOCK "040904E4"
    {
        VALUE "CompanyName", "Cristi Fati\0"
        VALUE "FileDescription", "20190128 - SO q000284258 demo\0"
        VALUE "FileVersion", "3.1.4.1592\0"
        VALUE "ProductName", "Colonel Panic\0"
        VALUE "InternalName", "100\0"
        VALUE "LegalCopyright", "(c) Cristi Fati 1999-2999\0"
        VALUE "OriginalFilename", "ResHack\0"
        VALUE "ProductVersion", "2.7.1.8\0"
    }
}

BLOCK "VarFileInfo"
{
    VALUE "Translation", 0x0409 0x04E4  
}
}

3. एंबेड

यह रिसोर्स हैकर ( -action addoverwrite) द्वारा भी प्रदर्शित किया जाएगा । चूंकि .exe पहले से ही कॉपी किया हुआ है इसलिए मैं उनके संसाधनों को संपादित करने जा रहा हूं।

[prompt]> .\ResourceHacker.exe -open .\cmake.exe -save .\cmake.exe -res .\sample.res -action addoverwrite -mask VersionInfo,, -log con

[prompt]>

[28 Jan 2019, 21:17:19]

Current Directory:
e:\Work\Dev\StackOverflow\q000284258

Commandline:
.\ResourceHacker.exe  -open .\cmake.exe -save .\cmake.exe -res .\sample.res -action addoverwrite -mask VersionInfo,, -log con

Open    : e:\Work\Dev\StackOverflow\q000284258\cmake.exe
Save    : e:\Work\Dev\StackOverflow\q000284258\cmake.exe
Resource: e:\Work\Dev\StackOverflow\q000284258\sample.res

  Added: VERSIONINFO,1,1033

Success!

[prompt]> copy ResourceHacker.exe ResourceHackerTemp.exe
        1 file(s) copied.

[prompt]> .\ResourceHackerTemp.exe -open .\ResourceHacker.exe -save .\ResourceHacker.exe -res .\sample.res -action addoverwrite -mask VersionInfo,, -log con

[prompt]>

[28 Jan 2019, 21:19:29]

Current Directory:
e:\Work\Dev\StackOverflow\q000284258

Commandline:
.\ResourceHackerTemp.exe  -open .\ResourceHacker.exe -save .\ResourceHacker.exe -res .\sample.res -action addoverwrite -mask VersionInfo,, -log con

Open    : e:\Work\Dev\StackOverflow\q000284258\ResourceHacker.exe
Save    : e:\Work\Dev\StackOverflow\q000284258\ResourceHacker.exe
Resource: e:\Work\Dev\StackOverflow\q000284258\sample.res

  Modified: VERSIONINFO,1,1033

Success!

[prompt]> del /f /q ResourceHackerTemp.*

[prompt]> dir
 Volume in drive E is Work
 Volume Serial Number is 3655-6FED

 Directory of e:\Work\Dev\StackOverflow\q000284258

2019-01-28  21:20    <DIR>          .
2019-01-28  21:20    <DIR>          ..
2016-11-03  09:17         5,414,400 cmake.exe
2019-01-03  02:06         5,479,424 ResourceHacker.exe
2019-01-28  21:17               551 ResourceHacker.ini
2019-01-28  20:05             1,156 sample.rc
2019-01-28  20:59               792 sample.res
               5 File(s)     10,896,323 bytes
               2 Dir(s)  103,723,253,760 bytes free

के रूप में देखा है, मैं दा थोड़ा चाल (पड़ा gainarie ) के रूप में मैं नहीं (कम से कम मुझे नहीं लगता कि मैं कर सकते हैं) कर सकते हैं संशोधित .exe उपयोग में है।

4. परीक्षण

यह एक वैकल्पिक चरण है, यह सुनिश्चित करने के लिए:

  • निष्पादनयोग्य अभी भी काम करते हैं (वे प्रक्रिया में गड़बड़ नहीं थे)
  • संसाधनों को जोड़ा / अद्यतन किया गया है
[prompt]> .\cmake --help >nul 2>&1

[prompt]> echo %errorlevel%
0

[prompt]> .\ResourceHacker.exe -help

[prompt]>

==================================
Resource Hacker Command Line Help:
==================================

-help             : displays these abbreviated help instructions.
-help commandline : displays help for single commandline instructions
-help script      : displays help for script file instructions.




[prompt]> echo %errorlevel%
0

और उनका विवरण :

Img1 फाइनल


@ColonelPanic: धन्यवाद!
CristiFati

बहुत अच्छा जवाब। दुर्भाग्य से रिसोर्सहैकर अब बनाए नहीं रखा गया है और एक बड़ी EXE फ़ाइल को संपादित करने की कोशिश करते समय मेमोरी से बाहर निकल जाता है (मुझे 3GB exe खोलने की कोशिश में त्रुटि मिली)।
लुइस थेरिन

@LewsTherin: नवीनतम संस्करण (उत्तर द्वारा भी उपयोग किया जाता है) 2019/01 से है, इसलिए मैं कहूंगा कि यह बहुत बनाए रखा गया है। समस्या यह है कि यह 32 बिट है । आप 64 बिट संस्करण के लिए पूछ रहे लेखकों से संपर्क कर सकते हैं (मेरा मानना ​​है कि चूंकि उनके पास पहले से ही कोड है इसलिए इसे 64 बिट के लिए बनाना मुश्किल नहीं होगा )।
CristiFati

3

नहीं है संसाधन ट्यूनर कंसोल Heaventools सॉफ्टवेयर से।

रिसोर्स ट्यूनर कंसोल एक कमांड-लाइन टूल है जो डेवलपर्स को विंडोज 32- और 64-बिट निष्पादन योग्य फ़ाइलों की बड़ी संख्या में विभिन्न संसाधन प्रकारों के संपादन को स्वचालित करने में सक्षम बनाता है।

अधिक विवरण के लिए विशेष रूप से बदलते संस्करण चर और अद्यतन संस्करण सूचना पृष्ठ देखें।


3

पार्टी के लिए थोड़ा देर से, लेकिन जब से मैं इसकी तलाश कर रहा था (और मुझे इसे कुछ समय बाद फिर से खोजने की आवश्यकता हो सकती है), यहां मैंने वीसी2013 एक्सप्रेस के तहत अपने सी ++ डीएलएल में संस्करण, कंपनी का नाम आदि शामिल करने के लिए क्या किया:

  1. जैसा कि पहले बताया गया था, एक dllproj.rc फ़ाइल बनाई और संपादित की।
  2. DLL प्रोजेक्ट में प्री-बिल्ड स्टेप के रूप में लाइन "rc.exe dllproj.rc" को जोड़ा गया।
  3. प्रोजेक्ट के लिए संसाधन फ़ोल्डर में dllproj.res जोड़ा गया।

उम्मीद है की यह मदद करेगा!


3

@DannyBeckett के उपरोक्त उत्तर से मुझे बहुत मदद मिली,

मैंने निम्नलिखित को एक बैच फ़ाइल में रखा और मैंने इसे उसी फ़ोल्डर में रखा जहाँ रिसोर्सहैकर। Exe और मैं जिस पर काम करता हूँ वह स्थित है और यह उत्कृष्ट काम करता है। [आप अपनी आवश्यकताओं को पूरा करने के लिए इसे संपादित कर सकते हैं]

    @echo off
    :start1
    set /p newVersion=Enter version number [?.?.?.?]:
    if "%newVersion%" == "" goto start1
    :start2
    set /p file=Enter EXE name [for 'program.exe' enter 'program']:
    if "%file%" == "" goto start2
    for /f "tokens=1-4 delims=." %%a in ('echo %newVersion%') do (set ResVersion=%%a,%%b,%%c,%%d)
    (
    echo:VS_VERSION_INFO VERSIONINFO
    echo:    FILEVERSION    %ResVersion%
    echo:    PRODUCTVERSION %ResVersion%
    echo:{
    echo:    BLOCK "StringFileInfo"
    echo:    {
    echo:        BLOCK "040904b0"
    echo:        {
    echo:            VALUE "CompanyName",        "MyCompany\0"
    echo:            VALUE "FileDescription",    "TestFile\0"
    echo:            VALUE "FileVersion",        "%newVersion%\0"
    echo:            VALUE "LegalCopyright",     "COPYRIGHT © 2019 MyCompany\0"
    echo:            VALUE "OriginalFilename",   "%file%.exe\0"
    echo:            VALUE "ProductName",        "Test\0"
    echo:            VALUE "ProductVersion",     "%newVersion%\0"
    echo:        }
    echo:    }
    echo:    BLOCK "VarFileInfo"
    echo:    {
    echo:        VALUE "Translation", 0x409, 1200
    echo:    }
    echo:}
    ) >Resources.rc     &&      echo setting Resources.rc
    ResourceHacker.exe -open resources.rc -save resources.res -action compile -log CONSOLE
    ResourceHacker -open "%file%.exe" -save "%file%Res.exe" -action addoverwrite -resource "resources.res"  -log CONSOLE
    ResourceHacker.exe -open "%file%Res.exe" -save "%file%Ico.exe" -action addskip -res "%file%.ico" -mask ICONGROUP,MAINICON, -log CONSOLE
    xCopy /y /f "%file%Ico.exe" "%file%.exe"
    echo.
    echo.
    echo your compiled file %file%.exe is ready
    pause

[साइड नोट के रूप में मैंने रिस फाइल को संकलित करने के लिए रिसोर्स हैकर का उपयोग किया था, न कि GoRC]


2

आप वास्तव में डाउनलोड लिंक से FVIE डाउनलोड करने का प्रयास कर सकते हैं और किसी भी .exe फ़ाइल के लिए जानकारी संपादित करने का प्रयास कर सकते हैं ।

(या)

आप डाउनलोड लिंक से StampVer - Win32 संस्करण संसाधन मुद्रांकन डाउनलोड कर सकते हैं जो विंडोज़ .exe फ़ाइलों के लिए वास्तव में उपयोगी है।

(या)

आप RCEDIT नामक कमांड टूल का उपयोग कर सकते हैं । Github स्रोत लिंक से डाउनलोड करें और फिर Visual Studio 2015 का उपयोग करके निर्माण करें और फिर आपके पास .exe फ़ाइलों के संस्करण को बदलने के लिए विशिष्ट कमांड हैं। विभिन्न उपलब्ध आदेशों के लिए डॉक्स लिंक देखें ।


1

यह सबसे अच्छा उपकरण है जिसे मैंने नौकरी के लिए देखा है, सभी फ़ाइल संसाधनों पर पूर्ण नियंत्रण की अनुमति देता है, संस्करणइन्फो शामिल हैं।

देखें: ResourceEditor द्वारा एंडर्स मेलेंडर


1
संसाधन संपादक (0 बाइट्स) के लिए डाउनलोड टूट गया है।
जैक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.