2010-06-27 112 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仍然会对其进行跟踪),所以它不可卸载。