我有一个属性来决定是否安装需要通过命令行参数传递的快捷方式。当我在 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>
并重复其他快捷方式
编辑:
尝试 Sacha 的建议并添加以下内容:
<Property Id="INSTALLSTARTUPSHORTCUT" Value="0" Secure="yes"/>
<Property Id="INSTALLDESKTOPSHORTCUT" Value="0" Secure="yes"/>
<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0" Secure="yes"/>
现在它会安装所有快捷方式,即使它们在 xml 和命令行中都设置为 0。我传递的命令行是:
msiexec /i MySetup.msi INSTALLSTARTUPSHORTCUT=0 INSTALLDESKTOPSHORTCUT=0 INSTALLSTARTMENUSHORTCUT=0 /l*v inst.log /qb
尝试将值放在引号中,但仍然不行。此处未显示,但我通过执行 ALLUSERS="" 或 ALLUSERS="2" 成功操纵 ALLUSERS 属性以执行每个用户或每台机器的注册表所以应该可以传递属性,但我不确定是什么我做错了。