क्या 7-जिप सेल्फ-एक्सट्रैक्टिंग आर्काइव (SFX) आर्काइव से निकासी के बाद किसी फाइल को निष्पादित करना संभव है?


40

मैं एक संकुचित परिनियोजन-सक्षम अनुप्रयोग बनाने का प्रयास कर रहा हूं।

वर्तमान में मैं अपनी आईडीई (विजुअल स्टूडियो 2008 - डब्ल्यूपीएफ प्रकाशित एप्लिकेशन) से फाइल का एक सेट ले रहा हूं और उन्हें 7-ज़िप एसएफएक्स संग्रह में संपीड़ित कर रहा हूं।

मेरे उपयोगकर्ताओं ने पूछा है कि क्या वे 7-जिप एक्सई से "एक क्लिक इंस्टॉल" कर सकते हैं। जब मैं संग्रह बना रहा हूँ तो एक पैरामीटर सूची है। क्या इंस्टॉलर निष्पादन योग्य को निकालने के लिए मापदंडों के संयोजन के कुछ प्रकार सेट करने का एक तरीका है?

दुर्भाग्य से 7-ज़िप प्रलेखन इस परिदृश्य को कवर नहीं करता है। मैंने कई भुगतान किए गए एप्लिकेशन देखे हैं जो ऐसा ही कुछ करते हैं, लेकिन मैं उस टूल को रखने की कोशिश कर रहा हूं जो मैं लाइसेंस प्राप्त कोड से मुक्त लिख रहा हूं ताकि हम इसे आंतरिक रूप से उपयोग कर सकें।


क्या आप भुगतान किए गए कुछ लोगों को इंगित कर सकते हैं?
अभिषेक ab।

जवाबों:


35

आपको 7-ज़िप से LMZA एसडीके डाउनलोड करना होगा । "इंस्टॉलर। टेक्स्ट" फ़ाइल में दस्तावेज़ हैं:

7zSD.sfx इंस्टॉलरों के लिए SFX मॉड्यूल है। 7zSD.sfx msvcrt.dll का उपयोग करता है।

एसएफएक्स मॉड्यूल इंस्टॉलर के लिए इंस्टॉलेशन प्रोग्राम बनाने की अनुमति देता है। इस तरह के मॉड्यूल अस्थायी फ़ोल्डर में संग्रह को निकालता है और फिर निर्दिष्ट कार्यक्रम चलाता है और कार्यक्रम की समाप्ति के बाद अस्थायी फ़ाइलों को हटा देता है। इंस्टॉलर के लिए सेल्फ-एक्सट्रैक्ट आर्काइव को 3 फाइलों में शामिल होने के लिए बनाया जाना चाहिए: SFX_Module, Installer_Config, 7z_Archive। Installer_Config वैकल्पिक फ़ाइल है। इंस्टॉलर सेल्फ-अर्क आर्काइव बनाने के लिए आप निम्न कमांड का उपयोग कर सकते हैं:

copy /b 7zSD.sfx + config.txt + archive.7z archive.exe

आपको एक config.txt फ़ाइल बनाने की आवश्यकता है।

कॉन्फ़िगर फ़ाइल में इंस्टॉलर के लिए कमांड हैं। फ़ाइल स्ट्रिंग से शुरू होती है ;!@Install@!UTF-8!और इसके साथ समाप्त होती है ;!@InstallEnd@!। फ़ाइल को UTF-8 एन्कोडिंग में लिखा जाना चाहिए। फ़ाइल में स्ट्रिंग जोड़े हैं:

ID_String = "मान"

Title संदेशों के लिए शीर्षक

BeginPrompt शीघ्र संदेश शुरू करें

Progressमान "हाँ" या "नहीं" हो सकता है। डिफ़ॉल्ट मान "हाँ" है।

RunProgramअमल करने की आज्ञा। डिफ़ॉल्ट मान "setup.exe" है। %% T को प्रतिस्थापित करके अस्थायी फ़ोल्डर में ले जाया जाएगा, जहाँ फाइलें निकाली गई थीं

Directory"रनप्रोग्राम" के लिए निर्देशिका उपसर्ग। डिफ़ॉल्ट मान "" है। "

ExecuteFile निष्पादन के लिए फ़ाइल का नाम

ExecuteParameters "ExecuteFile" के लिए पैरामीटर

उदाहरण के लिए:

 ;!@Install@!UTF-8!
 Title="7-Zip 4.00"
 BeginPrompt="Do you want to install the 7-Zip 4.00?"
 RunProgram="setup.exe"
 ;!@InstallEnd@!

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

@ मायकेजी - यह लिंक बहुत अधिक गहन है। इसने समझाया कि कैसे विघटन के हिस्से को पूरी तरह से पारदर्शी बनाया जाए। बहुत अच्छा धन्यवाद!
नामुएल

5
ध्यान दें कि "SFX मॉड्यूल LZMA SDK पैकेज में ले जाया गया था" ( 7-zip.org पर उपलब्ध ) संस्करण 9.35 बीटा के रूप में।
लुकास

