1

WixUI_InstallMode プロパティを使用して、WIX インストーラー条件の非常に奇妙な動作に直面しました。要素の条件と要素の条件ではまったく異なる動作をします。たとえば、この条件は、削除または修復オプションが使用された場合にのみ、MaintenanceTypeDlg に正しくつながります。

<UI>
  <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="6"><![CDATA[WixUI_InstallMode = "Repair" OR WixUI_InstallMode = "Remove"]]></Publish>
</UI>

これは前のダイアログを表示しませんが:

<UI>
  <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="6"><![CDATA[WixUI_InstallMode = Repair OR WixUI_InstallMode = Remove]]></Publish>
</UI>

唯一の違いは、2 番目の例では "Repair" と "Remove" の値に引用符がないことです。通常のように見えるので、WIX ソースのように値を引用符で囲む必要があります。

しかし、さらに 2 つの例を考えてみましょう。

<InstallExecuteSequence>
  <Custom Action="AssertUserCredentials" After="InstallValidate"><![CDATA[WixUI_InstallMode<>"Remove"]]></Custom>
</InstallExecuteSequence>

この条件は常に true です。そのため、削除モードでは、完全に予期しないカスタム アクションが起動されます。なぜ解雇されるのですか?

そして再び引用符なしの例:

<InstallExecuteSequence>
  <Custom Action="AssertUserCredentials" After="InstallValidate"><![CDATA[WixUI_InstallMode<>Remove]]></Custom>
</InstallExecuteSequence>

これは引用符なしで正常に動作し、アンインストール モードでカスタム アクションを実行しないようになりました

私の場合、この 2 つの条件の使用法はまったく同じロジックですが、動作はまったく逆です。誰が何が起こるか説明できますか?

4

0 に答える 0