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>