21

सहमत समाधान सही है, लेकिन वास्तव में यह समझाने में मदद नहीं करता है कि आपको वास्तव में क्या करने की आवश्यकता है! मैंने इसे और कई अन्य समाधानों को पढ़ा और मुझे ऐसा करने के तरीके पर पूर्ण और पूर्ण सरल निर्देश नहीं मिले।

मुझे लगता है कि मैं उलझन में था, कृपया मेरे ब्लॉग पोस्ट को पढ़ें, जो मॉली 7244 ने पोस्ट किया है कि कैसे प्राप्त करने के लिए कदम से कदम निर्देश प्रदान करता है।

सेल्फ एक्सट्रैक्टिंग आर्काइव कैसे बनाया जाए जो आपके सेटअप को चलाता है। 7zip -sfx स्विच के साथ

यह मेरे ध्यान में लाया गया था कि लिंक मृत हो सकते हैं, यहाँ कदम हैं, मेरे ब्लॉग से

चरण 1 - अपने स्थापना फ़ोल्डर को सेटअप करें

इसे आसान बनाने के लिए एक फ़ोल्डर बनाएँ c: \ Install। यह वह जगह है जहां हम सभी आवश्यक फ़ाइलों को कॉपी करेंगे।

स्टेप 2 - 7Zip अपने इंस्टॉलर

  1. उस फ़ोल्डर पर जाएं जिसमें आपका .msi और आपका setup.exe है
  2. .Msi और setup.exe दोनों का चयन करें
  3. राइट-क्लिक करें और 7Zip चुनें -> "पुरालेख में जोड़ें"
  4. अपने संग्रह का नाम "Installer.7z" (या अपनी पसंद का नाम)
  5. ओके पर क्लिक करें
  6. अब आपके पास "Installer.7z" होना चाहिए।
  7. इस .7z फ़ाइल को अपने c: \ Install निर्देशिका में कॉपी करें

चरण 3 - 7z-extra sfx एक्सटेंशन मॉड्यूल प्राप्त करें

आपको 7z-Extra डाउनलोड करना होगा।

  1. 7Zip डाउनलोड करने के लिए इस लिंक का अनुसरण करें
  2. आपको 9.20 संस्करण (@ मई -2015) डाउनलोड करने की आवश्यकता है क्योंकि बीटा में सही फाइलें नहीं हैं।
  3. एक सीधा डाउनलोड लिंक।
  4. 7zip अतिरिक्त फ़ाइलें निकालें
  5. "7zS.sfx" फ़ाइल को c: \ Install में कॉपी करें

चरण 4 - अपना config.txt सेटअप करें

मैं इस पाठ फ़ाइल को संपादित करने के लिए नोटपैड ++ का उपयोग करने की सलाह दूंगा क्योंकि आपको यूटीएफ -8 में सांकेतिक शब्दों में बदलना होगा, निम्नलिखित निर्देश नोटपैड ++ का उपयोग कर रहे हैं।

  1. विंडोज़ एक्सप्लोरर का उपयोग करके c: \ Install पर जाएं
  2. राइट-क्लिक करें और "न्यू टेक्स्ट फाइल" चुनें और इसे config.txt नाम दें
  3. राइट-क्लिक करें और चुनें "नोटपैड के साथ संपादित करें ++
  4. "एन्कोडिंग मेनू" पर क्लिक करें और "UTF-8 में एनकोड" चुनें
  5. कुछ इस तरह दर्ज करें:

    ;!@Install@!UTF-8!
    Title="SOFTWARE v1.0.0.0"
    BeginPrompt="Do you want to install SOFTWARE v1.0.0.0?"
    RunProgram="setup.exe"
    ;!@InstallEnd@!
    

अपने उत्पाद के नाम के साथ [सॉफ़्टवेयर v1.0.0.0] को प्रतिस्थापित करें। सेटअप फ़ाइल के लिए मापदंडों और विकल्पों पर नोट्स यहाँ हैं

चेकप्वाइंट

अब आपके पास निम्न 3 फ़ाइलों के साथ एक फ़ोल्डर "c: \ Install" होना चाहिए:

  1. Installer.7z
  2. 7zS.sfx
  3. config.txt

चरण 5 - संग्रह बनाएं

ये निर्देश मुझे वेब पर मिले लेकिन कहीं भी यह ऊपर दिए गए 4 चरणों में से किसी को भी नहीं समझाता।

  1. एक cmd विंडो खोलें, Window + R -> cmd -> एंटर दबाएँ
  2. कमांड विंडो में निम्न टाइप करें

    cd \
    cd Install
    copy /b 7zS.sfx + config.txt + Installer.7z MyInstaller.exe
    
  3. C: \ Install में देखें और अब आप देखेंगे कि आपके पास एक MyInstaller.exe है

  4. तुम खत्म हो चुके

