2011-07-27 73 views
1

我想在WiX安裝程序中運行一些任意代碼,並儘早提供結果。執行WiX中的任意C#代碼

要測試這個,我使用返回值來設置標籤字段。它似乎沒有工作。當我在下一個按鈕的控件內放置一個

<Publish Event="DoAction" Value="CustomAction1">1</Publish> 

,但這太「遲了」。我想在一開始就執行該代碼。

這裏是我的嘗試:

<Binary Id="WixCustomActions" SourceFile="$(var.SolutionDir)$(var.CAProjectName)\bin\Release\$(var.CAProjectName).CA.dll" /> 

<CustomAction Id="CustomAction1" BinaryKey="WixCustomActions" DllEntry="CustomAction1" Execute="deferred" Return="asyncWait"/> (tried many combinations here)` 

後來.....

<InstallExecuteSequence> 
    <Custom Action="CustomAction1" After="InstallInitialize">1</Custom> 
</InstallExecuteSequence> 

在紙面上這應該工作。

我知道這不是自定義操作本身的問題,因爲當放在下一個鍵上時,我會得到所需的結果。

解決方案是什麼?

回答

1

InstallExecuteSequence表列出了執行頂級INSTALL操作時執行的操作。嘗試在InstallUISequence上使用LaunchConditions

+0

感謝您的提示。我將它更改爲InstallUISequence,並使用 1,但是這個錯誤與「DEBUG:Error 2762:無法調度操作。操作必須安排在InstallInitialize和InstallFinalize之間。但這不會編譯爲「錯誤\t 1」在產品:{5A997B05-4696-4C8F-BAA8-6915B8AB6FC5}「部分中未解析對符號'WixAction:InstallUISequence/InstallFinalize'的引用。 –

+0

您的自定義操作代碼存在的位置是Install方法還是beforeInstall。解釋scenerio爲什麼你想做,然後我將能夠提供更好的解決方案 – hungryMind

+0

本質上,我想運行一些可以通過*安裝程序來填充字段,並在某些情況下根據IP地址做出決定等。這個代碼在安裝程序實例化後立即運行是關鍵。 –

0
<InstallUISequence> 
    <Custom Action="Your_Custom_Action" 
      After="CostFinalize" 
      Overridable="yes">NOT Installed</Custom> 
</InstallUISequence> 

此代碼會在安裝開始時啓動'Your_Custom_Action'。