wix - मैं दो(या अधिक) एमएसआई फ़ाइलों की सामग्री की तुलना कैसे कर सकता हूं?



windows-installer msiexec (1)

मैं दो (या अधिक) MSI फ़ाइलों की " सामग्री तुलना " कैसे कर सकता हूं और देख सकता हूं कि फाइलों के अंदर वास्तव में क्या अलग है - एक बेकार बाइनरी तुलना करने के बजाय? (जो स्पष्ट रूप से केवल मुझे बताता है कि मैं उसी फ़ाइल की प्रतियों के साथ काम कर रहा हूं या नहीं)।

कुछ प्रासंगिक और विशिष्ट समस्या परिदृश्य :

  • हमारी निर्माण प्रणाली पागलों की तरह एमएसआई फ़ाइलों को बाहर निकालती है, और कभी-कभी हमें यह पता लगाने की आवश्यकता होती है कि विभिन्न एमएसआई फ़ाइलों के बीच क्या अंतर मौजूद हैं (पढ़ें: कुछ बदल गया, और अब हम तैनाती में विफल हो रहे हैं)।
  • हमारे पास विभिन्न स्थानों में समान स्रोतों से संकलित MSI फाइलें हैं, और उनमें से कुछ रिपोर्टिंग System.BadImageFormatException को चलाने में विफल हैं। System.BadImageFormatException - MSI फ़ाइलों में अंतर क्या हैं, हम कैसे डिबग कर सकते हैं? (विशेष रूप से यहाँ इस त्रुटि से निपटने वाला उत्तर: क्या अनुप्रयोग उस वातावरण पर निर्भर हैं जहाँ इसे संकलित किया गया था? )।
  • MSI फ़ाइलों को सभी प्रकार के टूल के साथ संकलित किया जा सकता है, लेकिन स्टैकओवरफ़्लो उपयोगकर्ताओं के लिए ऐसी फाइलें संभवतः WiX या विज़ुअल स्टूडियो इंस्टॉलर प्रोजेक्ट्स (फ्री टूलकिट्स) का WiX करके बनाई जाती हैं।

वास्तविक "सामग्री अंतर" क्या है यह निर्धारित करने के लिए आपकी संकलित MSI फ़ाइलों की तुलना करने के विषय पर यह क्यू / ए-शैली का प्रश्न है।


About MSI Files

मोटे तौर पर बोलने वाली एमएसआई फाइलें COM-संरचित भंडारण फाइलें हैं - अनिवार्य रूप से एक फाइल के भीतर एक फाइल सिस्टम - विभिन्न सामग्रियों की धाराओं के साथ, जिनमें से एक एसक्यूएल सर्वर डेटाबेस (मुझे विश्वास है कि सबसे सामान्य शब्दों में) को छीन लिया गया है। बशर्ते एमएसआई फाइलें पढ़ने योग्य हों, सामग्री (विभिन्न प्रारूपों और प्रकारों) की तुलना की जा सकती है।

टेक नोट : यह एक प्रचलित है कि एक MSI जो एक System.BadImageFormatException को ट्रिगर करता है। System.BadImageFormatException बस रन करने योग्य नहीं है ( msiexec.exe इसे नहीं चला सकता है), लेकिन यह अभी भी पठनीय हो सकता है - और इसलिए तुलनीय (कृपया इसे सत्यापित करने के लिए एक टिप्पणी जोड़ें) यदि आप उस का अनुभव करें)।

