0

Installshield の installscript でチェックボックスの値を取得するにはどうすればよいですか?

背景:ダイアログセクションに、 プロパティが"UALCSTATUS"あり、その値が「ON」のチェックボックスがあります。次のコマンドを使用して installscript の値をフェッチすると、0 または何もフェッチされません (チェックされているかどうかに関係なく)。

MsiGetProperty(hMSI, "UALCSTATUS", szStrValue, nVal); 

"UALCSTATUS"プロパティの値を設定して "ON" に設定できるように、チェックボックスをオンにしたときにカスタム アクションを設定する必要がありますか。

4

1 に答える 1

0

Windows インストーラー UI のチェック ボックスに関連付けられたプロパティは、true または false に評価される値に設定されます。CheckBox テーブルで true/checked に使用される正確な値を微調整できますが、より簡単な方法は、プロパティの名前の条件文字列でMsiEvaluateConditionを呼び出し、MSICONDITION_TRUE (1) と比較することです。

if MsiEvaluateCondition(hMSI, "UALCSTATUS") = MSICONDITION_TRUE then
    : : :
endif;

このような単純な条件の代わりに、説明したとおりにプロパティを取得し、それを空の文字列と比較することができます。空の場合は、チェック ボックスも空です。それ以外に設定されている場合は、チェック ボックスがオンになります。

補足として、InstallScript ベースの UI を使用するプロジェクトの場合、プロパティをチェックする代わりに、CtrlGetStateを呼び出して、チェック ボックスがオンになっているかどうかを判断します。通常、これは byref パラメーターを介して、ダイアログ ボックスを表示する関数に公開されます。

于 2016-01-27T13:56:24.700 に答える