将参数从bootstrapper传递到msi bundle包
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将参数从bootstrapper传递到msi bundle包相关的知识,希望对你有一定的参考价值。
我正在使用VS2010和WiX 3.6来创建MSI包并将它们捆绑到Bootstrapper设置中。这是我的Boostrapper代码。
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Bundle Name="" Version="" Manufacturer="" UpgradeCode="">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
<MsiPackage SourceFile="Package1.msi">
<MsiProperty Name="PARAM1" Value="[PARAM1]" />
<MsiProperty Name="PARAM2" Value="[PARAM2]" />
</MsiPackage>
<MsiPackage SourceFile="Package2.msi">
<MsiProperty Name="PARAM1" Value="[PARAM1]" />
<MsiProperty Name="PARAM2" Value="[PARAM2]" />
</MsiPackage>
</Chain>
</Bundle>
</Wix>
MSI包必须具有指定的参数才能运行。通常情况下,我会打电话给"Packag21.msi PARAM1=1 PARAM2=2"
。在我构建项目之后,我尝试以与Bootstrapper.exe PARAM1=1 PARAM2=2
相同的方式将参数传递给我的Bootstrapper.exe,但它似乎没有将它们传递给MSI。安装与缺少的参数条件挂起。
有没有办法将参数从exe传递给msi?
目前标准的bootstrapper中没有这个:WixStdBa doesn't make the commandline properties available - ID: 3489809
如果您创建自己的引导程序应用程序,则可以实现此类功能。
编辑:虽然您无法通过命令行将参数传递给引导程序,但仍可以通过各种方式在引导程序中收集信息:
例:设置变量
<Variable Name="PARAM1" Value="SomeValue" Persisted="yes" Type="string" />
例如:搜索注册表
<util:RegistrySearch Root="HKLM" Key="SoftwareSomeProduct" Value="SomeKey" Variable="PARAM1" Result="value"/>
这已经实现,并且可以在5月21日的Wix 3.6 RC版本中使用。
以下是它如何工作的一般概念:
<Wix>
<Bundle>
<Variable Name="CommandLineArg" bal:Overridable="yes"/>
<Chain>
<MsiPackage>
<MsiProperty Name="CommandLineArg" Value="[CommandLineArg]"/>
</MsiPackage>
</Chain>
</Bundle>
</Wix>
您必须在命令行中创建一个可覆盖的bundle变量,然后将该变量传递给msi。
以上是关于将参数从bootstrapper传递到msi bundle包的主要内容,如果未能解决你的问题,请参考以下文章
WiX - 将参数从 MSI 传递到 Xeam 引导程序应用程序
我可以使用 WiX 创建一个 MSI 来升级使用 Burn Bootstrapper 安装的应用程序吗?