我有一个捆绑安装程序,它安装了我的两个 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>
捆绑安装包(如 MSI)。软件包安装文件、注册表项和环境变量等资源。