2014-01-03 2 views
9

Есть два ответа на Create shortcut to desktop using WiXWiX Правильное создание ярлыка на рабочем столе

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

У второго метода есть 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> 
+0

Документация для WiX предлагает первый метод. http://wixtoolset.org/documentation/manual/v3/howtos/files_and_registry/create_start_menu_shortcut.html Я не знаю, если это скидки второй или нет. –

+0

@PeterRitchie Вот ссылка, которую я опубликовал в вопросе. Но да, я согласен, что в документации предлагается первый метод. И пришел к тому же пункту, что и ваше второе заявление. – teynon

+0

Я бы доверял документации над тем, что я прочитал в stackoverflow. –

ответ

4

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


Первый пример создает рекламируемый ярлык; второй создает не рекламируемый ярлык. Правила для двух типов ярлыков описаны с помощью столбца Shortcut TableTarget.

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

+0

Первый пример - это не рекламируемый ярлык, поскольку для этого потребуется атрибут «Реклама». Кроме этого, я не слишком глубоко размышлял о различиях и пошел дальше и использовал первый пример. – Doc

+1

Рекламируемый ярлык, указывающий на функцию MSI и запускающий ее, приведет ко всем ключевым путям в этой функции и всем ее родительским функциям, которые будут проверяться.Если для любого ключевого пути обнаружена проблема, для затронутых функций запускается самовосстановление, а отсутствующие компоненты (повторно) установлены. Эта проверка проверки иногда используется для добавления данных для каждого пользователя Windows при запуске приложения (данные пользователя или данные HKCU). –

Смежные вопросы