2011-12-21 15 views
10

私は初心者で、WiXの学習を開始しました。私は、インストールプロセス中にユーザーの詳細を取得し、検証し、登録する必要があります。ユーザー登録を取得し、ユーザーが「次へ」をクリックすると、カスタムアクションを呼び出すためのダイアログを作成しました。ダイアログからCustomActionを呼び出す際にWiXインストールエラー2762が発生する

しかし、ここではインストーラのエラー2762が表示されます。「このアクションはInstallInitializeとInstallFinalizeの間でスケジュールする必要があります」というエラーメッセージが表示されますが、この問題を解決する方法を見つけることはできません。

<Binary Id="mycustom" 
     SourceFile="..\CustomAction1\bin\Debug\CustomAction1.CA.dll" /> 

<CustomAction Id="myCustomValidate" 
       BinaryKey="mycustom" 
       DllEntry="ValidateCustomAction" 
       Execute="deferred" 
       Return="check"> 
</CustomAction> 

<UI> 
    <UIRef Id="WixUI_Mondo" /> 
    <Dialog Id="UserRegistrationDlg" 
      Width="370" 
      Height="270" 
      Title="[ProductName] [Setup]" 
      NoMinimize="yes"> 
     .. 
     .. 
     .. 
     <Control Id="Next" 
       Type="PushButton" 
       X="236" 
       Y="243" 
       Width="56" 
       Height="17" 
       Default="yes" 
       Text="[ButtonText_Next]"> 
      <Publish Event="ValidateProductID" Value="0">1</Publish> 
      <Publish Event="DoAction" Value="myCustomValidate">1</Publish> 
      <Publish Event="SpawnDialog" Value="InvalidRegDlg">PIDACCEPTED = "0"</Publish> 
      <Publish Event="NewDialog" Value="SetupTypeDlg">ProductID AND PIDACCEPTED = "1"</Publish> 
     </Control> 
    </Dialog> 
</UI> 

私が使用するカスタムアクションコードを以下に示します。

は、ここに私のXMLスクリプトです。

[CustomAction] 
public static ActionResult ValidateCustomAction(Session session) 
{ 
    return ActionResult.Success; 
} 

"のInstallExecuteSequence" で使用する場合は、カスタムアクションが正常に動作しています。私は問題を理解することができません、私はカスタムダイアログを削除し、カスタムアクションを呼び出すために以下の簡単な呼び出しを使用しました。しかし、私は同じエラーで終わった。

<Publish Dialog="LicenseAgreementDlg" 
     Control="Next" 
     Event="DoAction" 
     Value="myCustomValidate">1</Publish> 

私はここで何かばかげていると確信していますが、わかりませんでした。解決策は何ですか?あなたののCustomAction要素で

答えて

20

immediate属性を実行設定しました。 Deferred actionsは、InstallInitializeアクションとInstallFinalizeアクションの間でInstallExecuteSequenceでのみ実行できます。

+0

チャームのように働いた。ありがとうございました!!! – user961330

関連する問題