2012-07-05 10 views
8

ファイルがコピー先のフォルダにコピーされた後にカスタムアクションを実行します。wixでコピーされたファイルの後にカスタムアクションを呼び出す方法

カスタムアクションでは、コピーされたスクリプトファイルを実行するので、エラーファイルが見つかりません。

<CustomAction Id="RunDBScript" 
       BinaryKey="CA" 
       DllEntry="RunDBScript" 
       Execute=" immediate" 
       Return="check" /> 


<Custom Action="RunDBScript" After="InstallFiles"> 
    <![CDATA[NOT Installed]]> 
    </Custom> 

このカスタムアクションでは、エラーファイル/ディレクトリが見つかりません。このアクションはファイルコピーの前に呼び出します。

だから、ファイルコピー後にカスタムアクションを呼び出す方法は?

私はAfter = "InstallFiles"と指定されているにもかかわらず、このカスタムアクションがInstallFilesの前になぜ呼び出すのか分かりません。

+0

あなたのCAは延期してください: '実行='「延期」私は=「延期」を実行使用している場合 –

+1

はその後、私にエラーを与える:あなたはどうやっ –

+4

「非即時カスタムアクションから セッションの詳細にアクセスすることはできませんが」あなたの問題を解決する? – guiomie

答えて

4

遅延カスタムアクションを使用する場合は、session.CustomActionData ["propertyname"]を通じて値にアクセスする必要があります。

セッション辞書値は、実行スクリプトが書き込まれている即時のカスタムアクションによってのみ読み取ることができます。

遅延カスタムアクションはスクリプト実行時に実行されるため、プロジェクトプロパティは使用できなくなります。 これを使用するには、実際のカスタムアクションに必要なプロパティを提供するために、ダブルカスタムアクションを実装する必要があります。

怒鳴る例に従います。この例では

<CustomAction Id="CustomActionID_Data" Property="CustomActionID" Value="INSTALLDIR=[INSTALLDIR];OTHERPROPERTY=[OTHERPRPJECTPROPERTY]"></CustomAction> 
<CustomAction Id="CustomActionID" BinaryKey="FILEBINARYID" DllEntry="METHODNAMEATCUSTOMACTION" Execute="deferred"></CustomAction> 

を、カスタムアクション「_Data」とコールした後、実際の1 InstallExecutionSequenceで呼び出す必要があるので、最初の「_Data」になるSE所望の特性。次に、session.CustomActionData [""]を使用して、コード上のそれらのプロパティにアクセスできます。

ちょっと補足すると、InstallExecuteSequenceでカスタムアクションを呼び出す方法の例です。

<Custom Action="CustomActionID_Data" After="InstallFiles">NOT (REMOVE="ALL")</Custom> 
<Custom Action="CustomActionID" After="CustomActionID_Data">NOT (REMOVE="ALL")</Custom> 
関連する問題