Wix添加启动条件

时间:2011-02-11 14:54:09

标签: wix conditional-statements

我正在尝试向wix添加启动条件以检查并查看系统上是否启用了HTTP激活。我创建了一个托管的自定义操作,该操作将根据是否启用而返回ActionResult.FailureActionResult.Success

我的想法是设置InstallExecuteSequence以在LaunchConditions操作之前调用自定义操作,并根据此操作设置产品条件。

有谁知道这是否有效?或者,如果有更好的解决方案?

2 个答案:

答案 0 :(得分:4)

我想说,如果启用了HTTP激活,您的自定义操作应设置某个属性。并且启动条件将检查是否已定义该属性,并基于该属性使安装更进一步,或终止。

我的意思是没有必要让你的CA失败回到ActionResult.Failure。只需设置属性,让LaunchConditions完成它的工作。

答案 1 :(得分:0)

我假设通过HTTP激活你的意思是Windows Communication Foundation HTTP激活。随着那说......

而不是使用自定义操作使用注册表项来设置Yan所描述的属性?例如,对于IIS6 Metabase兼容性,我使用:

<Property Id="IIS_METABASE_COMPAT">
    <RegistrySearch Id="CheckIisMetabase"
                    Root="HKLM"
                    Key="SOFTWARE\Microsoft\InetStp\Components"
                    Name="Metabase"
                    Type="raw"
                    Win64="no" />
</Property>

对于启动条件(以上是启动条件中的几个属性之一):

<Condition Message="IIS6 or IIS 7 is required.  If you are running IIS7 the IIS 6 Metabase Compatibility Feature must be installed.">
    <![CDATA[IISMAJORVERSION="#6" OR (IISMAJORVERSION="#7" AND (IIS_METABASE_COMPAT OR IIS_METABASE_COMPAT_X64))]]>
</Condition>

我找到了一个关键: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup\Windows Communication Foundation\HTTPActivation可能会或可能不会用于此目的。 <{1}}上还有一个名为InstallSuccess的REG_DWORD可能很有用。

我找不到其中任何一个的文档,但我已经安装了两个,我的InstallSuccess REG_DWORD的值是(1)并且我有关键的HTTPActivation。