धाराएँ : MSI में कुछ धाराएँ स्ट्रिंग मानों वाली तालिकाएँ हैं। वहाँ भी हो सकता है एम्बेडेड कैब-अभिलेखागार के लिए स्ट्रीम करने के लिए फ़ाइलों को संग्रहीत करने के लिए उपयोग किया जाता है, और बाइनरी सामग्री के साथ तालिकाओं केवल - जैसे Binary table जहां संकलित और असूचीबद्ध कस्टम क्रियाएं समान रूप से अन्य बाइनरी सामग्री सेटअप आवश्यकताओं के साथ संग्रहीत की जाती हैं। और एक विशेष " सारांश स्ट्रीम " है और उनके मूल, बाइनरी प्रारूप में संग्रहीत आइकन के साथ एक तालिका है, और सूची चलती है ... अधिकांश तालिकाओं के लिए हम प्रत्येक तालिका में तार की तुलना बहुत अधिक कर सकते हैं जैसे हम पाठ की तुलना करते हैं एक वर्ड डॉक्यूमेंट (जो कि OLE / COM फाइलें भी हुआ करता था - हालांकि अब नए संस्करण ओपन ऑफिस XML का उपयोग करते हैं) और मतभेदों की एक विस्तृत रिपोर्ट प्राप्त करते हैं। ऐसा करने के लिए, आपको स्पष्ट रूप से नौकरी के लिए एक विशेष उद्देश्य के उपकरण की आवश्यकता होती है - जो कि सभी प्रासंगिक धाराओं को अपना रास्ता खोजने में सक्षम है। इसके लिए कुछ वाणिज्यिक और मुफ्त उपकरण नीचे सूचीबद्ध हैं।

बाइनरी कंटेंट : इसे विस्तृत करने से पहले, मुझे ध्यान देना चाहिए कि Binary Table , Cabs Table , Icon Table - या किसी अन्य बाइनरी टेबल में सामग्री की तुलना करते हुए, आप आम तौर पर एक बाइनरी की तुलना केवल (विशेष रूप से संकलित कस्टम एक्शन dll और exe फ़ाइलों के लिए) कर सकते हैं। स्क्रिप्ट कस्टम क्रियाएं - बाइनरी टेबल में - पाठ के रूप में तुलना की जा सकती हैं, लेकिन संकलित कस्टम क्रियाएं केवल बाइनरी तुलना हैं। इसलिए यदि आपकी समस्या एक संकलित कस्टम कार्रवाई से निकलती है, तो आप वास्तव में इसे प्रत्यक्ष तुलना में नहीं देख सकते हैं (आप केवल द्विआधारी अंतर देखते हैं)। किसी भी तरह के संकलित कस्टम क्रियाओं के लिए कोड का उपयोग करने के लिए आपको अपने स्रोत नियंत्रण प्रणाली को हिट करने की आवश्यकता है - उम्मीद है कि आपके पास एक अच्छा लेबल अभ्यास है ताकि आप प्रत्येक सेटअप में उपयोग किए जाने वाले वास्तविक स्रोत कोड को पा सकें। मैं इस अभ्यास का उपयोग नहीं करता हूं, लेकिन आंतरिक, कॉर्पोरेट रिलीज़ के लिए शायद आप अपने संकलित कस्टम एक्शन के लिए अपने डिबग-बिल्ड डीएल को भी शामिल कर सकते हैं, और डिबगर को रनिंग कोड से जोड़ने का प्रयास कर सकते हैं ताकि वास्तव में पता चल सके कि क्या हो रहा है? मैं एक सार्वजनिक रिलीज के लिए डिबग मोड का उपयोग नहीं करूंगा, हालांकि - जब तक मैं किसी भी जोखिम को स्पष्ट नहीं करता। डिबग कोड को (अनपेक्षित) डिबग मैसेज बॉक्स (डिबगर संलग्न करने के लिए प्रवेश बिंदु के रूप में उपयोग किया जाता है) और अन्य समस्याओं के साथ जोड़ा जा सकता है, जिन्हें कभी भी उत्पादन पैकेज नहीं मारना चाहिए।

