Wix 捆绑苹果&x27;将Windows Bonjour安装程序安装到我们的msi中

Wix 捆绑苹果&x27;将Windows Bonjour安装程序安装到我们的msi中,wix,windows-installer,bonjour,Wix,Windows Installer,Bonjour,我被要求将苹果的Bonjour安装程序捆绑到我们自己的msi安装程序中,这样Bonjour就会自动与我们的软件一起安装。以前有人这样做过吗?这似乎并不琐碎,因为msi安装程序不能包含并启动另一个安装程序。我想我需要某种批处理文件来按顺序运行这两个安装程序?您需要一个引导程序;有几个是免费提供的,其中一个是在WiX中开发的Burn。您需要使用引导程序将Bonjour安装与安装程序链接起来。如果您使用的是WiX 3.6或更高版本,那么使用创建包包包是一个不错的选择 我通过下载Bonjour SDK并

我被要求将苹果的Bonjour安装程序捆绑到我们自己的msi安装程序中,这样Bonjour就会自动与我们的软件一起安装。以前有人这样做过吗?这似乎并不琐碎,因为msi安装程序不能包含并启动另一个安装程序。我想我需要某种批处理文件来按顺序运行这两个安装程序?

您需要一个引导程序;有几个是免费提供的,其中一个是在WiX中开发的Burn。

您需要使用引导程序将Bonjour安装与安装程序链接起来。如果您使用的是WiX 3.6或更高版本,那么使用创建包包包是一个不错的选择

我通过下载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元素放入链中


不要忘了仔细检查是否执行此操作。

这将需要更多的工作,并且容易出现升级问题,但是您可以使用Bonjour MSI并使用dark对其进行反编译。将反编译的MSI转换为合并模块,该模块可以包含在安装程序中,这样您就可以进行一次安装。我在过去的一些驱动程序安装中已经这样做了,而且通常没有那么复杂。

wixburn现在相对稳定。我使用的是wix3.8

如果允许重新分发Bonjour安装程序,则可以在Wix Burn中链接安装程序。您甚至可以设置一个条件,将Bonjour指定为安装程序的prerequesite。如果它不存在,则将部署Bonjour,否则可以跳过它

您可以查看此链接以了解Burn


苹果发布《你好》的服务条款允许这样做吗?@Andrey-正如你所指出的,这不是正确答案,可能是非法的。检查有关引导程序的其他答案:您需要使用Bonjour.msi ou Bonjour64引导。msi@SimonMourier事实上,在阅读了他们的服务条款后,(对我来说)这似乎确实是合法的,不是吗?我对此表示怀疑(一般来说,你永远不能拆解你不拥有的东西,只能分发,有时你甚至不能这样做)但我不是律师:-)因为我注意到这个答案最近受到了很多关注,我想我应该用更多的信息来更新它。其中一个链接死了。我还没有真正测试过这一点,但这是我要走的方向。如果有问题,请告诉我,我会更新答案。