2010-06-27 91 views
9
<RegistryKey Id="MyServerRegInstallDir" Root="HKLM" Key="Software\MyApp\Server" Action="create"> 
    <RegistryValue Name="InstallDir" Type="string" Value="[INSTALLDIR]" /> 
    <RegistryValue Name="DataDirectory" Type="string" Value="[MYAPPDATADIR]" /> 
    </RegistryKey> 

子菜單InstallDir和DataDirectory在卸載時被刪除。我如何防止它?如何防止Wix在卸載時刪除註冊表項?

理想的行動=「創造」必須做到這一點。

+0

將程序刪除後將數據留在註冊表中的目的是什麼? – kiamlaluno 2010-06-27 01:51:30

+1

當應用程序再次安裝時,它可以恢復。 – Rohit 2010-06-27 02:06:24

+2

我給了你一個指向下面可能有用的東西的指針。但我同意kiamlaluno,卸載程序應該盡最大努力使機器在卸載時處於乾淨狀態。因爲如果您的設置損壞並導致應用程序進入不良狀態,那麼傳統的「卸載然後重新安裝」解決方案將無法工作。 – selbie 2010-06-27 02:12:27

回答

12

在父組件上設置Permanent =「yes」屬性。

Permanent YesNoType  

如果該屬性被設置爲「是」,則安裝程序不會在卸載期間刪除的組件。安裝程序在Windows Installer註冊表設置中註冊組件的額外系統客戶端(基本上這意味着至少有一個產品始終引用此組件)。請注意,此選項與不設置guid的行爲不同,因爲雖然該組件是永久性的,但它仍然可以修補(因爲Windows Installer仍然會對其進行跟蹤),所以它不可卸載。

相關問題