यह सोचने के लिए आओ, आपकी कैब फ़ाइलों और आइकन फ़ाइलों की तुलना निश्चित रूप से पुराने (या नए) MSI फ़ाइलों की तुलना करने के लिए की जा सकती है। तकनीक का उपयोग करके dark.exe फ़ाइलों को dark.exe का उपयोग करके विघटित किया जाता है - जिसका वर्णन नीचे किया गया है। फिर, एक अच्छे तुलना टूल का उपयोग करके (बियॉन्ड तुलना नीचे बताई गई है), आप अलग-अलग एमएसआई संस्करणों के बीच कैब फ़ाइल सामग्री पर एक पूर्ण अंतर कर सकते हैं (और कुछ फाइलें पाठ फाइलें हो सकती हैं, जो पाठ की तुलना में हो सकती हैं)। मुझे लगता है कि कैब और आइकन एक खुले प्रारूप में "पारदर्शी बायनेरिज़" की तरह हैं जो संकलित बायनेरिज़ (कस्टम क्रियाओं और अधिक के साथ) के विपरीत हैं जो स्वाभाविक रूप से विघटित या निरीक्षण करने योग्य नहीं हैं (जब तक कि आप प्रबंधित बायनेरिज़ को विघटित करना नहीं जानते हैं)।

निष्कर्ष में : संकलित कस्टम क्रियाओं के अपवाद के साथ MSI फाइलें पूरी तरह से पारदर्शी हैं यह पारदर्शिता एमएसआई के मुख्य लाभों में से एक है । अधिकांश विंडोज इंस्टॉलर लाभ, पिछली तैनाती प्रौद्योगिकियों पर, आमतौर पर कॉर्पोरेट परिनियोजन लाभों के आसपास केंद्र होते हैं। दुर्भाग्य से डेवलपर्स केवल MSI के बुरे पहलुओं को देख सकते हैं: (संभावित) MSI विरोधी पैटर्न (नीचे की ओर - अभी बहुत गन्दा और तदर्थ)। माना जाता है कि इनमें से कुछ समस्याएं बहुत गंभीर हैं और "कम से कम विस्मय के सिद्धांत" का उल्लंघन करती हैं। डेवलपर्स - क्यों अन्य और समान रूप से महत्वपूर्ण चीजें हैं - स्पष्ट रूप से अविश्वास में अपने सिर को खरोंच करना छोड़ दिया जा सकता है।

हालांकि इसके बारे में कोई गलती नहीं छोड़ें: MSI में बड़े पैमाने पर कॉर्पोरेट परिनियोजन लाभ हैं ( ऊपर जैसा ही लिंक देखें, नीचे की ओर )। संघनित : विश्वसनीय मूक रनिंग, दूरस्थ प्रबंधन, रोलबैक, लॉगिंग, अंतर्निहित स्थापना रद्द करने की सुविधा, उन्नत अधिकार, मानकीकृत कमांड लाइन, पारदर्शिता, मानकीकृत सेटअप अनुकूलन के लिए रूपांतर और फ़ाइलों को विश्वसनीय रूप से निकालने के लिए व्यवस्थापक इंस्टॉल करें। बस जल्दी से बड़े लोगों का नाम लेने के लिए। सूची रूप में लाभ यहाँ

अब तक के बहुत सारे पचड़े - चलो बात करते हैं । MSI फ़ाइलों की तुलना करने के लिए कौन से टूल का उपयोग किया जा सकता है?

Commercial Tools

कई व्यावसायिक परिनियोजन उपकरण जैसे कि इंस्टीहेल्ड , एडवांस्ड इंस्टॉलर और कई अन्य MSI टूल में MSI फ़ाइलों को देखने और तुलना करने के लिए समर्थन है। हो सकता है कि मैं बहुत अधिक लिंक जोड़ूँ, लेकिन मुझे "यदि आप किसी से लिंक करते हैं, तो आप सभी से लिंक करते हैं" की मेरी सामान्य नीति का उपयोग करते हैं - यह कुछ समय और कुछ Google खोजों को सहेजना चाहिए।

