WiXの「インストール後にアプリケーションを起動し、」扱うことができませんチェックボックス= 0
-
20-09-2019 - |
質問
私が持っているのWiXを使用してインストールを作ってるんだチェックボックス「をインストール後にアプリケーションを起動します」。 目標は、チェックボックスを設定解除にチェックボックスをsetttingなどの反応を持っていることです。チェックボックスが設定されている場合は、私は、アプリケーションを実行する必要があります。チェックボックスが設定されていない場合には、私は、コマンドライン引数と同じアプリケーションが、実行する必要があります。
ここに私のWiXスクリプトの一部である。
<CustomAction Id="StartConfigManagerOnExit"
FileKey="ParamsShower.exe"
ExeCommand=""
Execute="immediate"
Impersonate="yes"
Return="asyncNoWait" />
<CustomAction Id="StartUpgradeConfigOnExit"
FileKey="ParamsShower.exe"
ExeCommand="/upgrade"
Execute="immediate"
Impersonate="yes"
Return="asyncNoWait" />
<UI>
<Publish Dialog="ExitDialogEx"
Control="Finish"
Order="1"
Event="DoAction"
Value="StartConfigManagerOnExit">LAUNCHAPPONEXIT = 1</Publish>
<Publish Dialog="ExitDialogEx"
Control="Finish"
Order="1"
Event="DoAction"
Value="StartUpgradeConfigOnExit">LAUNCHAPPONEXIT = 0</Publish>
<Publish Dialog="ExitDialogEx"
Control="Finish"
Event="EndDialog"
Value="Return"
Order="999">1</Publish>
<Dialog Id="ExitDialogEx"
Width="370"
Height="270"
Title="[ProductName] Setup">
<Control Id="LaunchCheckBox"
Type="CheckBox"
X="135"
Y="190"
Width="220"
Height="40"
Property="LAUNCHAPPONEXIT"
Hidden="yes"
CheckBoxValue="1"
Text="Launch an app">
<Condition Action="show">NOT Installed</Condition>
</Control>
</Dialog>
<InstallUISequence>
<Show Dialog="ExitDialogEx"
OnExit="success" />
</InstallUISequence>
<AdminUISequence>
<Show Dialog="ExitDialogEx"
OnExit="success" />
</AdminUISequence>
</UI>
インストールがLaunchCheckBoxが設定されているアプリケーションを起動します。しかし、それは、チェックボックスが設定されていない場合にはそれを実行しません。
解決
私は答えを見つけました。チェックボックスのプロパティのように見えるが未確認のとき0に等しいではありません。 "LAUNCHAPPONEXIT NOT" と単純に条件を変更する "LAUNCHAPPONEXIT = 0" は、状況を解決します。
デフォルトを作成します:
<Property Id="LAUNCHAPPONEXIT" Value="1" />
次に、(サシャさんのコメントで補正)条件を修正します:
<Publish Dialog="ExitDialogEx" Control="Finish" Order="1" Event="DoAction" Value="StartConfigManagerOnExit">LAUNCHAPPONEXIT</Publish>
<Publish Dialog="ExitDialogEx" Control="Finish" Order="1" Event="DoAction" Value="StartUpgradeConfigOnExit">NOT LAUNCHAPPONEXIT</Publish>
他のヒント
チェックボックスはまったく値がないときチェックを外し、そうではなく、あなたが簡単に使用できる1/0表記を使用よりも、
LAUNCHAPPONEXIT
と
Not LAUNCHAPPONEXIT
あなたはあなたの財産のためのカスタムアクションを初期化する追加する必要があり、
<CustomAction ID="InitLAUNCHAPPONEXIT"
Property="LAUNCHAPPONEXIT"
Value="0"
Return="check"/>
、その後、ショーの終了]ダイアログボックスの前にInstallUISequenceに追加する、または単に製品<Property Id="LAUNCHAPPONEXIT" Value="0" />
にあなたのプロパティを追加します。
所属していません StackOverflow