Создание ярлыка меню Wix

Я вижу два разных способа создания ярлыков в меню «Пуск» в Wix (3.8.):

1)

<Directory Id="ProgramMenuFolder" Name="Programs">
  <Directory Id="CompanyMenuFolder" Name="Company">
    <Component Id="MenuFolderComponent" Guid="*">
      <RegistryValue Root="HKCU" Key="Software\Company\Product" 
                     Name="MenuFolderComponent" Type="integer" 
                     Value="1" KeyPath="yes"/>
     </Component>
   </Directory>
 </Directory>

<!-- [...] -->

<Component Id='ManualComponent' Guid='*'>
  <File Id='Manual' Name="Product.pdf" DiskId='1' 
        Source="Product.pdf" KeyPath="yes" >
    <Shortcut Id="ManualStartmenuShortcut" 
              Directory="CompanyMenuFolder" Name="Product Manual"  />
  </File>
</Component>

2)

  <Directory Id="ProgramMenuFolder" Name="Programs">
    <Directory Id="CompanyMenuFolder" Name="Company">
      <Component Id="MenuFolderComponent" Guid="*">
        <Shortcut Id="StartmenuShortcut" Directory="CompanyMenuFolder"
                      Name="Product" WorkingDirectory='INSTALLDIR' 
                      Icon="Product.exe" IconIndex="0" 
                      Target="[#ProductExecutable]" />
          <RemoveFolder Id='CompanyMenuFolder' On='uninstall' />
          <RegistryValue Root="HKCU" Key="Software\Company\Product"
                         Name="MenuFolderComponent" Type="integer" Value="1"
                         KeyPath="yes"/>
      </Component>
    </Directory>
  </Directory>

Является ли какой-либо из этих методов предпочтительным, и если да, то почему?

Спасибо :)


person LeRookie    schedule 23.06.2014    source источник
comment
Это означает, что я могу использовать автоматически сгенерированные идентификаторы GUID для всего, кроме ‹Product UpgradeCode›? Аккуратный :)   -  person LeRookie    schedule 23.06.2014


Ответы (1)


Ярлык может быть «рекламируемым» — указывать на компонент, содержащийся в продукте, или «нерекламируемым» — указывать на конкретный целевой путь (Документация по элементам быстрого доступа).

Вариант 2) устанавливает для целевого поля нерекламируемого ярлыка значение Target="[#ProductExecutable]" — идентификатор свойства, который в данном случае указывает на основной исполняемый файл проекта. Он также может указывать на папку и URL-адрес как пример здесь.

Вариант 1) также создает нерекламируемый ярлык, поскольку рекламируемый атрибут по умолчанию имеет значение «нет», но здесь вы пропустили поле «Цель», и, следовательно, по умолчанию используется файл ключа родительского компонента.

По сути, гибкость допускается для учета создания различных типов ярлыков и для концепции рекламируемых и нерекламируемых ярлыков.

person Stein Åsmul    schedule 23.06.2014