एक विशेष नोट के रूप में - उदासीन एक - सबसे अच्छा एमएसआई-डिफरेंस फीचर जो मैंने कभी देखा था वह समझदार पैकेज स्टूडियो में था । यह ईमानदार होने के लिए सिर और कंधों के ऊपर था - हमेशा काम करने वाला, बड़े करीने से रंगा हुआ कोडेड और सिर्फ समझने में आसान। यह उपकरण अब बिक्री के लिए नहीं है जैसा कि यहाँ वर्णित है: किस संस्थापन उत्पाद का उपयोग करना है? InstallShield, WiX, Wise, Advanced Installer, आदि (यदि आपके पास निगम में पैकेजिंग टीम है, तो शायद उनके पास स्पेयर लाइसेंस हो?)।

Free Tools

वाणिज्यिक उपकरण अच्छे हैं, लेकिन कई मुफ्त विकल्प भी हैं जिनका उपयोग एमएसआई फ़ाइलों की तुलना करने के लिए किया जा सकता है - और नीचे उनमें से कुछ की सूची के साथ-साथ कुछ संकेत भी हैं कि प्रत्येक उपकरण का उपयोग कैसे करें (बल्कि न्यूनतम तरीके से)।

dark.exe लिए कुछ और विवरण जोड़े dark.exe - जो COM-संरचित संग्रहण फ़ाइलों के लिए एक तुलना उपकरण नहीं है, लेकिन MSI फ़ाइलों को WiX XML स्रोत फ़ाइलों से हटाने और सभी समर्थन फ़ाइलों (आइकन, बायनेरी, टैक्सी) को निकालने का एक तरीका है सेटअप फ़ाइलें) - उन्हें नियमित पाठ / बाइनरी तुलना टूल के साथ बाद में तुलना करने की अनुमति देता है।

1. Orca (MSI SDK)

Microsoft का अपना MSI SDK टूल / व्यूअर, जिसे Orca कहा जाता है, MSI फ़ाइलों को देख सकता है और उन्हें संपादित कर सकता है, लेकिन दो MSI फ़ाइलों की तुलना करने के लिए कोई प्रत्यक्ष समर्थन नहीं है (जिसके बारे में मुझे पता है)। मुझे लगता है कि आप तालिकाओं का निर्यात कर सकते हैं और फिर उनकी तुलना कर सकते हैं, लेकिन अन्य उपकरणों में अधिक अंतर्निहित विशेषताएं हैं। इस विकल्प का उल्लेख तब से है जब आप पहले से ही ओर्का स्थापित कर सकते हैं और फिर यह एक सरल तरीका है जो कि एक आसान तरीका है। " गरीब आदमी का विकल्प "।

आपके पास पहले से ही इंस्टॉलर हो सकता है । यदि आपके पास Visual Studio स्थापित है, तो Orca-x86_en-us.msi - Program Files (x86) अंतर्गत - और इसे स्थापित करने का प्रयास करें। फिर प्रारंभ मेनू में ओर्का ढूंढें। तकनीकी रूप से ओर्का विंडोज एसडीके (बड़े, लेकिन मुफ्त डाउनलोड) के हिस्से के रूप में स्थापित है। यदि आपके पास Visual Studio स्थापित नहीं है, तो शायद आप किसी ऐसे व्यक्ति को जानते हैं जो करता है? बस उन्हें इस MSI की खोज करनी है और आपको भेजना है (यह एक छोटा सा आधा mb फ़ाइल है) - उन्हें सेकंड लेना चाहिए। यदि नहीं, तो आप हमेशा विंडोज एसडीके डाउनलोड कर सकते हैं

2. Super Orca (free third party tool)

सुपर ओर्का दो MSI फ़ाइलों की एक अल्पविकसित तुलना की अनुमति देगा। मेरा धुआं परीक्षण से पता चलता है कि उन्नत फ़ील्ड जैसे कि सारांश स्ट्रीम को अनदेखा किया जा सकता है। दूसरे शब्दों में एक सीधी तालिका केवल तुलना करती है। अन्य सीमाएं हो सकती हैं। शायद यह काफी अच्छा है? यह प्रयोग करने में आसान है।

3. widiffdb.vbs (MSI SDK)

