2017-05-07 70 views
0

使用Wix 3.11Visual Studio 2017。我的安裝包內置兩次,條件標誌修改UpgradeCode以允許可以共存的兩個品牌(產品ID是自動生成的)。因此,我希望能夠安裝和/或卸載Brand ABrand B而不會導致這兩者中的任何一個出現問題。他們被認爲是兩種不同的裝置。不過,我想保持我的Wix代碼清潔和簡單。並排安裝中的組件不能正確卸載

此方案的工作原理:

  1. 裝品牌A.
  2. 卸載品牌A.

這種情況不起作用

  1. 裝品牌A.
  2. I nstall品牌B.
  3. 卸載品牌A.條目「A」從控制面板中消失,但文件保持不變。

我可以看到註冊表中的重要值仍然存在。

<DirectoryRef Id="INSTALLLOCATION"> 
    <Component Id="MyExecutables" Guid="12345678-ABCD-1234-5678-111122223333" Win64="$(var.Win64)"> 
     <RegistryValue Root="HKCU" Key="Software\[Manufacturer]\$(var.Brand)\Uninstall" Name="InstalledSoftware" Value="1" Type="integer" KeyPath="yes" /> 
    </Component> 
</DirectoryRef> 

正如你所看到的,Key是不同品牌的不同,但Guid是一樣的!我相信這與它有關。也許我需要不同品牌的不同指導?

問:解決此問題的最佳方法是什麼?

回答

1

Wix要求每個組件都有自己獨特的GUID,即使您有多個組件完成相同的事情。所以確保你的組件不共享相同的GUID。您可以輕鬆獲取GUID的here