如何在InstallExecuteSequence中的两个自定义操作之间设置属性

时间:2015-12-04 16:49:59

标签: wix

我有两个自定义操作,可以在PC上安装某些软件。

    <InstallExecuteSequence>
        <Custom Action="SETUP1" >

        </Custom>

        <Custom Action="SETUP2" >

        </Custom>
    </InstallExecuteSequence>

第一个CA安装第一个软件,但在某些情况下出现问题并且安装失败。我想设置类似FIRSTSETUPFAILED = "TRUE"的属性,然后仅当此属性FIRSTSETUPFAILED为TRUE时才执行第二个CA.

我试图实现一些CA读取regedit +查看PC上的文件夹,然后将该属性写入会话(session["FIRST"] = "TRUE";),但我无法从延迟CA写入会话。

如何在InstallExecuteSequence中的两个自定义操作之间传递一些属性?第一个自定义操作不会抛出异常。

1 个答案:

答案 0 :(得分:0)

听起来您正在寻找CustomAction Elements和Property属性。然后使用第二个Custom Element的内部文本。

就像......

<Property Id="PASSINGPROPERTY"/>

<InstallExecuteSequence>
    <Custom Action="SETUP1" />
    <Custom Action="SETUP2" >PASSINGPROPERTY</Custom>
</InstallExecuteSequence>

<CustomAction Id="SETUP1" Property="PASSINGPROPERTY">
<CustomAction Id="SETUP2">

除了需要添加如何在CustomActions中运行两个安装部件之外。上面的示例将声明的PASSINGPROPERTY属性传递给第二个自定义操作。您的第一个CustomACtion需要将此属性设置为“True”。然后,当第二部分的时间,它将检查属性,如果为true,它将运行第二部分。如果不是,那么您将跳过自定义操作。如果要停止安装,还可以在自定义操作中使用error属性抛出错误。您可以使用许多很酷的选择。