У меня есть свойство устанавливать ли ярлыки, которые нужно передавать через аргументы командной строки. Кажется, что условия работают, когда я устанавливаю свойства в файле wxs, но они, похоже, игнорируются при установке их через командную строку. Из журнала я вижу, что они устанавливаются:
MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLSTARTUPSHORTCUT property. Its current value is '0'. Its new value: '1'.
MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLSTARTMENUSHORTCUT property. Its current value is '0'. Its new value: '1'.
MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLDESKTOPSHORTCUT property. Its current value is '0'. Its new value: '1'.
Однако эти ярлыки не устанавливаются.
Кроме того, похоже, что поскольку они должны быть в своем собственном компоненте, чтобы иметь возможность устанавливать для них условия, они больше не могут быть объявлены как ярлыки. Как бы вы получили условно установленные рекламируемые ярлыки?
Текущий код быстрого доступа:
<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0"/>
...
<Component Id="StartMenuShortcut" Guid="MY-GUID">
<Condition>INSTALLSTARTMENUSHORTCUT</Condition>
<Shortcut Id="StartMenuServerShortcut"
Directory="ProgramMenuDir"
Name="Application Name" WorkingDirectory="INSTALLDIR" Advertise="no"
Target="[!FileEXE]"
Icon="Icon.ico" />
</Component>
И повторяется для других ярлыков
Edit:
Пробуйте то, что предложил Саша, и добавляете следующее:
<Property Id="INSTALLSTARTUPSHORTCUT" Value="0" Secure="yes"/>
<Property Id="INSTALLDESKTOPSHORTCUT" Value="0" Secure="yes"/>
<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0" Secure="yes"/>
Теперь он устанавливает все ярлыки, даже если они установлены в 0 как в xml, так и в командной строке. Командная строка, которую я передаю:
msiexec /i MySetup.msi INSTALLSTARTUPSHORTCUT=0 INSTALLDESKTOPSHORTCUT=0 INSTALLSTARTMENUSHORTCUT=0 /l*v inst.log /qb
попытался поместить значения в кавычки, но все равно не пошел. Здесь не показано, но мне удалось манипулировать свойством ALLUSERS для выполнения реестров для каждого пользователя или компьютера, выполнив ALLUSERS = "" или ALLUSERS = "2". Поэтому передача свойств должна быть возможной, но я не уверен Я делаю неправильно.