MSI SDK में एक VBScript है जिसका उपयोग आप दो MSI फ़ाइलों के बीच अंतर देखने के लिए कर सकते हैं। इसे widiffdb.vbs ( widiffdb.vbs ) कहा जाता है। इस टूल के साथ मैं Super Orca द्वारा नजरअंदाज किए गए सारांश स्ट्रीम अंतर को देख सकता हूं। कुछ भी MSI SDK आधिकारिक है।

अद्यतन : github.com (वास्तविक VBScript कोड) पर सभी MSI SDK API स्क्रिप्ट

  • ऐसे MSI SDK VBScripts की पूरी सूची के लिए एक लिंक में फेंक - विभिन्न प्रयोजनों के लिए। भ्रमित न हों, MSI फ़ाइलों की तुलना के लिए केवल widiffdb.vbs की आवश्यकता होती है, लेकिन अन्य उद्देश्यों के लिए कई उपयोगी स्क्रिप्ट हैं।
  • यदि आपके पास विजुअल स्टूडियो स्थापित है, तो बस widiffdb.vbs को widiffdb.vbscscript.exe साथ लॉन्च करें और उनकी तुलना करने के लिए दो MSI फ़ाइलों के लिए पूर्ण पथ में पास करें। कंसोल में आउटपुट।

उपयोग:

cscript.exe widiffdb.vbs "Setup 1.msi" "Setup 2.msi"

नमूना आउटपुट:

Property Value           [ALLUSERS] {1}->{2}
Property Value           [MSIINSTALLPERUSER] {}->{1}
Property INSERT          [MSIINSTALLPERUSER]
\005SummaryInformation   [9] {{00000000-0000-0000-0000-000000000000}}->{{00000000-0000-0000-0000-000000000001}}
\005SummaryInformation   [12] {28.03.2019 15:20:02}->{28.03.2019 14:40:52}
\005SummaryInformation   [13] {28.03.2019 15:20:02}->{28.03.2019 14:40:52}
\005SummaryInformation   [15] {2}->{10}

स्क्रिप्ट खोजने के लिए, आप इसे Program Files (x86) तहत खोज सकते हैं यदि आपके पास विजुअल स्टूडियो इंस्टॉल है (यह विंडोज एसडीके का हिस्सा है जिसे विजुअल स्टूडियो के साथ भी इंस्टॉल किया जाएगा) - (वर्तमान में पथ है: C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86 - बस वर्जन संख्याओं को उचित रूप से बदलें और आपको MSI तेज ढूंढना चाहिए)।

4. dark.exe (WiX toolkit - open source) dark.exe (WiX toolkit - open source)

dark.exe टूलसेट से dark.exe बाइनरी (एक टूलकिट जो संभवतः आपकी कुछ MSI फ़ाइलों को संकलित करने के लिए इस्तेमाल किया गया था)। यह dark.exe MSI फ़ाइलों के लिए एक " dark.exe " या " dark.exe " है। यह एक्सएमएल प्रारूप (पहली जगह में एमएसआई फ़ाइलों को संकलित करने के लिए उपयोग किया जाने वाला वाईएक्स का खुद का प्रारूप) के साथ-साथ एक्सट्रैक्टेड बाइनरी फ़ाइलों की संख्या के साथ (यदि आप सही डिकंपाइल विकल्प और झंडे का उपयोग करते हैं) तो एमएसआई फ़ाइलों को कनवर्ट कर देंगे।

wxs स्रोत फ़ाइलों की तुलना नियमित पाठ स्रोत फ़ाइलों के रूप में की जा सकती है (इसके लिए मेरा पसंदीदा उपकरण Beyond तुलना है , लेकिन यह एक वाणिज्यिक उपकरण है - पाठ तुलना उपकरण के बहुत सारे हैं - विजुअल स्टूडियो में शामिल हैं)। बाइनरी फाइलें स्पष्ट रूप से बाइनरी की तुलना में हो सकती हैं। किसी भी निकाली गई CAB फ़ाइल की तुलना अन्य, समान कैब फ़ाइल उदाहरण के लिए किसी अन्य MSI सेटअप संस्करण से की जा सकती है।

