启动时Wix自定义操作

时间:2010-10-05 10:29:55

标签: wix ca

如何在任何UI发生之前启动Wix Custom操作(来自C#.NET CA Lib)?

3 个答案:

答案 0 :(得分:2)

我认为最好使用Custom元素的'Sequence'属性来控制它。

如果您使用Orca打开输出MSI,请切换到InstallUISequenceInstallExecuteSequence表并按“序列”列对记录进行排序,您将看到所执行操作的顺序执行。因此,在安排自定义操作时,您可以明确地放置序列:

<Custom Action="YourAction" ... Sequence="49" />

更方便的方法是使用与Sequence互斥的Before / After属性。只需找出您希望自定义操作在之前或之后执行的操作,并进行适当的安排:

<Custom Action="YourAction" ... Before="AnotherAction" />

您应该考虑InstallUISequence可能无法运行的事实(基本用户界面),因此如果您希望您的操作在任何情况下运行且只运行一次,请将属性Execute='firstSequence'放入自定义操作定义:

<CustomAction Id="YourAction" ... Execute="firstSequence" />

有关自定义操作的详细信息,请务必浏览wix.chm和MSDN。 希望这会有所帮助。

答案 1 :(得分:0)

我找到了解决方案。您可以将该代码添加到UI.wxs

<Publish Dialog="YOUR_DIALOG" Control="SOME_TEXT" Event="DoAction" Value="CA_NAME" Order="you_order">CONDITION</Publish>

答案 2 :(得分:0)

您可以使用InstallExecuteSequence来代替InstallUISequence

<InstallUISequence>
      <Custom Action="MyCustomAction" Before="LaunchConditions">NOT Installed</Custom>
</InstallUISequence>