बर्फ काबू पाने के लिए आप प्रति उपयोगकर्ता रजिस्ट्री बढ़ना चाहिए घटकों को अलग करने और उस घटक के लिए मुख्यपथ के रुप में कुछ रजिस्ट्री प्रविष्टि का उपयोग करने के लिए, अर्थात्:
<Component Id='PerUserRegistry' Guid='*'>
<RegistryValue Id="PerUserRegistry_KeyPAth" KeyPath="yes" Root="HKCU" Key="Software\[Manufacturer]\[ProductName]\[ProductCode]\PerUserRegistry" Name="[PackageCode]" Value="[ProductVersion]" Type="string" />
<!--Other Per-user registry goes here-->
</Component>
मैं पूरी तरह से क्रिस्टोफर के साथ सहमत: यह आम बात प्रति छोड़ने के लिए है अनइंस्टॉल करने पर उपयोगकर्ता डेटा, लेकिन अगर हटाने की आवश्यकता है, तो सक्रिय सेटअप एकमात्र असली विकल्प है।
<Component Id='ActiveSetup' Guid='*'>
<RegistryValue Id="ActiveSetup00" Root="HKLM" KeyPath="yes" Key="SOFTWARE\SOFTWARE\Microsoft\Active Setup\Installed Components\[PackageCode]\" Name="StubPath" Value="msiexec /fup [ProductCode] /qb-!" Type="string" />
<RegistryValue Id="ActiveSetup01" Root="HKLM" Key="SOFTWARE\SOFTWARE\Microsoft\Active Setup\Installed Components\[PackageCode]\" Value="[ProductName] [ProductVerion] Configuration" Type="string" />
</Component>
<Component Id='PerUserRegistryCleanup' Guid='*'>
<RegistryValue Id="PerUserRegistry_KeyPath" Root="HKCU" KeyPath="yes" Key="SOFTWARE\SOFTWARE\Microsoft\Active Setup\Installed Components\[PackageCode]\" Name="StubPath" Value="msiexec /fup [ProductCode] /qb-!" Type="string" />
<RemoveRegistryKey Id='PerUserRegCleanup' Root='HKCU' Action='removeOnInstall' Key='Key\To\Be\Removed'/>
</Component>
नोट: [PackageCode] उपयोग
सबसे पहले मैं आप पर उन्हें हटाने के लिए स्थापित करें या स्थापना रद्द करें, तो आप सिर्फ इस WiX कोड के साथ RemoveRegirty प्रवेश और सक्रिय सेटअप, यानी जोड़ने की जरूरत के बजाय फिर से स्थापित प्रस्ताव ActiveSetup में बहुत अनुशंसा की जाती है, इसलिए एमएसआई पैकेज के प्रत्येक नए संस्करण (निर्माण) के साथ आप अलग प्रविष्टि जोड़ते हैं (मेरा अंतिम नोट भी देखें)। मैंने प्रयोजन पर कुंजी-पथ के रूप में प्रति-उपयोगकर्ता सक्रिय सेटअप रजिस्ट्री का उपयोग किया, इसलिए आप इसे वर्तमान उपयोगकर्ता के लिए दो बार नहीं चलाते हैं।
अनइंस्टॉल करने के बाद उन्हें हटाने के लिए, अब, उम्मीद है कि आपको पूरी कुंजी को हटाने की आवश्यकता है, न केवल कुछ मान। किसी भी मामले में, मैं अनइंस्टॉल करते समय सक्रिय सेटअप के लिए रजिस्ट्री प्रविष्टि जोड़ने के लिए कस्टम कार्रवाई करूँगा (या यदि ऐसी कई कुंजियां/मान हैं, तो उन लोगों के साथ सीएमडी फ़ाइल बनाएं और तैनात करें और इसे हटाने के लिए इसे निकालें, RemoveFiles एक्शन से पहले, सभी को जोड़ने के लिए उनमें से रजिस्ट्री के लिए)।
नोट: कि मैं स्थापित होने के दौरान इस रजिस्ट्री को हटाने में दृढ़ता से अनुशंसा करता हूं, या सॉफ़्टवेयर अभी स्थापित होने पर आप प्रति उपयोगकर्ता मानों को हटा सकते हैं।
<CustomAction Id="CA_UninstallRegistryCleanUp" Directory="SystemFolder" ExeCommand="REG.exe ADD "HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\MySoftName_CleanUp" /v StubPath /d "reg add ^"HKCU\Key\To\Be\Removed^" /va /f" /f" Return="ignore" />
<InstallExecuteSequence>
<Custom Action='CA_UninstallRegistryCleanUp' After='RemoveRegistryValues'>REMOVE~="ALL"</Custom>
</InstallExecuteSequence>
<Component Id='RegCleanup_Remover' Guid='*'>
<RegistryValue Id="PerUserRegistry_KeyPAth" Root="HKLM" KeyPath="yes" Key="SOFTWARE\[Manufacturer]\[ProductName]\[ProductCode]\" Name="DummyKey" Value="[ProductVersion]" Type="string" />
<RemoveRegistryKey Id='RegCleanup_Remover' Root='HKLM' Action='removeOnInstall' Key='SOFTWARE\Microsoft\Active Setup\Installed Components\MySoftName_CleanUp'/>
</Component>
अंतिम नोट: बस दो यह सब सक्रिय सेटअप सामान के साथ छोटे मुद्दों:
तो यहाँ यह सब के लिए WiX कोड है विंडोज टर्मिनल सर्वर पर सावधान रहना होगा; और एक बार सक्रिय सेटअप एक उपयोगकर्ता के लिए वर्तमान .MSI के लिए चलाया गया था, यदि आप उसी पैकेज को पुनर्स्थापित करने का निर्णय लेते हैं, तो यह फिर से नहीं चलाएगा, जब तक कि आप अपना पैकेजकॉन्डे बदल नहीं सकते या ActiveSetup रजिस्ट्री कुंजी के तहत संस्करण नहीं बढ़ाते। ये किसी अन्य दिन के लिए विषय हैं, अगर उन्हें स्पष्ट करने की आवश्यकता हो तो मुझे बताएं।
और उपरोक्त सभी घटक को कुछ फ़ीचर में जोड़ना न भूलें।
रजिस्ट्री कुंजी एक्सप्लोरर के संदर्भ मेनू को विस्तारित करती है। इसे हटाने के लिए, परिणाम मेनू छोड़ दिया जाएगा। –
प्रति उपयोगकर्ता के बजाय प्रति उपयोगकर्ता क्यों बढ़ाया गया था? –
हैक –