इंस्टॉलर चलाएं

MyInstaller.exe पर डबल क्लिक करें और यह आपके संदेश के साथ संकेत देगा। OK पर क्लिक करें और setup.exe चलेगा।

स्वचालन पर पुनश्च नोट

अब जब आपके पास यह काम कर रहा है c: \ Install निर्देशिका तो मैं एक "Install.bat" फ़ाइल बनाऊंगा और उसमें कॉपी स्क्रिप्ट डालूंगा।

copy /b 7zS.sfx + config.txt + Installer.7z MyInstaller.exe

अब आप बस हर बार आपको Install.bat को एडिट और रन कर सकते हैं।


2
यह स्वीकृत उत्तर होना चाहिए!
noelicus

क्या ExecuteParametersआइटम में कमांड लाइन आर्ग पास करना संभव है config.txt? उदाहरण के लिए: C:\Install\MyInstaller.exe some_file.txt निष्पादित करेगा setup.exe some_file.txt
dthor 20

हाँ यही है। जैसा कि मैथ्यू-लुंडबर्ग ने अपने जवाब में कहा , "एसएफएक्स निष्पादन के लिए दिए गए तर्क
इंस्टा। सेमी

8

आपको NSIS को भी देखना चाहिए । इसके साथ, आप एक इंस्टॉलर बना सकते हैं जो उसी विधि से संपीड़ित होता है जो 7-ज़िप का उपयोग करता है ( LZMA ), इसलिए यह लगभग एक ही आकार का होना चाहिए, और स्थापना प्रक्रिया पर आपका पूरा नियंत्रण है।


2

Jcrawfor74 के उत्तर पर बिल्डिंग, यहां कुछ अतिरिक्त जानकारी दी गई है:

7zS.sfx के बजाय , आप फ़ाइल 7zS2.sfx का भी उपयोग कर सकते हैं । यह एक बहुत छोटा संस्करण है (28 kB बनाम 140 kB), लेकिन यह config.txt फ़ाइल का समर्थन नहीं करता है। तो आप बस इसे कॉपी कमांड में छोड़ सकते हैं। यदि आप केवल छोटे विन्यास स्क्रिप्ट बनाना चाहते हैं, तो इससे आप छोटी EXE फ़ाइलों का निर्माण कर सकते हैं।

छोटा SFX मॉड्यूल कोई प्रश्न नहीं पूछता है। यह फ़ाइलों को अन्य मॉड्यूल के रूप में एक अस्थायी फ़ोल्डर में निकालता है, और फिर निष्पादन योग्य उम्मीदवारों को ढूंढता है। स्रोत कोड (डाउनलोड पेज पर भी उपलब्ध) के अनुसार, C \ Util \ SfxSetup \ SfxSetup.c में, यह उनके नाम और एक्सटेंशन के आधार पर अलग-अलग फ़ाइलों का वजन करता है और फिर उच्चतम स्कोरिंग फ़ाइल चुनता है।

दोनों SFX मॉड्यूल स्वचालित रूप से प्रशासक के रूप में चलते हैं , कम से कम विंडोज 10 में, और इसे कॉन्फ़िगर नहीं किया जा सकता है। हालांकि यह व्यवहार सिस्टम-वाइड सेटअप के लिए वांछनीय हो सकता है, यह हमेशा ऐसा नहीं हो सकता है। इसके अलावा, यह निर्णय केवल फ़ाइल संस्करण डेटा पर आधारित है, क्योंकि इसमें कोई प्रकट रूप शामिल नहीं है जो स्पष्ट रूप से विंडोज को बताता है कि क्या करना है। विंडोज संगतता फ़ाइल को देखती है और "सेटअप" जैसे तार ढूंढती है जो ऊंचाई बढ़ाने के लिए प्रेरित करती है।

यदि आपको एक SFX मॉड्यूल की आवश्यकता है जो व्यवस्थापक अनुमतियों के लिए नहीं पूछता है, तो आप स्रोत से SFX मॉड्यूल का पुनर्निर्माण कर सकते हैं, या सरल, इसकी फ़ाइल संस्करण जानकारी को इस तरह एक संसाधन संपादक के साथ संपादित कर सकते हैं । फ़ाइलडेस्क्रिप्शन फ़ील्ड से "सेटअप" शब्द को हटा दें, उल्लेखित संसाधन हैकर के मामले में फ़ाइल संकलित करें, और EXE फ़ाइल सहेजें। आप इस चरण को सीधे 7zS.sfx या 7zS2.sfx फ़ाइल पर भी कर सकते हैं और इसे कहीं रख सकते हैं ताकि आप इसका उपयोग गैर-उन्नत SFX पैकेज बनाने में कर सकें। और आप इसका उपयोग पूरी तरह से फ़ाइल संस्करण जानकारी को अनुकूलित करने के लिए कर सकते हैं ताकि आपके उत्पाद का नाम या उसमें कुछ भी हो जो पेलोड का वर्णन करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.