首页 > 解决方案 > WIX:从链 msi(s) 更改捆绑级别变量的值

问题描述

我声明了一个捆绑包,它一个接一个地安装 3 个应用程序。

1)数据库 2)Web 服务 3)Web 应用程序

在第 1 步中 - 我正在调用一个从脚本安装数据库的 MSI。这里我获取了服务器、数据库名称、用户名和密码。

我想将这些细节带到第 3 步(将在第 2 步之后调用),即作为捆绑包一部分的 MSI 3。

我的问题是——

如何在 STEP1 中设置捆绑级别变量 PASSED_DATABASE ?

如何在 Step3 中访问它?

<Bundle>    
 <Variable Name="PASSED_DATABASE" Type="string"  bal:Overridable="yes" Value="DefaultDatabase" />
    <Chain>
      <PackageGroupRef Id="myApp.Database"></PackageGroupRef>
      <PackageGroupRef Id="myApp.Service"></PackageGroupRef>
      <PackageGroupRef Id="myApp.ApplicationName"></PackageGroupRef>        
    </Chain>
  </Bundle>

<PackageGroup Id="myApp.Database">
  <MsiPackage
    Id="myApp.Database"
    DisplayName="myApp - Database"
    DisplayInternalUI="yes"
    Visible="yes"
    EnableFeatureSelection="yes"
    SourceFile="$(var.myAppDB.Installer.TargetDir)\myAPPDB.msi">
    <MsiProperty Name="PASSED_DATABASE" Value="[PASSED_DATABASE]"/>
  </MsiPackage>
</PackageGroup>

<PackageGroup Id="myApp.Service">
  <MsiPackage
    Id="myApp.Service"
    DisplayName="myApp Service"
    DisplayInternalUI="yes"
    Visible="yes"
    EnableFeatureSelection="yes"
    SourceFile="$(var.myApp.Service.TargetDir)\myApp.Service.msi">
    <MsiProperty Name="PASSED_DATABASE" Value="[PASSED_DATABASE]"/>
  </MsiPackage>
</PackageGroup>

标签: wix

解决方案


我找到了将详细信息存储在注册表中并通过捆绑包访问它的选项。这对我来说效果很好。


推荐阅读