Wix правильное создание ярлыка рабочего стола

есть два ответа на создать ярлык на рабочий стол с помощью WiX

оба эти ответа не имеют никакого реального объяснения того, что происходит. В чем разница между этими двумя методами создания ярлыков? Первый метод соответствует WiX-создать ярлык документация.

второй метод имеет MergeRedirectFolder который я не могу найти никакой документации, и я не понимаю, почему второй пример не требует параметр реестра, так как в соответствии с документацией WiX, параметр реестра:

требуется, так как ярлык не может служить в качестве ключевого пути для компонента при установке не объявленных ярлыков для текущих пользователей.

означает ли это, что второй метод является объявленным ярлыком? Или это ответ, который предполагает, что пользователь устанавливает на машину? Или я потерялся в соусе? (Вполне возможно-второй день пытается использовать WiX, так как Microsoft заставила меня по этому пути.)

первый:

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="DesktopFolder" Name="Desktop">
    <Component Id="ApplicationShortcutDesktop" Guid="*">
      <Shortcut Id="ApplicationDesktopShortcut"
         Name="Text under your icon"
         Description="Comment field in your shortcut"
         Target="[MYAPPDIRPROPERTY]MyApp.exe"
         WorkingDirectory="MYAPPDIRPROPERTY"/>
      <RemoveFolder Id="DesktopFolder" On="uninstall"/>
      <RegistryValue
        Root="HKCU"
        Key="Software/MyAppName"
        Name="installed"
        Type="integer"
        Value="1"
        KeyPath="yes"/>
    </Component>
  </Directory>
    <Directory Id="ProgramFilesFolder" Name="PFiles">
      <Directory Id="MyCompany" Name="MyCompany">
        <Directory Id="MYAPPDIRPROPERTY" Name="MyAppName">
      </Directory>
    </Directory>
  </Directory>

второй:

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="DesktopFolder" SourceName="Desktop" />
  <Directory Id="MergeRedirectFolder">
    <Component Id="MyExeComponent" Guid="*">
      <File Id="MyExeFile" Source="$(var.ExeSourcePath)" KeyPath="yes">
        <Shortcut
          Id="DesktopShortcut"
          Directory="DesktopFolder"
          Name="$(var.ShortcutName)"
          WorkingDirectory="MergeRedirectFolder" />
      </File>
    </Component>
  </Directory>
</Directory>

1 ответов


предостережение: в комментарии Doc, так как ни один пример не указал Advertise атрибут, также не следует создавать объявленный ярлык. Я не помню, что заставило меня написать ответ ниже; похоже, что это неверно. Я оставлю ответ в тактичности, если за ним есть какая-то тонкая правда.


первый пример создает объявленный ярлык; второй создает не объявленный ярлык. Описаны правила для двух типов ярлыков с Ярлык Столе цель.

не объявленный ярлык является стандартным ярлыком Windows, как вы бы создать с помощью Проводника Windows. Объявленный ярлык повышает отказоустойчивость, проверяя, что все компоненты в функции установлены при активации ярлыка.