我试图添加一个启动条件wix来检查并查看系统上是否启用HTTP激活。我创建了一个托管的自定义操作,根据是否启用该操作将返回ActionResult.Failure
或ActionResult.Success
。Wix添加启动条件
我的想法是,然后设置InstallExecuteSequence
在LaunchConditions
操作之前调用自定义操作,并在此基础上生成产品条件。
有谁知道这是否可行?或者如果有更好的解决方案?
我试图添加一个启动条件wix来检查并查看系统上是否启用HTTP激活。我创建了一个托管的自定义操作,根据是否启用该操作将返回ActionResult.Failure
或ActionResult.Success
。Wix添加启动条件
我的想法是,然后设置InstallExecuteSequence
在LaunchConditions
操作之前调用自定义操作,并在此基础上生成产品条件。
有谁知道这是否可行?或者如果有更好的解决方案?
我会说你的自定义动作应该设置一个特定的属性,以防HTTP激活启用。启动条件将检查该属性是否已定义,并基于该条件让安装进一步进行或终止。
我的意思是没有必要让你的CA返回ActionResult.Failure失败。只需设置属性并让LaunchConditions执行其工作即可。
我假设通过HTTP激活你的意思是Windows Communication Foundation HTTP激活。有了这说...
而不是一个自定义操作不能使用注册表项来设置属性描述严?例如,对于IIS6元数据库兼容性我使用:
<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
这可能会或可能不会有用于此目的。在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup\Windows Communication Foundation
还有一个名为InstallSuccess的REG_DWORD可能很有用。
我找不到这些文档,但我已经安装了两者,我的InstallSuccess的值REG_DWORD是(1),并且存在关键的HTTPActivation。
同意。虽然失败的操作将满足隐含的要求(有条件地中止安装程序),但它不会以某种方式让安装人员知道如何解决问题。在启动条件中设置属性和条件或输入包含消息的19“错误”CA更好。 – 2011-02-13 15:56:51