如何在更新过程中保持任务栏快捷方式?

时间:2018-12-07 11:02:49

标签: wix windows-installer wix3.11

我有以下情况。

我的产品将二进制文件安装在c:\Program Files (x86)\MyCompany\MyApp\内,并将快捷方式安装在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\MyCompany下。

我使用以下示例创建了msi:https://helgeklein.com/blog/2014/09/real-world-example-wix-msi-application-installer/

我刚刚添加了以下代码

  <!-- ApplicationShortcut-->
  <Directory Id="ProgramMenuFolder">

    <Directory Id="ApplicationProgramsFolder" Name="!(loc.ManufacturerName)">

      <Component Id="ApplicationShortcut" Guid="F4B7EAFA-FF19-41B4-8267-3AEFC12235A7">
        <Shortcut Id="ApplicationStartMenuShortcut"
             Name="!(loc.ApplicationName)"
             Description="!(loc.ProductDescription)"
             Target="[INSTALLDIR]MyApp.exe"
             WorkingDirectory="INSTALLDIR"
    />
        <RemoveFolder Id="RemoveApplicationProgramsFolder" Directory="ApplicationProgramsFolder" On="uninstall"/>
        <RegistryValue Root="HKCU" Key="Software\!(loc.ManufacturerName)\!(loc.ApplicationName)" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
      </Component>

    </Directory>

  </Directory>

问题出在以下

  • 我首先安装了应用程序,它将安装快捷方式
  • 现在,我启动应用并选择Pin to taskbar, this will create a shortcut in C:\ Users \\ AppData \ Roaming \ Microsoft \ Internet Explorer \ Quick Launch \ User Pinned \ TaskBar`
  • 如果我重建msi并再次执行设置,则任务栏快捷方式将不再可用,因为C:\Users\<user>\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar中的快捷方式丢失了

是否可以在更新期间维护任务栏快捷方式?

1 个答案:

答案 0 :(得分:0)

我在这里找到了答案:https://stackoverflow.com/a/33402698/98491

<InstallExecuteSequence>
  <RemoveShortcuts>Installed AND NOT UPGRADINGPRODUCTCODE</RemoveShortcuts>
</InstallExecuteSequence>

这可以防止在更新过程中卸载快捷方式。

如评论中所述,缺点是卸载后仍保留TaskBarShortCut,但这是用户可能期望的。不必在每次更新软件时都重新创建固定的任务栏快捷方式。