2016-09-20 2 views
1

私が何をしようとしているかを説明しますので、注意深くお読みください。私は、ユーザーの入力を検証するカスタムアクションを呼び出すwixインストーラーを持っています。検証が成功し、移動していない場合は、検証が成功しなかった場合、私はWix - カスタムアクションリターンコード - 取り扱い

  1. は私が
  2. カスタムアクションは、ユーザー名とパスワード
  3. 検証が成功した場合を検証するカスタムアクションを持って次のダイアログを呼び出したい、カスタムアクション([CONNECTED] = 1)の値を1に設定する
  4. 検証に失敗した場合は、プロパティ値を空に設定し、値が正しくないことを示すメッセージボックスを表示します。
  5. カスタムアクション(c#)は、次のボタンのダイアログ
  6. カスタムアクションが正常に実行され、エラーが発生するとポップアップします ここに問題があります エラーが発生した場合は、ポップアップが表示され、私のインストーラが終了ダイアログ(FINISH)にジャンプして、インストールを終了します。 また、失敗しても次のダイアログが表示されることがあります。 私のカスタムアクションを実行するためのコードです。 <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="[ButtonText_Next]"> <Publish Event="DoAction" Value="MyCustomAction">1</Publish> <Publish Event="NewDialog" Value="CustomizeDlg">CONNECTED= "1"</Publish> </Control>

私の質問は、私は[OK]をクリックした後、それが完了ダイアログにそれが行く1を返さなかったという意味にエラーが発生した場合、それは現在のダイアログに残らない理由です。

+0

コードを複数回編集しようとしました。ここに私のコードです。 '012 = "23" Y = "243"幅= "56"高さ= "17"デフォルト= "はい"テキスト= "[ButtonText_Next]"> <発行ID = "次へ"イベント= "DoActionに" 値= "MyCustomAction"> 1 <イベント= "NewDialog" 値= "CustomizeDlg" 公開> CONNECTED = "1" ' – Dee

+0

いつでも、それは代わりに、ダイアログ終了に行くactionresult.failureを返します。このダイアログに残ります – Dee

+0

ダイアログシーケンスのために障害が発生することがありますが、カスタムアクションの失敗ではありません。エラーの詳細については、msiexec/i your_package.msi/L * vx your_package.logを使用してログメッセージを生成してみてください。 – sumitani

答えて

1

カスタムアクションからの戻り値は、Windowsインストーラでの使用を意図したものであり、ユーザーによるものではありません。 ActionResult.Failureを返すと、あなたのCAが失敗してインストールが完了する必要があることをWindowsに伝えます。あなたのCAがうまく動作し、インストールプロセスに致命的でない場合は、成功した結果を返します。プロパティ値を使用してユーザーの結果を示します。

私の経験では、このタイプのダイアログを扱うより一般的な方法は、あるダイアログから次のダイアログへの通常のシーケンスを使用することです。唯一の違いは、[次へ]ボタンを無効にしてダイアログを開始し、ユーザー検証が成功した場合に有効にすることです。

+0

私は次のボタンをプロパティの結果に基づいて進めます。答えをありがとう、私はそれを受け入れた。 – Dee