私の会社には多くの製品があり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>
編集:次のコードを使用したままにするためのレジストリキーを取得しました。ただし、すべての製品が削除されるのはすべて削除されるだけであり、必要に応じて1つずつ削除されるわけではありません。
<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>