我正在尝试向wix添加启动条件以检查并查看系统上是否启用了HTTP激活。我创建了一个托管的自定义操作,该操作将根据是否启用而返回ActionResult.Failure
或ActionResult.Success
。
我的想法是设置InstallExecuteSequence
以在LaunchConditions
操作之前调用自定义操作,并根据此操作设置产品条件。
有谁知道这是否有效?或者,如果有更好的解决方案?
答案 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。