मेरा सॉफ़्टवेयर dll पैच विंडोज़ 10 पर अपडेट नहीं किया गया है


-1

मेरे पास विंडोज 10 (dll, .exe, .msi) पर एक मौजूदा फाइल है जिसे मैं कुछ पैच भेजकर अपडेट करने की कोशिश कर रहा हूं। लेकिन समस्या अद्यतन के दौरान है यदि किसी भी फ़ाइल का उपयोग किया जा रहा है, और मैं उस फ़ाइल को नई अद्यतन फ़ाइल के साथ बदलकर अद्यतन करने का प्रयास कर रहा हूं, तो विंडोज़ मौजूदा फ़ाइल के लिए एक डिलीट फ़ाइल पॉपअप को प्रेरित कर रही है। यदि हम कहते हैं कि हाँ यह दिखा रहा है के रूप में सफलतापूर्वक हटा दिया गया है, लेकिन जब तक अंतिम उपयोगकर्ता फ़ाइल जारी नहीं करता है तब तक इसे हटाया नहीं जाता है। उस स्थान पर नई अपडेट की गई फ़ाइल को प्रतिस्थापित नहीं किया जाता है।

संपादित करें: पोस्टर ने एक टिप्पणी में संकेत दिया है कि उसकी समस्या पंजीकृत DLL से संबंधित है।


"मैं कुछ पैच भेजकर अपडेट करने की कोशिश कर रहा हूं" क्या पैच, कृपया समझाएं।
Moab

आप इन अद्यतनों को वास्तव में कैसे आगे बढ़ा रहे हैं?
Ramhound

मेरे सॉफ़्टवेयर के पैच - क्लाइंट के लिए .exes का गुच्छा
sams

जवाबों:


2

मैं एक उपयोग DLL में कैसे प्रतिस्थापित करूँ?

डायनेमिक-लिंक लाइब्रेरी अपडेट

कभी-कभी एक DLL को नए संस्करण के साथ बदलना आवश्यक है।   DLL की जगह लेने से पहले, यह सुनिश्चित करने के लिए एक संस्करण की जाँच करें कि आप हैं   पुराने संस्करण को नए संस्करण के साथ बदलना। यह संभव है कि   उपयोग में आने वाले DLL को बदलें। वह विधि जो आप DLL को बदलने के लिए उपयोग करते हैं   उपयोग में हैं आप जिस ऑपरेटिंग सिस्टम का उपयोग कर रहे हैं उस पर निर्भर करता है। विंडोज पर   XP और बाद में, अनुप्रयोगों का उपयोग करना चाहिए पृथक अनुप्रयोग और   अगल-बगल की सभाएँ

यदि आप प्रदर्शन करते हैं तो कंप्यूटर को पुनरारंभ करना आवश्यक नहीं है   पीछे पीछे जाना:

  • उपयोग MoveFileEx बदला जा रहा DLL का नाम बदलने के लिए कार्य करते हैं। निर्दिष्ट नहीं करते MOVEFILE_COPY_ALLOWED, और सुनिश्चित करें कि नाम बदला गया फ़ाइल   उसी वॉल्यूम पर है जिसमें मूल फ़ाइल है। आप भी कर सकते हैं   बस एक ही निर्देशिका में फ़ाइल को अलग नाम देकर नाम बदलें   विस्तार।
  • नई DLL को उस निर्देशिका में कॉपी करें, जिसमें बदला हुआ DLL है। सभी एप्लिकेशन अब नए DLL का उपयोग करेंगे।
  • उपयोग MoveFileEx साथ में MOVEFILE_DELAY_UNTIL_REBOOT नामांकित DLL को हटाने के लिए।

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

स्रोत डायनेमिक-लिंक लाइब्रेरी अपडेट (विंडोज)


Windows पुनरारंभ पर इन-उपयोग फ़ाइलों को कैसे बदलें

यह आलेख एक अन्य विधि का वर्णन करता है जिसका उपयोग आप फ़ाइलों को बदलने के लिए कर सकते हैं   विंडोज द्वारा उपयोग में हैं। इस विधि का उपयोग रजिस्ट्री को बदलने के लिए करता है   Windows द्वारा फ़ाइल तक पहुँचने से पहले, स्टार्टअप पर फ़ाइल।

निम्न चरण प्रदर्शित करते हैं कि Win32k.sys फ़ाइल को कैसे बदला जाए    %SystemRoot%\System32 Win32k.sys फ़ाइल के साथ फ़ोल्डर में स्थित है   C: \ Temp फ़ोल्डर। आप इस विधि के रूपांतरों का उपयोग कर सकते हैं   किसी भी फ़ाइल अगर आपके विंडोज की स्थापना बूट करने योग्य है।

  1. रजिस्ट्री संपादक (Regedt32.exe) को प्रारंभ करें।
  2. Windows रजिस्ट्री में निम्न कुंजी का पता लगाएँ:
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
  3. निम्नलिखित जानकारी का उपयोग करके एक नया मूल्य बनाएँ:
    • मान का नाम: PendingFileRenameOperations
    • डाटा प्रकार : REG_MULTI_SZ
    • मान डेटा: \ ?? \ c: \ temp \ win32k.sys! \ ?? \ c: \ winnt \ system32 \ win32k.sys
    • ध्यान दें कि मान डेटा दो अलग-अलग लाइनों पर टाइप किया जाता है।
  4. रजिस्ट्री संपादक से बाहर निकलें।
  5. कंप्यूटर को पुनरारंभ।

स्रोत विंडोज रीस्टार्ट में इन-यूज फाइलों को कैसे बदलें


यह पंजीकृत डीएल के लिए काम नहीं करता है।
harrymc

@harrymc तब उपयोगकर्ता को अपने प्रश्न को अपडेट करना चाहिए, जिसमें पंजीकृत DLL का कोई उल्लेख नहीं है।
DavidPostill

यह टिप्पणियों में है, लेकिन मैंने अब उसके लिए यह किया।
harrymc

1

DLL को बदलने का सही तरीका है:

  • DLL फ़ाइल का नाम बदलें
  • नई DLL फ़ाइल को सही नाम से संग्रहीत करें
  • जब यह उपयोग में नहीं रह जाता है तो नाम बदलकर फाइल डिलीट हो जाती है।

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

इसलिए आपको अपने पैच को इंस्टॉलर के रूप में वितरित करना चाहिए। उदाहरण के लिए आप मुफ्त का उपयोग कर सकते हैं इनो सेटअप । जब मैंने इसे अंतिम उपयोग किया था, तो आपको DLL की विशेषताओं को सेट करने की आवश्यकता थी पंजीकरण और पुनः पंजीकरण करने के लिए स्थापित किया जाना है। फिर कोई भी आवश्यक प्रोग्रामिंग के साथ प्रक्रिया स्वचालित होगी तुम्हारे पक्ष में।

यदि आप अपने पैच को इंस्टॉलर के रूप में वितरित नहीं कर सकते हैं, तो आपको इसे सेट करना चाहिए स्टार्टअप पर एक बार चलाने और रिबूट की आवश्यकता होती है। अधिक जानकारी के लिए लेख देखें जब आप Windows में बूट करते हैं तो केवल एक बार प्रोग्राम चलाएं , जो कुछ रजिस्ट्री काम की आवश्यकता है।


harrymc हम पंजीकृत dll के बारे में बात कर रहे हैं
sams

@sams आपने उल्लेख किया कि ये DLL पंजीकृत नहीं थे। वे केवल COM पुस्तकालयों के लिए वैसे भी लागू होते हैं।
Ramhound

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