पहले प्रश्न का उत्तर देने के लिए, आप तकनीकी रूप से फ़ाइल को जहाँ चाहें रख सकते हैं, हालाँकि आपको इसे स्वयं कोड करना होगा, क्योंकि फ़ाइल जिस स्थान पर जाती है, वह आपके दो उदाहरणों में से पहला है। ( यह कैसे करना है खुद से लिंक )
दूसरे प्रश्न के रूप में, यह इस बात पर निर्भर करता है कि आप आवेदन को कैसे लागू करते हैं। यदि आप .msi के माध्यम से तैनाती करते हैं, तो सेटअप प्रोजेक्ट के गुणों में दो हैश (कि msi से बनाया गया है), 'उन्नयन कोड' और 'उत्पाद कोड' हैं। ये निर्धारित करते हैं कि एमएसआई कैसे स्थापित किया जा सकता है, और यदि यह उसी एप्लिकेशन के किसी अन्य संस्करण के बगल में अपग्रेड, ओवरराइट करता है, या इंस्टॉल करता है।
उदाहरण के लिए, यदि आपके पास अपने सॉफ़्टवेयर के दो संस्करण हैं और उनके पास अलग-अलग 'अपग्रेड' कोड हैं, तो खिड़कियों के लिए वे सॉफ्टवेयर के पूरी तरह से अलग-अलग टुकड़े हैं, चाहे नाम कुछ भी हो। हालाँकि यदि 'अपग्रेड' कोड समान है, लेकिन 'उत्पाद' कोड अलग है, तो जब आप 2nd msi को स्थापित करने का प्रयास करेंगे तो यह आपसे पूछेगा कि क्या आप अपग्रेड करना चाहते हैं, उस समय मानों को कॉपी करने के लिए कौन सा समय चाहिए एक नए विन्यास में पुराना विन्यास। यदि दोनों मान समान हैं, और संस्करण संख्या परिवर्तित नहीं हुई है, तो नया कॉन्फ़िगरेशन पुराने कॉन्फ़िगरेशन के समान स्थान पर होगा, और इसे कुछ भी करने की आवश्यकता नहीं होगी। MSDN प्रलेखन
ClickOnce थोड़ा अलग है, क्योंकि इसका ClickOnce संस्करण # और URL पथ से अधिक आधारित है, हालाँकि मैंने पाया है कि जब तक आप उसी स्थान पर 'प्रकाशित' करते रहेंगे, तब तक एप्लिकेशन का नया संस्करण उपयोग करना जारी रखेगा मौजूदा विन्यास। ( कैसे ClickOnce अद्यतन संभालती है के लिए लिंक )
मुझे यह भी पता है कि कस्टम इंस्टॉल स्क्रिप्ट्स का उपयोग करके msi की स्थापना के दौरान मैन्युअल रूप से मर्ज करने का एक तरीका है, लेकिन मुझे यह करने के लिए सटीक चरण याद नहीं हैं ... ( वेब के साथ यह करने के लिए इस लिंक को देखें । config)