2013-06-19 6 views
10

SetPropertyのページを読んだ後、ここや他の場所で見つけられるような多くの例を見ても、私はSetPropertyをAfterまたはBefore私のカスタムアクションIDの1つに設定します。ドキュメンテーションは非常にシンプルで直感的ですが、幸せの代わりに「存在しないAfter Action:MyWonderfulCA」というActionRowが見つかりました。私のコードがどのように見えるかの表現:wix SetPropertyアトリビュートがカスタムアクションを受け取っていない場合Id

<CustomAction Id="MyWonderfulCA" BinaryKey="MyWonderful.dll" DllEntry="MyWonderfulCA" Execute="immediate" /> 

    <InstallExecuteSequence> 
     <Custom Action="MyWonderfulCA" After="LaunchConditions" /> 
    </InstallExecuteSequence> 

    <Property Id="SOMEPROPERTY" /> 
    <SetProperty Id="SOMEPROPERTY" After="MyWonderfulCA" Value="[SOMEOTHERPROPERTY]the\yellow\brick\road">WEAREHUNKYDORY</SetProperty> 

はとにかく、私にSOF WiXのプロを保存し、あなたが私の唯一の希望だ...

答えて

30

は私はわからないんだけど、次のようなことは疑わしいです。

<SetProperty>link)要素はオプションであるSequence属性を有しています。あなたが投稿したサンプルのように指定しなかった場合、という値が得られます。custom action of type 51(これはSetPropertyとなります)は、InstallUISequenceInstallExecuteSequenceの両方にスケジュールされます。

ただし、私が見る限り、MyWonderfulCAInstallExecuteSequenceにのみスケジュールされています。したがって、WiXがSetPropertyInstallUISequenceにスケジュールしようとすると、After属性で指定されたカスタムアクションが見つからず、失敗することが考えられます。

Sequence='execute'を明示的に指定するか、すばらしいCAを両方のシーケンスにスケジューリングするかを確認してください。そうであれば、この2つの中から最も適切な方法を選んでください。

+0

BINGO !!それがそれでした。あなたはYanをロックしてくれてありがとうございます。シーケンス番号を指摘してくれてありがとうございます。) – idclaar

+0

:)それはあなたを助けてくれてうれしいです –

+2

うわー、それはここの例からも明らかですhttp://wixtoolset.org/documentation/manual/ v3/customactions/qtexec.html 何が間違っているのか不思議に思っていました。乾杯! – berkus