Wix 工具集 : Successively check conditions

标签 wix windows-installer

我试图在安装过程中检查两个条件,但需要依次检查:如果条件 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 自定义操作用于其他一些辅助应用程序。

    最佳答案

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

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

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

    然后,依赖于可用模式的组件可以使用 MYAPPINSTALLED="1" And DBSCHEMAISOK="1" 进行调节。 .

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

    关于Wix 工具集 : Successively check conditions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49361183/

    相关文章:

    wix - 如何使 WiX Toolset (Burn) Bootstrapper 识别升级?

    wix - MSI 主要升级覆盖规则

    windows - 使用 Installshield 16 创建的安装期间自定义操作无法执行

    wix - 如果位于单独的文件中,则自定义操作不会运行

    wix - 如何将 RegistryKey 添加到由 "heat"实用程序生成的文件中的所有组件?

    wix - 检测 vcredist 的存在 - 使用 UpgradeCode

    deployment - 是否可以在 MSI 包中添加支持以在安装后更改应用程序的文件夹?

    c# - Wix:无法使用自定义操作设置属性

    visual-studio-2013 - Visual Studio 2013 Shell(隔离)安装失败,错误 997 : Overlapped I/O operation is in progress

    .net - 单击一次-所有用户