【问题标题】:Wix Toolset: Successively check conditionsWix 工具集:连续检查条件
【发布时间】:2018-03-19 10:52:53
【问题描述】:

我尝试在安装过程中检查两个条件,但需要依次检查:如果条件 A 为假 - 显示错误 A,则不检查条件 B。

详细说明:我必须条件检查

  • 我的应用已安装
  • 数据库架构的版本

如果我的应用未安装 - 我需要显示错误消息并且不检查数据库架构,这会导致安装过程中出现未知错误。

<Property Id="MYAPPINSTALLED">
  <RegistrySearch Id="MyAppInstalledSearch"
                  Name="MyAppInstalled"
                  Root="HKLM"
                  Key="Software\MyApp\Installed"
                  Type="raw"
                  Win64="no" />
</Property>

 <Condition Message="!(loc.RequireMyApp)">
  <![CDATA[(MYAPPINSTALLED="1")]]>
</Condition>

<PropertyRef Id="GETSCHEMAVERSION"/> 

GETSCHEMAVERSION 是其他组件中使用的自定义操作,它会尝试连接到数据库,如果机器上不存在 MyApp,则会失败。

只有在 MYAPPINSTALLED 条件通过的情况下,我才能检查 GETSCHEMAVERSION 属性?

更新: GETSCHEMAVERSION 自定义操作用于其他一些帮助应用程序。

【问题讨论】:

    标签: wix windows-installer


    【解决方案1】:

    检查数据库架构的第二个自定义操作应设置为仅在安装应用程序时运行:

    <Custom Action="CheckDbSchema">MYAPPINSTALLED="1"</Custom>
    

    据我所知,该自定义操作应该设置另一个属性,例如DBSCHEMAISOK1

    那么依赖于可用架构的组件可以使用MYAPPINSTALLED="1" And DBSCHEMAISOK="1" 进行调节。

    我可能遗漏了语法细节,但你应该明白了。

    【讨论】:

    • 好点,但问题是这个自定义操作在许多其他应用程序中使用,也检查数据库模式。因此,仅安装了我的应用程序时,我无法对条件进行硬编码。
    • 我不确定我是否理解这意味着什么:“此自定义操作用于许多其他应用程序”。你能详细说明一下吗?也许,用更多代码示例编辑您的问题?
    • 自定义操作是从 MSI 中调用某些代码。正如 Yan 所说,条件部分在 MSI 文件中。条件不在代码中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多