WiX正确创建桌面快捷方式

时间:2014-01-03 18:01:41

标签: wix installer windows-installer desktop-shortcut

Create shortcut to desktop using WiX

有两个答案

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

第二种方法有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>

第二个:

<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 个答案:

答案 0 :(得分:5)

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


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

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