2010-07-15 5 views
7

मैं NSIS के RmDir विधि के लिए दस्तावेज में इस चेतावनी पर ध्यान:

चेतावनी: अनइंस्टॉलर में RMDIR/आर $ INSTDIR का उपयोग कर सुरक्षित नहीं है। हालांकि यह संभावना नहीं है, उपयोगकर्ता करने के लिए चयन हो सकता है प्रोग्राम फ़ाइलें फ़ोल्डर को स्थापित करने और इसलिए इस आदेश पूरे प्रोग्राम फ़ाइलें फ़ोल्डर का सफाया, अन्य कार्यक्रमों अनइंस्टॉलर साथ लेना देना नहीं है कि सहित जाएगा।

यह मुझे डराता है, क्योंकि अब तक मैंने इस संभावना को नहीं माना था और मेरी स्क्रिप्ट में यह सटीक रेखा थी। लेकिन जब मैंने परीक्षण किया कि यह मेरे प्रोग्राम को पूर्व-मौजूदा फ़ाइलों वाले पूर्व-मौजूदा स्थान पर स्थापित करके होगा और उसके बाद RmDir /r /REBOOTOK $INSTDIR के साथ मेरा अनइंस्टॉलर चलाएगा, तो मौजूदा फ़ाइलों को बिना छोड़े छोड़े गए थे।

क्या यह पुरानी चेतावनी है? मैं एनएसआईएस बनाम 2.46 का उपयोग कर रहा हूं।

धन्यवाद

उत्तर

6

RMDIR/आर अगर यह कर सकते हैं, तो यह "असुरक्षित" है पूरी निर्देशिका वृक्ष को नष्ट करेगा। तुम्हारे बिना/आर (पुनरावर्ती) झंडा एक निर्देशिका पर

+0

क्या मैं $ INSTDIR पर एक उप फ़ोल्डर बनाने के लिए और वहाँ में अपने सभी कार्यक्रम डेटा डाल दिया, रिकर्सिवली कि उप निर्देशिका को हटाने के बाद मूल $ INSTDIR पर एक नियमित रूप से RMDIR करते थे तो क्या होगा? – Cuga

+0

अच्छा, यह मदद करेगा, लेकिन मुद्दा अभी भी वहां हो सकता है। आइए कहें कि आपके सबफ़ोल्डर को system32 नाम दिया गया है और उपयोगकर्ता% windir% पर स्थापित करता है, तो आप% windir% \ system32 – Anders

+0

हटा देंगे, मुझे लगता है कि मैं इसे INSTDIR नाम के अंदर एक उपदिर बनाने के साथ जोखिम दूंगा: ... I लगता है कि यह काम करना चाहिए। – Cuga

2

RMDIR स्थापित निर्देशिका निकाल देंगे अगर यह रिक्त है एक तरह से केवल फाइलों को डिलीट करना के लिए http://nsis.sourceforge.net/Uninstall_only_installed_files देखें। किसी बिंदु पर उन्होंने इस सुविधा को जोड़ा है, सुनिश्चित नहीं है कि कब।

NSIS Scripting Reference - RMDir

संबंधित मुद्दे