将快捷方式文件的路径传递给 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 "[#Powershell.Environment]"" />
</Component>
我想将生成的 .lnk
文件的路径传递到 CustomAction 中。我尝试了各种方法,例如:
<CustomAction Id="SetCustomActionData_ElevatePowershellShortcut" Return="check"
Property="ElevatePowershellShortcut"
Value="<WHAT-GOES-HERE?>" />
我尝试用以下方法代替 <WHAT-GOES-HERE?>
:
- [$PowershellShortcut] -- 这几乎让我明白了。我得到
.lnk
文件所在的文件夹,但不是文件本身
- [$PowershellStartMenuShortcut] -- 空字符串
- [#PowershellStartMenuShortcut] -- 空字符串。这适用于
<File>
个元素...
另一种方法是继续使用 [$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" />
现在一切正常。
我有这样一个快捷方式定义:
<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 "[#Powershell.Environment]"" />
</Component>
我想将生成的 .lnk
文件的路径传递到 CustomAction 中。我尝试了各种方法,例如:
<CustomAction Id="SetCustomActionData_ElevatePowershellShortcut" Return="check"
Property="ElevatePowershellShortcut"
Value="<WHAT-GOES-HERE?>" />
我尝试用以下方法代替 <WHAT-GOES-HERE?>
:
- [$PowershellShortcut] -- 这几乎让我明白了。我得到
.lnk
文件所在的文件夹,但不是文件本身 - [$PowershellStartMenuShortcut] -- 空字符串
- [#PowershellStartMenuShortcut] -- 空字符串。这适用于
<File>
个元素...
另一种方法是继续使用 [$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" />
现在一切正常。