我被要求将Apple的Bonjour安装程序捆绑到我们自己的msi安装程序中,以便Bonjour自动安装在我们的软件旁边。有人这么做过吗?它似乎并不是微不足道的,因为msi安装程序不能包含和启动另一个。我假设我需要某种批处理文件来顺序运行这两个安装程序?
答案 0 :(得分:9)
您需要使用引导程序将Bonjour安装与您的安装程序链接起来。如果您使用的是WiX 3.6或更高版本,使用Burn创建软件包是一个不错的选择。
我通过下载Bonjour SDK并以7-zip打开它找到了Bonjour安装程序,但我确信安装SDK也可以访问它。
我通常喜欢这样做的方法是在每个依赖包的安装项目中添加一个新的源文件,以使该逻辑与主应用程序设置分开。
可以将Bonjour包列为远程有效负载,以便即时检索,或将其构建到您的设置中。在这种情况下,似乎更有可能构建它(Compressed =“yes”)。如果您需要添加与bonjour或参数相关的任何额外依赖项以传递给它,您也可以在此处定义它们。
<Fragment>
<!-- if a web link actually exists, I didn't find it... -->
<?define BonjourWebLink = "http://path/to/Bonjour.msi"?>
<PackageGroup Id="BonjourWeb">
<MsiPackage Id="BonjourWeb"
Compressed="no"
DownloadUrl="$(var.BonjourWebLink)">
</MsiPackage>
</PackageGroup>
<PackageGroup Id="Bonjour">
<MsiPackage Id="Bonjour"
Compressed="yes"
SourceFile="path\to\Bonjour.msi"/>
</PackageGroup>
</Fragment>
在主套装中,您只需要添加对正确软件包组的引用。
<Chain>
<PackageGroupRef Id="Bonjour"/>
<MsiPackage SourceFile="path\to\YourProduct.msi"/>
</Chain>
由于Bonjour使用MSI而不是可执行文件,因此您无需做任何事情来检测它是否存在;烧伤会为你处理。实际上,由于WiX会从MSI中收集您的捆绑所需的大部分信息,这可能是过度的,您可以直接在链中放入MsiPackage元素。
不要忘记仔细检查Apple's terms这样做。
答案 1 :(得分:1)
你需要一个引导程序;有几个免费提供,包括一个在WiX开发称为Burn。
答案 2 :(得分:1)
这将是一项更多的工作,并且很容易出现升级问题,但您可以使用Bonjour MSI并使用dark进行反编译。将反编译的MSI转换为可以包含在安装程序中的Merge模块,您将只需一次安装。我过去曾经使用过一些驱动程序安装,但通常情况并不复杂。
答案 3 :(得分:0)
Wix Burn现在相对稳定。我正在使用Wix 3.8。
如果您被允许重新发布Bonjour安装程序,则可以在Wix Burn中链接安装程序。你甚至可以设置条件来指定Bonjour作为安装程序的先决条件。如果它不存在,那么将部署Bonjour,否则可以跳过它。
您可以查看此链接以了解Burn。