2010-05-22 5 views
7

पूरी कहानी: मैंने एक फैंसी .NET प्रोग्राम बनाया है जिसमें विजुअल स्टूडियो इंस्टालर (वीएसआई) द्वारा इंस्टॉल किया गया इंस्टॉलर है। वीएसआई 2 फाइलें (setup.exe और MyProgramSetup.msi) बनाता है। मैं दोनों फाइलों की आवश्यकता के कारणों को समझता हूं, हालांकि, मैं केवल उपयोगकर्ताओं के लिए एक एकल निष्पादन योग्य इंस्टॉलर वितरित करना चाहता हूं। मैं नहीं चाहता कि वे 2 फाइलें देखें और उन्हें बीच में चयन करना होगा।कमांड लाइन उपयोगिता का उपयोग करके मैं exe के संसाधनों (फ़ाइल विवरण, आइकन, आदि) को कैसे संपादित कर सकता हूं?

ऐसा करने के लिए मैंने आईईएक्सप्रेस का उपयोग करके 2 फाइलों को स्वयं निकालने वाले संग्रह में विलय कर दिया है (जैसा कि इस उत्तर में देखा गया है: Merge msi and exe)। यह अच्छी तरह से काम करता है, हालांकि, बनाए गए आत्म-निकालने वाले संग्रह में एक बदसूरत आइकन और भ्रमित फ़ाइल जानकारी है (फ़ाइल विवरण "Win32 कैबिनेट सेल्फ-एक्स्ट्रैक्टर" इसके बाद 43 रिक्त स्थान के साथ है)।

मुझे अपने कस्टम एक के साथ आइकन को प्रतिस्थापित करने और "विवरण", "कंपनी" आदि जैसी कुछ फ़ाइल गुणों को बदलने की आवश्यकता है। मैं इसे स्वचालित रूप से एक बिल्ड चरण के रूप में करना चाहता हूं ताकि एक प्रोग्राम हो एक कमांड लाइन/कंसोल उपयोगिता बहुत अच्छी होगी।

