WiX正确创建桌面快捷方式

tey*_*non 11 installer windows-installer wix desktop-shortcut

使用WiX创建桌面快捷方式有两个答案

这两个答案都没有真正解释发生了什么.这两种创建快捷方式的方法有什么区别?第一种方法符合WiX - 创建快捷方式文档.

第二种方法有一个MergeRedirectFolder我似乎无法找到任何文档,我不明白为什么第二个例子不需要注册表设置,因为根据WiX文档,一个注册表设置:

是必需的,因为在为当前用户安装未公布的快捷方式时,快捷方式不能作为组件的KeyPath.

这是否意味着第二种方法是广告的快捷方式?或者它是一个假设用户每台机器安装的答案?还是我迷失了酱汁?(很可能 - 第二天尝试使用WiX,因为微软强迫我走这条道路.)

第一个:

<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>
Run Code Online (Sandbox Code Playgroud)

第二个:

<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>
Run Code Online (Sandbox Code Playgroud)

Edw*_*rey 5

警告: Per Doc的评论,因为两个例子都没有指定Advertise属性,也不应该创建一个广告的快捷方式.我不记得是什么让我写下面的答案; 它似乎可能是不正确的.如果背后有一些微妙的真相,我会留下答案.


第一个示例创建一个广告的快捷方式; 第二个创建一个未公布的快捷方式.使用" 快捷方式表 目标"列描述了两种类型快捷方式的规则.

未广告的快捷方式是您使用Windows资源管理器创建的标准Windows快捷方式.广告快捷方式通过验证激活快捷方式时是否安装了功能中的所有组件来增强弹性.