【问题标题】:Wix add launch conditionWix 添加启动条件
【发布时间】:2011-02-11 14:54:09
【问题描述】:

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

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

有人知道这是否可行吗?或者是否有更好的解决方案?

【问题讨论】:

    标签: wix conditional-statements


    【解决方案1】:

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

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

    【讨论】:

    • 同意。虽然失败的操作将满足隐含的要求(有条件地中止安装程序),但它不会以某种方式为安装它的人提供任何修复它的线索。最好在启动条件或键入包含消息的 19“错误”CA 中设置属性和条件。
    【解决方案2】:

    我假设 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 可能对这个目的有用也可能没用。在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup\Windows Communication Foundation 上还有一个名为 InstallSuccess 的 REG_DWORD,它可能很有用。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 1970-01-01
      • 1970-01-01
      • 2014-10-06
      • 1970-01-01
      • 2023-03-13
      • 2020-06-10
      相关资源
      最近更新 更多