2011-02-11 65 views
1

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

我的想法是,然后设置InstallExecuteSequenceLaunchConditions操作之前调用自定义操作,并在此基础上生成产品条件。

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

回答

4

我会说你的自定义动作应该设置一个特定的属性,以防HTTP激活启用。启动条件将检查该属性是否已定义,并基于该条件让安装进一步进行或终止。

我的意思是没有必要让你的CA返回ActionResult.Failure失败。只需设置属性并让LaunchConditions执行其工作即可。

+0

同意。虽然失败的操作将满足隐含的要求(有条件地中止安装程序),但它不会以某种方式让安装人员知道如何解决问题。在启动条件中设置属性和条件或输入包含消息的19“错误”CA更好。 – 2011-02-13 15:56:51

0

我假设通过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。