Visual studio WIX:显示对话框的条件如何与VS2010\u IDE\u VCSHARP\u PROJECTSYSTEM\u等属性一起工作?

Visual studio WIX:显示对话框的条件如何与VS2010\u IDE\u VCSHARP\u PROJECTSYSTEM\u等属性一起工作?,visual-studio,properties,wix,conditional-statements,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_Ins

我需要根据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>
{添加了一些文件}
...
1.

我尝试了以下条件:

VS2010_IDE_VWD_PROJECTSYSTEM_INSTALLED<>""
VS2010_IDE_VWD_PROJECTSYSTEM_INSTALLED<>"0"
VS2010_IDE_VWD_PROJECTSYSTEM_INSTALLED<>"{value}"
VS2010\u IDE\u VWD\u项目系统\u已安装“”
VS2010_IDE_VWD_项目系统_已安装“0”
VS2010_IDE_VWD_PROJECTSYSTEM_已安装“{value}”
但没有任何帮助。在我的两台机器上(一台安装了VS,另一台是干净的),对话框同时出现(但应该只出现在第一台机器上)。我做了一个日志,它显示只有在第一台机器上,这个属性才有值。
在这种情况下,如何使用这些属性(表示某物)?也许还有别的办法?

那么问题似乎不在属性上。请尝试将条件设置为“0”和“1”。这有区别吗?我想不是。然后检查以下内容:

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


我把顺序改为“以后”(WelcomeDlg之前)。它将在属性初始化后执行。我假设属性尚未在sequence=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。

请添加“VS2010\u IDE\u VWD\u PROJECTSYSTEM\u installed”属性的声明(标记,而不仅仅是)。可能您正在搜索VS 2010,但没有根据MSI日志文件正确设置属性:AppSearch:property:VS2010\u IDE\u VWD\u PROJECTSYSTEM\u已安装,签名:SearchForVWD2010ProjectSystemUnwressUp MSI(c)(90:A4)[20:16:22:560]:注意:1:2262 2:签名3:-2147287038 MSI(c)(90:A4)[20:16:22:561]:属性更改:添加VS2010\u IDE\u VWD\u PROJECTSYSTEM\u INSTALLED属性。其值为“webproj”。对于VS2012,其值完全不同:MSI(c)(90:A4)[20:16:22:562]:属性更改:添加VS2012\u IDE\u VWD\u PROJECTSYSTEM\u INSTALLED属性。它的值是“C:\Program Files(x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\Web\Project\”。我尝试按照您的建议进行操作,结果是:“找到了重复符号”属性:VS2010\u IDE\u VWD\u PROJECTSYSTEM\u INSTALLED”。不幸的是,Before=“WelcomeDlg”产生错误,Before=“CostFinalize”后没有任何更改。安装期间没有消息。