条件不起作用他们应该Wix

时间:2012-12-10 14:09:18

标签: wix

我有这样定义的快捷方式,我会发布两个,但我还有更多:

  <!--Shortcuts to be added if variant is not OPC or LOGGER-->
  <Component Id="AlarmShortcut" Guid="1FB13893-5021-4C83-9136-00C89221100B" Directory="ProgramMenuDir">
    <Condition><![CDATA[(VARIANT <> "OPC") OR (VARIANT <> "LOGGER")]]></Condition>
    <Shortcut Id="AlarmShortcut" Directory="ProgramMenuDir" Name="Alarm Monitor" Icon="almon_nt.exe" IconIndex="0" Target="[BIN]almon_nt.exe">
      <Icon Id="almon_nt.exe" SourceFile="$(var.Bin)\almon_nt.exe"/>
      <ShortcutProperty Key="System.AppUserModel.ExcludeFromShowInNewInstall" Value="1"/>
    </Shortcut>
    <RegistryValue Root='HKCU' Key='Software\ShortcutProperty\[PRODUCTNAME]' Type='string' Value='1' KeyPath='yes' Name='AlarmShortcut'/>
  </Component>

  <Component Id="UserAShortcut" Guid="328BB0A4-18CA-4E2A-9F6B-CEC81EF45B26" Directory="ProgramMenuDir">
    <Condition><![CDATA[(VARIANT <> "OPC") OR (VARIANT <> "LOGGER")]]></Condition>
    <Shortcut Id="UserAShortcut" Directory="ProgramMenuDir" Name="User Analogs" Icon="usera_cf.exe" IconIndex="0" Target="[BIN]usera_cf.exe">
      <Icon Id="usera_cf.exe" SourceFile="$(var.Bin)\usera_cf.exe"/>
      <ShortcutProperty Key="System.AppUserModel.ExcludeFromShowInNewInstall" Value="1"/>
    </Shortcut>
    <RegistryValue Root='HKCU' Key='Software\ShortcutProperty\[PRODUCTNAME]' Type='string' Value='1' KeyPath='yes' Name='UserAShortcut'/>
  </Component>

然而,即使VARIANT = LOGGER并且我不知道问题是什么,条件总是如此。

该属性声明为:<Property Id="VARIANT" Secure="yes"/> 任何人都知道为什么这不起作用?我查看了详细日志,VARIANT属性在任何地方都没有变化。

1 个答案:

答案 0 :(得分:1)

如果我理解你的目标,那么你应该改变

(VARIANT <> "OPC") OR (VARIANT <> "LOGGER")

(VARIANT <> "OPC") AND (VARIANT <> "LOGGER")

目前,如果VARIANT是LOGGER,那么OR的左侧返回true,右侧返回false,所以OR语句返回true,而听起来你只想要如果VARIANT既不是OPC也不是LOGGER,它返回true。