WIX:Show Dialog的条件如何与VS2010_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED等属性一起使用?

时间:2012-09-25 13:42:02

标签: visual-studio properties wix conditional-statements

我需要根据VS2010_IDE_VWD_PROJECTSYSTEM_INSTALLED属性值向用户显示警告消息(而不是条件消息)。 这是一个简单的例子:

{some files added}
...
<PropertyRef Id="VS2010_IDE_VWD_PROJECTSYSTEM_INSTALLED" />
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" />
<UIRef Id="WixUI_InstallDir" />

<UI Id="CheckStudio">
  <Dialog Id="StudioDlg" Width="260" Height="75" Title="Hello" NoMinimize="yes" >

    <Control Id="Message" Type="Text" X="10" Y="10" Width="240" Height="40" Text="There is a problem." />

    <Control Id="Return" Type="PushButton" X="110" Y="52" Width="50" Height="17" Default="yes" Cancel="yes" Text="&amp;OK">
      <Publish Event="EndDialog" Value="Return">1</Publish>
    </Control>

  </Dialog>

  <InstallUISequence>
    <Show Dialog="StudioDlg" Sequence="1" >
      <![CDATA[Installed OR VS2010_IDE_VWD_PROJECTSYSTEM_INSTALLED]]>
    </Show>
  </InstallUISequence>

</UI>

我尝试了以下条件:

VS2010_IDE_VWD_PROJECTSYSTEM_INSTALLED<>""
VS2010_IDE_VWD_PROJECTSYSTEM_INSTALLED<>"0"
VS2010_IDE_VWD_PROJECTSYSTEM_INSTALLED<>"{value}"

但没有任何帮助。在我的两台机器上(一个安装了VS,另一个安装了),对话框同时出现(但应该只在第一个上)。我确实做了一个日志,它显示只有在第一台机器上这个属性有一个值。 在这种情况下应该使用这些属性(表示某些东西)吗?也许有另一种方式?

2 个答案:

答案 0 :(得分:1)

安装WIX 3.6后解决了我的问题:

<InstallUISequence>
   <Show Dialog="FrameworkDlg" After="CostFinalize" >
     <![CDATA[NOT (Installed OR VS2010_IDE_VWD_PROJECTSYSTEM_INSTALLED OR VS2012_IDE_VWD_PROJECTSYSTEM_INSTALLED)]]>
   </Show>
</InstallUISequence>

安装程序应警告用户在安装之前最好在计算机上安装Visual Studio 2010或2012。

答案 1 :(得分:0)

然后它看起来不是属性的问题。请尝试将条件设置为“0”和“1”。这有什么不同?我想不是。然后检查一下:

  <InstallUISequence>
    <Show Dialog="StudioDlg" Before="WelcomeDlg" >
      <![CDATA[Installed OR VS2010_IDE_VWD_PROJECTSYSTEM_INSTALLED]]>
    </Show>
  </InstallUISequence>

我将序列更改为稍后(在WelcomeDlg之前)。它将在属性初始化后执行。我想该属性尚未在sequence = 1初始化。