【问题标题】:Bundling Apple's Windows Bonjour installer into our msi将 Apple 的 Windows Bonjour 安装程序捆绑到我们的 msi 中
【发布时间】:2011-09-18 19:31:48
【问题描述】:

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

【问题讨论】:

    标签: wix windows-installer bonjour


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您需要使用引导程序将 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 而不是可执行文件,因此您无需执行任何操作来检测它是否存在; Burn 会为您处理。实际上,由于 WiX 从 MSI 获取您的捆绑包所需的大部分信息,这可能有点过头了,您可以直接将 MsiPackage 元素放入您的链中。

      不要忘记仔细检查 Apple's terms 是否这样做。

      【讨论】:

      • 自从我注意到这个答案最近受到了很多关注,我想我应该用更多信息来更新它。其中一个链接已失效。我还没有真正测试过,但这是我要研究的方向。如果有问题,请告诉我,我会更新答案。
      【解决方案3】:

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

      【讨论】:

      • Apple 分发 Bonjour 的服务条款是否允许这样做?
      • @Andrey - 正如你所指出的,这实际上不是正确的答案,可能是非法的。检查有关引导程序的其他答案:stackoverflow.com/questions/8727057/… 您需要使用 Bonjour.msi 或 Bonjour64.msi 进行引导
      • @SimonMourier 实际上,在阅读了他们的服务条款之后,(在我看来)这可能确实是合法的,不是吗?
      • 我对此表示怀疑(一般来说,您永远无法分解您不拥有的东西,只能分发它,有时您甚至不能这样做)但我不是律师 :-)
      【解决方案4】:

      Wix Burn 现在比较稳定。我用的是 Wix 3.8。

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

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

      http://wixtoolset.org/documentation/manual/v3/bundle/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-22
        • 1970-01-01
        • 2013-05-19
        • 1970-01-01
        • 2018-11-25
        • 2013-02-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多