Как сохранить ярлык панели задач во время обновления? - PullRequest
0 голосов
/ 07 декабря 2018

У меня следующая ситуация.

Мой продукт устанавливает двоичные файлы внутри 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 голосов
/ 10 декабря 2018

Я нашел ответ здесь: https://stackoverflow.com/a/33402698/98491

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

Это предотвращает удаление ярлыков во время обновления.

Как описано в комментариях, недостатком является то, что после удаления, TaskBarShortCut остается, но это то, что пользователь может ожидать.Необходимость воссоздавать закрепленный ярлык на панели задач каждый раз, когда он обновляет программное обеспечение, не является.

...