将快捷方式文件的路径传递给 CustomAction

Pass path of shortcut file to CustomAction

我有这样一个快捷方式定义:

<Component Id="PowershellShortcut" Guid="{12345678-1234-1234-1234-1234567890AB}">
  <Condition>POWERSHELL_INSTALL_LOCATION</Condition>
  <Shortcut Id="PowershellStartMenuShortcut"
            Name="Powershell Environment"
            Description="Powershell Environment"
            Target="[POWERSHELL_INSTALL_LOCATION]"
            Arguments="-PSConsoleFile &quot;[#Powershell.Environment]&quot;" />
</Component>

我想将生成的 .lnk 文件的路径传递到 CustomAction 中。我尝试了各种方法,例如:

<CustomAction Id="SetCustomActionData_ElevatePowershellShortcut" Return="check"
              Property="ElevatePowershellShortcut"
              Value="<WHAT-GOES-HERE?>" />

我尝试用以下方法代替 <WHAT-GOES-HERE?>

另一种方法是继续使用 [$PowershellShortcut] 值并传入 .lnk 文件的名称。这将是 <Shortcut>Name 属性。我也不知道怎么弄...

我想这样做的原因是我们已经遇到过这样的情况,快捷方式的 Name 被更改了,一切都停止了,所以我们不想更新name/path 快捷方式不止一处。

刚写完这个问题,我想出了一个解决办法。这不是我要求的,但它解决了我的问题,所以我发布了它。如果有人能弄清楚如何做我实际要求的事情,我会将他们的答案标记为正确答案,尽管我的解决方案相当干净直接。

我最终在我的 WiX 定义文件中定义了以下变量:

<?define PowershellShortcutName="Powershell Environment" ?>

然后我将 <Shortcut Name="$(var.PowershellShortcutName)">CustomAction 设置为:

<CustomAction Id="SetCustomActionData_ElevatePowershellShortcut" Return="check"
              Property="ElevatePowershellShortcut"
              Value="[$PowershellShortcut]$(var.PowershellShortcutName).lnk" />

现在一切正常。