Software\$(var.Manufacturer)
我的公司有很多产品,如果我们的客户安装了多个产品(很可能),我们希望创建一个包含我们所有产品的注册表项,然后我想为我们的每个产品创建一个辅助密钥,这些产品将被删除卸载但主要的没有。我试图像下面那样实现这一点,但是我的主键被删除了,所以我的所有其他产品也从注册表中删除了。我知道这是微不足道的,但我找不到答案。
<DirectoryRef Id="TARGETDIR">
<Component Id="Registry" Guid="*" MultiInstance="yes" Permanent="yes">
<RegistryKey Root="HKLM" Key="Software\$(var.Manufacturer)" ForceCreateOnInstall="yes">
<RegistryValue Type="string" Name="Default" Value="true" KeyPath="yes"/>
</RegistryKey>
</Component>
</DirectoryRef>
<DirectoryRef Id="TARGETDIR">
<Component Id="RegistryEntries" Guid="*" MultiInstance="yes" >
<RegistryKey Root="HKLM" Key="Software\$(var.Manufacturer)\[PRODUCTNAME]" Action="createAndRemoveOnUninstall">
<RegistryValue Type="string" Name="Installed" Value="true" KeyPath="yes"/>
<RegistryValue Type="string" Name="ProductName" Value="[PRODUCTNAME]"/>
</RegistryKey>
</Component>
</DirectoryRef>
编辑:我已经让我的注册表项继续使用以下代码。但是,他们只是全部删除,所有产品都被删除,而不是根据需要一一删除。
<DirectoryRef Id="TARGETDIR">
<Component Id="Registry" Guid="FF75CA48-27DE-430E-B78F-A1DC9468D699" Permanent="yes" Shared="yes" Win64="$(var.Win64)">
<RegistryKey Root="HKLM" Key="Software\$(var.Manufacturer)" ForceCreateOnInstall="yes">
<RegistryValue Type="string" Name="Default" Value="true" KeyPath="yes"/>
</RegistryKey>
</Component>
</DirectoryRef>
<DirectoryRef Id="TARGETDIR">
<Component Id="RegistryEntries" Guid="D94FA576-970F-4503-B6C6-BA6FBEF8A60A" Win64="$(var.Win64)" >
<RegistryKey Root="HKLM" Key="Software\$(var.Manufacturer)\[PRODUCTNAME]" ForceDeleteOnUninstall="yes">
<RegistryValue Type="string" Name="Installed" Value="true" KeyPath="yes"/>
<RegistryValue Type="string" Name="ProductName" Value="[PRODUCTNAME]"/>
</RegistryKey>
</Component>
</DirectoryRef>