在wix捆绑安装程序中设置环境变量

问题描述 投票:0回答:1

我有一个捆绑安装程序,它安装了我的两个 msi 软件包和两个第三方安装程序。对于第三方安装程序rabbitmq,我想设置环境变量 RABBITMQ_NODE_PORT 但我不知道如何设置。我在其他线程中发现,我可以在我的 msi 安装程序中设置环境变量,该变量在我的捆绑安装程序中调用,但这不是我想要的。这两个安装程序需要rabbitmq才能运行,如果我首先安装我的两个安装程序来设置RABBITMQ_NODE_PORT,那么这两个安装程序的服务将由于缺少rabbitmq而停止。

代码示例:


<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
     xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
    <Bundle Name="Foo" Version="1.0.0.0" Manufacturer="Bar"
            UpgradeCode="3a1fef0b-d0b3-4cbe-a1a8-b1d1c00079e7">
        <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense">
            <bal:WixStandardBootstrapperApplication
                LicenseUrl=""/>
        </BootstrapperApplicationRef>
        <Variable Name="RBMQPORT" bal:Overridable="yes"/>

        <Chain>
            <PackageGroupRef Id="Dotnet"/>
            <PackageGroupRef Id="RabbitMQ"/>

            <MsiPackage Id="FirstAPI" SourceFile="../firstinstaller.msi">
                <MsiProperty Name="RBMQPORT" Value="[RBMQPORT]"/>
            </MsiPackage>

            <MsiPackage Id="SecondAPI" SourceFile="../secondinstaller.msi">
                <MsiProperty Name="RBMQPORT" Value="[RBMQPORT]"/>
            </MsiPackage>
        </Chain>
    </Bundle>

    <Fragment>
      <PackageGroup Id="Dotnet">
            <ExePackage Id="AspNetCoreRuntime"
                        DisplayName="ASP.NET Core Runtime 8.0.4"
                        Compressed="yes"  
                        Cache="yes"
                        PerMachine="yes"
                        Permanent="yes"
                        Protocol="netfx4"
                        Vital="yes"
                        SourceFile=".\prerequisites\dotnet-hosting-8.0.4-win.exe"
                        InstallCommand="/passive /norestart /silent" />
            <ExePackage Id="DotnetDesktopRuntime"
                        DisplayName=".NET Desktop Runtime 8.0.4"
                        Compressed="yes" 
                        Cache="yes"
                        PerMachine="yes"
                        Permanent="yes"
                        Protocol="netfx4"
                        Vital="yes"
                        SourceFile=".\prerequisites\windowsdesktop-runtime-8.0.4-win-x64.exe"
                        InstallCommand="/passive /norestart /silent" />
        </PackageGroup>
        <PackageGroup Id="RabbitMQ">
            <ExePackage Id="ErlangFramework"
                        DisplayName="Erlang Framework 26.2.5"
                        Compressed="yes"  
                        Cache="yes"
                        PerMachine="yes"
                        Permanent="yes"
                        Protocol="netfx4"
                        Vital="yes"
                        SourceFile=".\prerequisites\otp_win64_26.2.5.exe"
                        InstallCommand="/passive /norestart /silent" />
            <ExePackage Id="RabbitMQServer"
                        DisplayName="RabbitMQ Server 3.13.6"
                        Compressed="yes" 
                        Cache="yes"
                        PerMachine="yes"
                        Permanent="yes"
                        Protocol="netfx4"
                        Vital="yes"
                        SourceFile=".\prerequisites\rabbitmq-server-3.13.6.exe"
                        InstallCommand="/passive /norestart /silent" />
        </PackageGroup>
    </Fragment>
</Wix>

我尝试使用环境元素添加一个变量,但这必须位于组件中并且需要一个目录。但在这里我不需要或没有任何目录。

      <Component Id="foo">
        <Environment Id="bar" Name="RABBITMQ_NODE_PORT" Value="5673" Permanent="yes" Action="set"/>
      </Component>
rabbitmq environment-variables wix
1个回答
0
投票

捆绑安装包(如 MSI)。软件包安装文件、注册表项和环境变量等资源。

© www.soinside.com 2019 - 2024. All rights reserved.