11

使用 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>

第二个:

<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>
4

1 回答 1

5

警告:根据 Doc 的评论,由于两个示例都没有指定Advertise属性,因此也不应该创建广告快捷方式。我不记得是什么导致我在下面写下答案;这似乎是不正确的。如果背后有一些微妙的真相,我会保留答案。


第一个示例创建了一个广告快捷方式;第二个创建一个非广告快捷方式。两种快捷方式的规则在快捷方式表 目标列中进行了描述。

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

于 2014-06-17T17:44:26.163 回答