2013-02-08 65 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。当您重命名文件/快捷方式时,对旧文件名的引用会丢失。 这就是为什么旧链接未被修改且未被安装程序覆盖的原因。

相关问题