यहाँ एक नमूना कमांड लाइन है:

dark.exe -x outputfolder MySetup.msi
  • कई मामलों में यह एमएसआई फाइलों की तुलना में बहुत अच्छा होगा और आपको यह निर्धारित करने में सक्षम होना चाहिए कि वास्तव में क्या अलग है।

  • निकाले गए बायनेरिज़ स्क्रिप्ट फ़ाइलें (VBScripts, आदि ...) या किसी भी अन्य बायनेरिज़ की संख्या हो सकती है (उदाहरण के लिए DLL कस्टम क्रियाओं को संकलित)। बाद के मामले में आप वास्तव में इसे और अधिक विघटित नहीं कर सकते - जब तक कि यह एक .NET बाइनरी नहीं है और आपके पास ऐसे बायनेरिज़ को डिकम्पोज करने में विशेषज्ञता है।

  • हालांकि, यह ध्यान दिया जाना चाहिए कि सटीक एक ही वाईएक्स स्रोत फ़ाइलों का उपयोग करके संकलित वाईएक्स-जेनरेट की गई एमएसआई फाइलें एक-दो के लिए अलग हो सकती हैं:

    • एक ही वाईएक्स स्रोत फ़ाइल को विभिन्न compiler और linker सेटिंग्स के साथ भी संकलित किया जा सकता है, और यह कई अलग-अलग तरीकों से उत्पन्न एमएसआई फ़ाइल को प्रभावित कर सकता है। सभी स्विच देखने के लिए, candle.exe डाउनलोड करें और इंस्टॉल करें और बस कमांड प्रॉम्प्ट और हिट एंटर में candle.exe या light.exe लिखें।

    • पैकेज GUID और उत्पाद GUID जैसे कुछ फ़ील्ड को wxs फ़ाइल में ऑटो-जनरेट करने के लिए सेट किया जा सकता है। परिणामी, उत्पन्न MSI फ़ाइल में संबंधित क्षेत्र स्पष्ट रूप से इस मामले में हर निर्माण के लिए अलग होगा।

      • मेरे पास इस बात की पूरी सूची नहीं है कि इस बिंदु पर फ़ील्ड्स को ऑटो-जेनरेट करने के लिए क्या सेट किया जा सकता है (यदि आप जानते हैं, शायद एडिट को हिट करें और इसे सीटू में संशोधित करें)।

      • उल्लिखित ऑटो-जेनरेट किए गए फ़ील्ड हार्ड-कोडेड भी हो सकते हैं (जो पैकेज GUID के लिए अच्छा नहीं है, लेकिन यह एक और, लंबी कहानी है - बस यह जान लें कि यदि आपको दो MSI फाइलें मिलती हैं जो एक ही पैकेज GUID के साथ द्विआधारी भिन्न हैं, तो) आप गंभीर संकट में हैं - यदि वे जंगली में हैं - विंडोज इंस्टॉलर उन्हें परिभाषा के अनुसार एक ही फ़ाइल के रूप में मानेंगे)। पैकेज कोड हमेशा ऑटो-जनरेट होने चाहिए। विषयांतर।

    • MSI फाइलें अपने आप में स्पष्ट रूप से अलग-अलग फ़ाइल तिथि की जानकारी अलग-अलग संकलित की गई हैं - केवल स्पष्ट बताने के लिए।

और एक विशेष नोट हाथ में विषय के लिए कुछ हद तक असंबंधित है, लेकिन फिर भी महत्वपूर्ण है: आप dark.exe के बर्न फ़ीचर के साथ संकलित निष्पादक निष्पादनयोग्य के लिए dark.exe का उपयोग कर सकते हैं। यह वाईएक्स का बूटस्ट्रैपर सुविधा है जिसका उपयोग एक या एक से अधिक MSI और / या EXE फ़ाइलों को क्रम में स्थापित करने के लिए किया जाता है - एक के बाद एक। ये बूटस्ट्रैप EXE फाइलें हैं और आप इन्हें अपने घटक MSI और / या EXE फाइलों में समाप्‍त कर सकते हैं:

