2013-02-08 50 views
5

我們使用WiX進行Windows安裝。重大升級(遷移)後爲什麼兩個快捷方式?

我們直到最近才支持重大升級,沒有任何問題。

我被要求在我們更改產品名稱時更改快捷方式名稱。所以我改變了它。

重大升級後,顯示2個快捷鍵而不是1個。

美是我們安裝在同一臺機器上遷移的所有功能,它似乎正確刪除了舊的快捷方式。

但是,當我們在(網絡服務器)機器上安裝其中一項功能(網絡服務器功能)時,會出現2個快捷方式。

我驗證了快捷組件也被添加到web服務器功能中。

<DirectoryRef Id="ProgramMenu.OrganizationName.MyProj"> 
      <Component Id="CoreInterface_Shortcuts" Guid="3e3c3733-9b53-42cf-a641-b5b3e3da88cf"> 
      <Shortcut Id="MyOrgMESUrl" Name="Home" Description="MyOrg Intuition URL" Target="[INSTALLDIR]MyOrg MES.url" WorkingDirectory="INSTALLDIR"/> 
      <RemoveFolder Id="RemProgramMenu.MyOrg" Directory="ProgramMenu.MyOrg" On="uninstall"/> 
      <RemoveFolder Id="RemProgramMenu.MyOrg.MyProj" Directory="ProgramMenu.MyOrg.MyProj" On="uninstall"/> 
      <RegistryValue Root="HKCU" Key="Software\MyOrg\MyProj" Name="installed" Type="integer" Value="1" KeyPath="yes"/> 
      </Component> 
     </DirectoryRef> 

<Feature Id="WEBSERVER" Title="WEBSERVER Customized Component(s)" Level="1"> 
     <ComponentRef Id="CoreInterface_Shortcuts"/> 
</Feature> 

爲什麼它保持舊的快捷方式(如果舊的快捷方式被點擊它不工作)?如何避免這種情況?

回答

7

原因很簡單。 您沒有遵循最佳做法。

當您更改名稱時,必須更改組件guid。

見文檔:

還沒有被證明測試是與組件的先前版本兼容的任何變化。在這種情況下,您還必須更改組件中每個資源的名稱或目標位置。

更改組件中任何文件,註冊表項,快捷方式或其他資源的名稱或目標位置。在這種情況下,您還必須更改組件中每個資源的名稱或目標位置。

添加或刪除組件中的任何文件,註冊表項,快捷方式或其他資源。在這種情況下,您還必須更改組件中每個資源的名稱或目標位置。

Changing the Component Code (Windows)

一個更新只重新安裝/覆蓋文件。源文件和名稱取自新的msi。當您重命名文件/快捷方式時,對舊文件名的引用會丟失。 這就是爲什麼舊鏈接未被修改且未被安裝程序覆蓋的原因。

相關問題