Я пытаюсь создать несколько ярлыков для моего приложения, которые передают разные аргументы в командной строке с помощью атрибута 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"/>
и я не получаю никаких предупреждений или ошибок, но проблема в том, что при установке приложения ярлыки не содержат аргументов в целевом поле.
Разве я не делаю то, что должен делать? Есть ли способ сделать то, что я хочу сделать?