2017-12-02 17 views
0

このことは私を怒らせる。Windowsインストーラツールキット(WIX)ダイアログが動作しない

私が持っているものは、いくつかのコントロールを備えたカスタムの終了ダイアログです。ここで、ソースは次のとおりです。

<?xml version="1.0" encoding="utf-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Fragment> 
     <UI> 
      <Dialog Id="MyExitDialog" Width="370" Height="220" Title="!(loc.ExitDialog_Title)"> 
       <Control Id="Finish" Type="PushButton" X="236" Y="200" Width="56" Height="17" Default="yes" Cancel="yes" Text="!(loc.WixUIFinish)" /> 
       <Control Id="Cancel" Type="PushButton" X="304" Y="200" Width="56" Height="17" Disabled="yes" Text="!(loc.WixUICancel)" /> 
       <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="!(loc.DiskCostDlgBannerBitmap)" /> 
       <Control Id="InstallText" Type="Text" X="25" Y="53" Width="330" Height="50" Text="Product [ProductName] was successfully installed" > 
        <Condition Action="show">NOT Installed</Condition> 
       </Control> 
       <Control Id="UninstallText" Type="Text" X="25" Y="53" Width="330" Height="50" Text="Product [ProductName] was successfully removed." > 
        <Condition Action="show">Installed</Condition> 
       </Control> 
       <Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0" /> 
       <Control Id="Back" Type="PushButton" X="180" Y="200" Width="56" Height="17" Disabled="yes" Text="!(loc.WixUIBack)" /> 
       <Control Id="BottomLine" Type="Line" X="0" Y="190" Width="370" Height="0" /> 
       <Control Id="Description" Type="Text" X="25" Y="23" Width="340" Height="15" Transparent="yes" NoPrefix="yes" Text="!(loc.ExitDialogDescription)" /> 
       <Control Id="Title" Type="Text" X="15" Y="6" Width="280" Height="15" Transparent="yes" NoPrefix="yes" Text="!(loc.ExitDialogTitle)" /> 
       <Control Id="LaunchAfterExitCheckBox" Type="CheckBox" X="25" Y="145" Width="330" Height="18" CheckBoxValue="1" Property="LAUNCHAFTEREXIT" Text="Run application after installation" > 
        <Condition Action="show">NOT Installed</Condition>    
       </Control> 
      </Dialog> 
      <InstallUISequence> 
       <Show Dialog="MyExitDialog" OnExit="success" Overridable="yes" /> 
      </InstallUISequence> 
      <AdminUISequence> 
       <Show Dialog="MyExitDialog" OnExit="success" Overridable="yes" /> 
      </AdminUISequence> 
     </UI> 
    </Fragment> 
</Wix> 

WIX源に精通beeingて、あなたの方が簡単に(ほぼすべての他のダイアログ私はWIXに含まれるExitDialogをクローン化し、そしてそれを同じレイアウトを与えていることを一番上に水平方向のバナーを認識します)、 "レターボックス"のバグ(Windowsの背景がコントロールを照らしている)を回避することができます。今問題は、 "起動アプリケーション"のチェックボックスがインストール時に表示され、アンインストール時に状態が無効になっているようです。しかし、LAUNCHCONDITIONプロパティを設定することによって、チェックボックスをチェックしてチェックを外すことができます。私は10行以上を "InstallText"と "UninstallText"の間でテキストを切り替えるのにまったく同じ条件を使用するので、問題は多少奇妙です。これはうまくいきます。

これはExitDialogから元のコードです:

<Control Id="OptionalCheckBox" Type="CheckBox" X="135" Y="190" Width="220" Height="40" Hidden="yes" Property="WIXUI_EXITDIALOGOPTIONALCHECKBOX" CheckBoxValue="1" Text="[WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT]"> 
    <Condition Action="show">WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT AND NOT Installed</Condition> 
</Control> 

OK、彼らは私のプロジェクトに存在しない別の条件AND-編を、持っているが、だから何?私の状態はうまくいくはずですが、そうではありません。私は今数時間、数行を見つめており、これを試してみました。成功しませんでした。

私は何が欠けていますか?

Thx、Armin。

+0

私は今日見て、動作は次のとおりです:私はインストールやアンインストールを行っても問題はありません、両方のテキストが表示され、 より正確な質問は、条件ノードがまったく機能しない理由です。 – Nimral

答えて

1

あなたの条件は「ショー」アクションです。しかし、すべてのコントロールが表示されるので、本当に必要なのは、コントロールを非表示にするアクションです。補完的な条件(すなわち、ショーアクションを維持する)で各コントロールに両方のアクションを持たせることは悪い考えではありませんが、この場合は重要ではありません。

+0

あなたは完全に正しいです。 WIXダイアログの詳細を見ると、デフォルトでは、属性が「hidden」のコントロールがいくつか初期化されています。 – Nimral