Подтвердить что ты не робот

WiX Property Reference Другое свойство

Я пытаюсь создать несколько ярлыков для моего приложения, которые передают разные аргументы в командной строке с помощью атрибута Arguments Shortcut элемент. Я хочу иметь возможность ссылаться на существующее свойство из другого свойства в файле WiX.

Я хочу создать ярлык, ссылаясь на свойство Arguments с помощью:

<Component Id="MyAppProgramMenuShortcut" Guid="MY-GUID-HERE">
    <RegistryValue Root="HKCU"
        Key="Software\[Manufacturer]\[ProductName]\MyAppShortcut" Type="string"
        Value="" KeyPath="yes" />
    <Shortcut Id="ProgramMenuShortcutMyApp" Directory="ProgramMenuDir"
        Name="MyApp" Target="[SHORTCUT_TARGET]"
        Arguments="-jar myApp.jar [ARGUMENTS]" WorkingDirectory="INSTALLDIR"
        Icon="logo.ico" />
</Component>

Я пробовал что-то эквивалентное:

<Property Id="PROGRAM_FILES">C:\Program Files</Property>
<Property Id="MY_APP_DIR">[PROGRAM_FILES]\MyApp</Property>
<Property Id="ARGUMENTS">[MY_APP_DIR]\fileA.xml [MY_APP_DIR]\fileB.xml</Property>

но затем я получаю это предупреждение при передаче через candle.exe:

предупреждение CNDL1077: свойство MY_APP_DIR содержит '[PROGRAM_FILES]' в своем значении, которое является незаконной ссылкой на другое свойство. Если это значение является строковым литералом, а не свойством обратитесь, пожалуйста, игнорируйте это предупреждение. Чтобы установить свойство с помощью значение другого свойства, используйте CustomAction с собственностью и стоимостью атрибуты.

Итак, на основании предложения в предупреждении я переключился на нечто, эквивалентное:

<CustomAction Id="PROGRAM_FILES" Property="PROGRAM_FILES" Value="C:\Program Files"/>
<CustomAction Id="MY_APP_DIR" Property="MY_APP_DIR" Value="[PROGRAM_FILES]\MyApp"/>
<CustomAction Id="ARGUMENTS" Property="ARGUMENTS" Value="[MY_APP_DIR]\fileA.xml [MY_APP_DIR]\fileB.xml"/>

и я не получаю никаких предупреждений или ошибок, но проблема в том, что при установке приложения ярлыки не содержат аргументов в целевом поле.

Разве я не делаю то, что должен делать? Есть ли способ сделать то, что я хочу сделать?

4b9b3361

Ответ 1

Вам не нужны свойства для программных файлов или каталога установки продукта. Используйте [#FileId] для ссылки на полный путь к этому файлу.

Кроме того, если вы хотите использовать несколько ярлыков, просто используйте несколько элементов Shortcut с различными атрибутами Arguments. Если вы хотите один из нескольких ярлыков, вы можете иметь несколько Component с Shortcut и использовать Condition для установки только одного из них.