我有两个自定义操作,可以在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
中的两个自定义操作之间传递一些属性?第一个自定义操作不会抛出异常。
答案 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属性抛出错误。您可以使用许多很酷的选择。