2015-02-04 4 views
1

У меня есть определение ярлыка, как это:Pass путь быстрого доступа к файлу 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 находится, но не сам файл
  • [$ PowershellStartMenuShortcut] - пустая строка
  • [#PowershellStartMenuShortcut] - пустая строка. Это работает на <File> элементов ...

Альтернативой будет продолжать использовать значение [$PowershellShortcut], а также передать имя файла .lnk. Который был бы атрибутом <Shortcut>Name. Я не уверен, как это получить ...

Причина, по которой я хочу сделать это, состоит в том, что у нас уже был случай, когда был заменен ярлык Name, и все перестало работать, поэтому мы не хотим обновлять имя/путь ярлыка в нескольких местах.

ответ

0

Сразу после того, как я написал этот вопрос, я придумал решение. Это не совсем то, о чем я просил, но он решил мою проблему, поэтому я отправляю ее. Если кто-то может понять, как делать то, что я действительно просил, я буду отмечать их ответ как правильный, хотя мое решение довольно чистое и прямое.

Я в конечном итоге определяя следующую переменную в моей WiX определить файл:

<?define PowershellShortcutName="Powershell Environment" ?> 

, а затем я установил <Shortcut Name="$(var.PowershellShortcutName)"> и тому CustomAction к:

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

Все работает, как и должно быть в настоящее время.

Смежные вопросы