Installation 从命令行don';不行?

Installation 从命令行don';不行?,installation,wix,conditional,wix3,shortcuts,Installation,Wix,Conditional,Wix3,Shortcuts,对于是否安装需要通过命令行参数传递的快捷方式,我有一个属性。当我在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) [

对于是否安装需要通过命令行参数传递的快捷方式,我有一个属性。当我在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>

尝试将值放在引号中,但仍然没有成功。此处未显示,但我通过执行ALLUSERS=“”或ALLUSERS=“2”成功地操纵了ALLUSERS属性以进行每用户或每台计算机注册,因此传入属性应该是可能的,但我不确定我做错了什么。

如果IIRC Advertise必须打赌设置为“是”


您已经从MindCapers中看到了这个示例,在创建注册表项之前,我在Shorcuts上遇到了麻烦。

您是否尝试将属性标记为安全的

<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0" Secure="Yes" />


查看文档,我不认为你可以得到有条件的广告捷径。我们通过安装广告的开始菜单快捷方式和常规桌面快捷方式来解决这个问题。

这里有两个问题:

  • 播发的快捷方式必须位于安装它们指向的文件的同一组件中。这是必需的,因为Windows安装程序在组件的键路径处指向一个公布的Shorcut。因此,如果您希望可选地安装广告Shorcuts,则不能使用它们
  • 我有一本书

  • 您正在使用的属性需要标记为安全,才能从安装UI进程传递到服务器端。要做到这一点,就去做吧


  • 请注意,我没有添加值属性。如果指定一个值,即使该值为0,INSTALLSTARTMENUSHORCUT的计算结果也将为TRUE。空白/未定义的属性为FALSE,任何其他值为TRUE。

    如果它与链接到的文件不在同一组件中,我无法设置advered=“yes”。如果它在同一个组件中,我不能只在快捷方式中添加条件,而不能在整个组件中添加条件。我只是尝试了一下,但似乎没有这样做。奇怪的是,当我添加Secure=“Yes”时,所有的快捷方式都被安装了,即使它们在WiX文件中被设置为Value=“0”。如果将0直接放在condition属性中,它的计算结果将为false,但在属性中它的计算结果将为true,这似乎是不一致的。我不制定规则,我只是按照规则生活。如果您想默认为“是”,请使用此处描述的条件,而不仅仅是评估是否设置了属性
    msiexec /i MySetup.msi INSTALLSTARTUPSHORTCUT=0 INSTALLDESKTOPSHORTCUT=0 INSTALLSTARTMENUSHORTCUT=0 /l*v inst.log /qb
    
    <Property Id="INSTALLSTARTMENUSHORTCUT" Value="0" Secure="Yes" />