我需要根据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="&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,另一个安装了),对话框同时出现(但应该只在第一个上)。我确实做了一个日志,它显示只有在第一台机器上这个属性有一个值。 在这种情况下应该使用这些属性(表示某些东西)吗?也许有另一种方式?
答案 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初始化。