2013-06-19 20 views
10

在閱讀SetProperty頁面並查看盡可能多的例子,我可以找到在這裏和其他地方,我仍然無法讓我的SetProperty與After或Before設置爲我的自定義操作ID之一。這個文檔看起來非常簡單直接的介紹了這個主題(哈!),但是我得到了「發現一個ActionRow並且不存在After操作:MyWonderfulCA」而不是快樂(這真的是我之後的:)什麼我的代碼看起來像一個表示: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屬性,這是可選的。如果您沒有指定它(例如您發佈的樣本),則其值爲both,這意味着custom action of type 51(這是SetProperty轉化爲的值)被安排到InstallUISequenceInstallExecuteSequence中。

但是,據我所知,您只將MyWonderfulCA安排到InstallExecuteSequence。因此,它使我認爲,當WiX嘗試將SetProperty安排到InstallUISequence時,它無法找到After屬性中指定的自定義操作並失敗。

請通過明確指定Sequence='execute'或通過將您美妙的CA安排到兩個序列中來檢查。如果是這種情況,那麼只需從這兩者中選擇最合適的方式。

+0

BINGO !!那樣做了。你搖巖,非常感謝指出順序attr:) – idclaar

+0

:)很高興它幫助你 –

+2

哇,這並不是很明顯的例子,即使在這裏http://wixtoolset.org/documentation/manual/ v3/customactions/qtexec.html 花了很多時間想知道我到底做錯了什麼。乾杯! – berkus