2013-06-20 4 views
6

मैं नया संस्करण स्थापित करने से पहले बड़े अपग्रेड और मौजूदा उत्पाद को अनइंस्टॉल कर रहा हूं। लेकिन मैं मौजूदा कॉन्फ़िगरेशन फ़ाइल को बनाए रखना चाहता हूं।अनइंस्टॉल करने से पहले विस्थापित करें और अनइंस्टॉल करने के बाद पुनर्स्थापित करें

जैसा कि पहले के संस्करण में स्थायी = "हाँ" नहीं था, यह कॉन्फ़िगरेशन फ़ाइल को अनइंस्टॉलेशन पर हटा देता है।

और मैं ऐसा कुछ कैसे कर सकता हूं जैसे 'app.config' की एक प्रति अनइंस्टॉल करने से पहले 'app.config.bak' के रूप में। अनइंस्टॉल करने के बाद इसे 'app.config.bak' से 'app.config' पर वापस लाएं।

<DirectoryRef Id="INSTALLDIR"> 
    <Component Id="BackupConfigComponent" Guid="87368AF7-4BA2-4302-891A-B163ADDB7E9C"> 
    <CopyFile Id="BackupConfigFile" SourceDirectory="INSTALLFOLDER" SourceName="app.config" DestinationDirectory="INSTALLFOLDER" DestinationName="app.config.bak" /> 
    </Component> 
</DirectoryRef> 

<DirectoryRef Id="INSTALLDIR"> 
    <Component Id="RestoreConfigComponent" Guid="87368AF7-4BA2-4302-891A-B163ADDB7E9C"> 
    <CopyFile Id="RestoreConfigFile" SourceDirectory="INSTALLFOLDER" SourceName="app.config.bak" DestinationDirectory="INSTALLFOLDER" DestinationName="app.config" /> 
    </Component> 
</DirectoryRef> 


<InstallExecuteSequence> 
    <Custom Action="BackupConfigFile" After="InstallInitialize" /> 
    <RemoveExistingProducts After="InstallInitialize" /> 
    <Custom Action="RestoreConfigFile" After="InstallInitialize" /> 
</InstallExecuteSequence> 

धन्यवाद

उत्तर

3

आपको बस इतना करना है बदल <Custom Action="RestoreConfigFile" After="InstallInitialize" /><Custom Action="RestoreConfigFile" After="RemoveExistingProducts " />

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

<Custom Action="BackupConfigFile" After="InstallInitialize" /> 
<RemoveExistingProducts After="BackupConfigFile" /> 
<Custom Action="RestoreConfigFile" After="RemoveExistingProducts " /> 

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

+0

यह कहता है कि त्रुटि कस्टम/@ विशेषता के मूल्य के बाद, 'RemoveExistingProducts', कानूनी पहचानकर्ता नहीं है। पहचानकर्ताओं में ASCII वर्ण ए-जेड, ए-जेड, अंक, अंडरस्कोर (_), या अवधि (।) हो सकते हैं। प्रत्येक पहचानकर्ता को या तो एक अक्षर या अंडरस्कोर से शुरू होना चाहिए। –

+0

ठीक है यह अंतरिक्ष के कारण था, लेकिन अब यह कहता है, अनुभाग 'उत्पाद: *' में 'कस्टमएक्शन: बैकअप कोंफिफ़फ़ाइल' प्रतीक के अनसुलझा संदर्भ। –

+1

क्या आपने बैकअप कॉनफिगफ़ाइल नाम के साथ कस्टम एक्शन बनाया था? यह मानक कस्टम एक्शन नहीं है जो विंडोज इंस्टालर आपके लिए प्रदान करेगा। – Adkins

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