将Apple的Windows Bonjour安装程序捆绑到我们的msi中

Tom*_*ies 7 windows-installer bonjour wix

我被要求将Apple的Bonjour安装程序捆绑到我们自己的msi安装程序中,以便Bonjour自动安装在我们的软件旁边.有人这样做过吗?它似乎并不是微不足道的,因为msi安装程序不能包含和启动另一个.我假设我需要某种批处理文件来顺序运行这两个安装程序?

Dav*_*sen 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>
Run Code Online (Sandbox Code Playgroud)

在主包中,您只需要添加对正确包组的引用.

<Chain>
    <PackageGroupRef Id="Bonjour"/>

    <MsiPackage SourceFile="path\to\YourProduct.msi"/>
</Chain>
Run Code Online (Sandbox Code Playgroud)

由于Bonjour使用MSI而不是可执行文件,因此您无需执行任何操作来检测它是否存在; Burn将为您处理.实际上,由于WiX收集了你的捆绑需要从MSI获得的大部分信息,这可能是过度的,你可以直接在链中放入MsiPackage元素.

不要忘记仔细检查Apple的条款.


小智 1

这会需要更多的工作,并且很容易出现升级问题,但您可以使用 Bonjour MSI 并使用 dark 反编译它。将反编译的 MSI 转换为可包含在安装程序中的合并模块,并且您将获得一次安装。我过去曾通过安装一些驱动程序来完成此操作,通常并不那么复杂。