WIX - переименовать ярлык в MSP

У меня нет такого опыта работы с WiX, и у меня возникла проблема при переименовании ярлыка во время обновления через MSP. В моем предыдущем MSI я создал ярлык на рабочем столе, используя следующие

<DirectoryRef Id="TARGETDIR">
  <Directory Id="DesktopFolder" Name="Desktop">
    <Component Id="MyShortcut" Guid="38EF1A86-5D1B-4D78-AD66-DD1AA6635A9B" Win64="$(var.Variables_Win64)" MultiInstance="no">
     <Shortcut Id="MyShortcut"
                  Directory="DesktopFolder"
                  Icon="MyIcon"
                  Name="My Application"
                  Description="Runs my application"
                  Target="[URL]" />
      <RemoveFolder Id='DesktopFolder' On='uninstall'/>
    </Component>
  </Directory>
</DirectoryRef> 

В моем MSP я хочу переименовать ярлык как таковой

<DirectoryRef Id="TARGETDIR">
  <Directory Id="DesktopFolder" Name="Desktop">
    <Component Id="MyShortcut" Guid="38EF1A86-5D1B-4D78-AD66-DD1AA6635A9B" Win64="$(var.Variables_Win64)" MultiInstance="no">
     <Shortcut Id="MyShortcut"
                  Directory="DesktopFolder"
                  Icon="MyIcon"
                  Name="My New Application"
                  Description="Runs my new application"
                  Target="[URL]" />
      <RemoveFolder Id='DesktopFolder' On='uninstall'/>
    </Component>
  </Directory>
</DirectoryRef>

Когда я запускаю обновление, я получаю новый ярлык на рабочем столе, а также устаревший ярлык. Я понимаю, почему это происходит из этого поста, почему два ярлыка после крупного обновления (миграции)? но я не уверен, как мне обойти это поведение и либо обновить исходное имя ярлыка, либо вместо него удалить потерянное. Я не могу построить MSI, это должен быть MSP, поэтому любой совет будет приветствоваться.

Заранее спасибо;-)

1 ответ

Похоже, что решение добавляется в RemoveFile, но с полным именем, включая расширение для ярлыка. Я сначала попробовал этот подход перед публикацией, но не указал.lnk на имя, поэтому он не работал.

<DirectoryRef Id="TARGETDIR">
  <Directory Id="DesktopFolder" Name="Desktop">
    <Component Id="MyShortcut" Guid="38EF1A86-5D1B-4D78-AD66-DD1AA6635A9B"
               Win64="$(var.Variables_Win64)" MultiInstance="no">
     <Shortcut Id="MyShortcut"
                  Directory="DesktopFolder"
                  Icon="MyIcon"
                  Name="My New Application"
                  Description="Runs my new application"
                  Target="[URL]" />
      <RemoveFolder Id='DesktopFolder' On='uninstall'/>
      <RemoveFile Id='LegacyShortcut ' Name='My Application.lnk' On='install'/>
    </Component>
   </Directory>
</DirectoryRef>
Другие вопросы по тегам