5

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}"

しかし、何も役に立ちません。私の両方のマシン(1つはVSがインストールされており、もう1つはクリーンです)では、ダイアログが同時に表示されます(ただし、最初のマシンにのみ表示される必要があります)。ログを作成しましたが、最初のマシンでのみこのプロパティに値があることが示されています。これらのプロパティ(何かを示す)は、そのような条件でどのように使用する必要がありますか?多分別の方法がありますか?

4

2 に答える 2

1

これは、WIX3.6をインストールした後の私の問題を解決しました:

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

インストーラーは、インストールする前にVisualStudio2010または2012をマシンにインストールする方がよいことをユーザーに警告する必要があります。

于 2013-01-11T13:56:16.717 に答える
0

それからそれは財産にない問題に見えます。条件を「0」と「1」に設定してみてください。それは違いを生みますか?私はそうは思わない。次に、これを確認します。

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

シーケンスを後で(WelcomeDlgの前)に変更しました。プロパティの初期化後に実行されます。プロパティは、sequence=1ではまだ初期化されていないと思います。

于 2012-12-28T16:26:35.600 に答える