मैंने थोड़ी देर के लिए खोज की है और केवल एक प्रोग्राम ही मिल सकता है जो मैं चाहता हूं (संसाधन ट्यूनर कंसोल: http://www.heaventools.com/command-line_resource_editor.htm) लेकिन यह एक हाथ और एक पैर खर्च करता है और मेरा बजट $ 0 है।

क्या कोई मुझे जो हासिल करना चाहते हैं, उसे प्राप्त करने का एक बेहतर तरीका जानता है, या किसी ऐसे प्रोग्राम के बारे में पता है जो किसी निष्पादन योग्य संसाधनों को जीयूआई का उपयोग किए बिना प्रतिस्थापित कर सकता है?

वैसे, मैं भी SiComponents 'संसाधन बिल्डर 3 की कोशिश की है जो और भी निष्पादन योग्य नहीं खोल सकता, और ResEdit जो सिर्फ दुर्घटनाओं जब मैं आदेश निष्पादित करें:

resedit.exe -convert "Modified Resources.rc" "MyProgramSetup.exe" 

उत्तर

5

दृश्य स्टूडियो उन्हें अगर संपादित कर सकते हैं आप निष्पादन योग्य फ़ाइल खोलें। मुझे यकीन नहीं है कि कमांड लाइन से ऐसा करने का कोई तरीका है, हालांकि।

एक सभ्य CodeProject article है जो आइकन से संबंधित है (उन्हें exe फ़ाइलों में सहेजने सहित)।

कंपनी का नाम, विवरण, आदि, संस्करण संसाधन का हिस्सा हैं। एक और CodeProject article संस्करण संसाधन को अद्यतन करने में शामिल है, हालांकि मैंने उसमें गहराई से नहीं देखा है।

+3

आपका दूसरा लिंक (वेरपैच) संस्करण संसाधनों को बदलने के लिए बिल्कुल सही था। ओपन सोर्स और केवल 9 3 केबी, उत्कृष्ट! मैंने निम्न आदेश का उपयोग किया: verpatch.exe "Blah सेटअप।exe "/ s companyName" Blah "/ s फ़ाइल डिस्क्रिप्शन" Blah "/ s InternalName" Blah "/ s LegalCopyright" Blah "/ s OriginalFilename" Blah " – Coder7862396

3

क्या आपने 'reshacker' AKA 'संसाधन हैकर' देखा है? इसे मुख्य रूप से एक गुई उपकरण के रूप में प्रचारित किया जाता है, लेकिन सहायता फ़ाइल कहती है कि कमांड लाइन स्क्रिप्टिंग का उपयोग करके इसकी सभी सुविधाओं तक पहुंचा जा सकता है। मैंने एक्सई के अंदर आइकन बदलने के लिए अपने गुई फॉर्म का उपयोग किया है, और यह आपको अन्य एम्बेडेड संसाधनों पर भी जाने देगा। बस 'संसाधन हैकर' के लिए Google, वर्तमान संस्करण 3.4.0

+1

मैं निम्नलिखित कमांड का उपयोग करके मुख्य आइकन को प्रतिस्थापित करने के लिए रिसोरसे हैकर का उपयोग करने में सक्षम था: ResHacker.exe -addoverwrite "Blah Setup.exe", "Blah Setup.exe", "ProgramIcon.ico", ICONGROUP, MAINICON, 0 – Coder7862396

2

फ़ाइल संस्करण जानकारी प्रश्न का उत्तर देने के लिए, आप IExpress .SED फ़ाइल में अपनी खुद की संस्करण जानकारी शामिल कर सकते हैं। यह site IExpress .SED फ़ाइल अनुभागों और विशेषताओं पर अतिरिक्त विवरण प्रदान करता है। अंतर्निहित कार्यक्षमता का उपयोग सेटअप exe पोस्ट-प्रोसेसिंग से आसान लगता है।

मूल रूप से, .SED फ़ाइल में, विकल्प अनुभाग में VersionInfo संदर्भ शामिल करें। फिर अपनी संस्करण जानकारी वाले अनुभाग बनाएं।

[Options] 
VersionInfo=VersionSection 

[VersionSection] 
FromFile= ;Uses the version info in this executable file 
; or specify each attribute 
; or specify the FromFile and override individual attributes 
FileDescription= 
CompanyName= 
FileVersion= 
ProductVersion= 
OriginalFilename= 
LegalCopyright= 
ProductName= 
InternalName= 

बीटीडब्ल्यू, फाइलवर्सन मेरे लिए काम नहीं करता है। वाईएमएमवी,

+0

मैं इस तरह की sed फ़ाइलों को संपादित करता हूं और परिवर्तनों को सहेजता हूं, लेकिन संशोधित विवरण परिलक्षित नहीं होते हैं अंतिम exe। क्या मुझे परिवर्तन देखने के लिए मशीन को लक्षित करने के लिए exe के साथ sed फ़ाइल साझा करने की आवश्यकता है? –

+0

@JMat क्या आपने अपनी परिनियोजन परियोजना में .SED फ़ाइल जोड़ दी थी। .एसईडी फ़ाइल का उपयोग केवल दौरान किया जाता है निर्माण चरण; उस फ़ाइल को वितरित करने की कोई आवश्यकता नहीं है। –

+0

.sed फ़ाइल exe फ़ाइल के साथ मेरे लिए IExpres विज़ार्ड द्वारा जेनरेट की गई है। इसलिए इसकी तरह हमें exe उत्पन्न करने के बाद sed फ़ाइल संपादित करना है या मैं इसे कर रहा हूं गलत ओर्डे आर? वर्तमान में जो कदम मैं कर रहा हूं वे हैं 1. Iexpress टूल का उपयोग करके exe और sed फ़ाइल उत्पन्न करें और ऊपर वर्णित उत्तर के अनुसार sed फ़ाइल संपादित करें और परिवर्तनों को सहेजें। लेकिन sed फ़ाइलों पर संपादन exe फ़ाइल पर प्रतिबिंबित नहीं कर रहे हैं। मेरा प्रश्न यहां http://stackoverflow.com/questions/28313804/edit-fileinfo-of-exe-created-using-iexpress-by-modifying-sed-file –