dark.exe -x outputfolder setup.exe

बस कमांड प्रॉम्प्ट खोलें, सीडी उस फ़ोल्डर में जहां setup.exe रहता है। फिर उपरोक्त कमांड निर्दिष्ट करें। ठोस नमूना: dark.exe -x outputfolder MySetup.exe । आउटपुट फ़ोल्डर में उप-फ़ोल्डर की एक जोड़ी होगी जिसमें एक्सट्रेक्ट किए गए MSI और EXE फाइल और बर्न जीयूआई के लिए रिसोर्स फाइल और रिसोर्स फाइल दोनों होंगे। किसी MSI फाइल को तब तक डिस्क्लेमर किया जा सकता है जैसा कि ऊपर वर्णित एक वाईएक्स सोर्स फाइल (wxs) का उत्पादन करने के लिए है।

5. InstEd (free third party tool - with plus version available)

किसी कारण से मैंने इस उपकरण का सक्रिय रूप से उपयोग नहीं किया है, लेकिन कई बार इसका परीक्षण किया है। यह फिर से परीक्षण करना यह दो MSI फ़ाइलों की तुलना करने का काम करता है, भले ही एक अजीब मेनू विकल्प से (जिससे मुझे लगा कि यह सुविधा पहले काम नहीं करती थी)।

  • एक MSI खोलें, फिर Transform => Compare Against... और जिस MSI की आप तुलना करना चाहते हैं उसे ब्राउज़ करें।
  • तुलना ठीक लगती है, और मैं देख रहा हूं कि सारांश स्ट्रीम में परिवर्तन हैं - उदाहरण के लिए - लेकिन अंतर यह नहीं दिखाता है कि क्या अलग है (जब तक कि मैं इसे नहीं देखता)।
  • सारांश स्ट्रीम में परिवर्तन देखने के लिए, दोनों फ़ाइलों को अलग-अलग InstEd इंस्टेंस में खोलें और Tables => Summary Info... दोनों उदाहरणों में जाएं। अब संपत्ति शीट में जानकारी की तुलना करें। वैकल्पिक रूप से ऊपर सूचीबद्ध widiffdb.vbs स्क्रिप्ट का उपयोग करें।

6. Other Tools... (COM-structured storage file viewers)

इसमें कोई संदेह नहीं है कि COM-संरचित भंडारण फ़ाइलों को देखने में सक्षम कई अन्य उपकरण हैं, लेकिन मुझे लगता है कि उपरोक्त विकल्पों को अधिकांश उपयोगकर्ताओं के लिए पर्याप्त होना चाहिए। मैं फिर से MSI टूल की installsite.org सूची में एक लिंक जोड़ूंगा

7. Advanced Installer (commercial tool with some free features)

यह वाणिज्यिक उपकरण एक दर्शक के रूप में कार्य करने में सक्षम होगा और पूर्ण लाइसेंस के साथ चलने के बिना भी MSI फ़ाइलों पर कुछ बुनियादी संचालन की अनुमति देगा। अच्छा बिट यह है कि आपको कच्ची तालिकाओं का उपयोग करने की आवश्यकता नहीं है, लेकिन MSI में विभिन्न चीजों को "हॉटफ़िक्स" करने के लिए बहुत अच्छे उपयोगकर्ता इंटरफ़ेस का उपयोग कर सकते हैं। उदाहरण के लिए विभिन्न अपग्रेड पैरामीटर (जारी रखें या असफल रहें जब प्रमुख अपग्रेड अनइंस्टॉल विफल हों, आदि ...)।

तालिका संपादक दृश्य (सीधे तालिका दृश्य) में किए गए परिवर्तन अन्य "विज़ार्ड दृश्य" में दिखाई नहीं देंगे। इसका कारण यहां बताया गया है

लिंक