2

这可能会被标记为“不是一个真正的问题”,但我真的很困惑 NuGet 在哪里适合 WiX 部署(你可以通过最后的问题猜到......)

现在的情况

我们的 TeamCity 构建为我们的 WinForms 产品创建了 WiX Burn (3.6) 安装程序,这些安装程序通过 FTP 传输到我们的服务器。应用程序调用我们的网络服务来确定是否有它有权获得的更高版本,如果有,则在后台下载它,以便下次启动应用程序时可以安装它。

新要求

我们有一些新功能通过 NuGet 包包含在我们的 c# 解决方案中。由于软件包中的特定功能,我们 90% 的客户端安装都不需要该软件包,因此可能需要它自己的 msi。有问题的 NuGet 包不是我们的,它驻留在我们的供应商服务器之一上,需要进行身份验证才能获取。

我对 NuGet 的世界有点陌生,无法理解它适合 WiX 的地方......

  • 我是否以某种方式将 NuGet 包作为 CI 构建的一部分包含在 WiX 安装程序中,这样它就不会从供应商站点下载(这将解决身份验证问题)?

  • 我是否创建了一个包含 Nuget 包中的组件的新 MSI,但实际上根本不使用 NuGet 进行最终客户端部署?(这将解决许多问题,但每次更新 NuGet 包时都可能需要工作,而且感觉不对!)

  • 我是否要创建一个无头 MSI 包,作为刻录安装的一部分单独下载?客户将无法输入所需的身份验证,因为他们没有它。

  • 如果在安装过程中安装了 NuGet 包,并且始终获得最新的可用版本,那么如果供应商更新了 NuGet 包,我们的安装可能会在以后失败,这会以某种方式破坏我们的安装。如果在客户端上下载了 NuGet 包,有没有办法解决这个问题?

非常感谢,迷茫!

4

1 回答 1

4

处理第 3 方软件包的最直接的方法是使用其面向最终用户的可再分发安装程序(例如,使用 Burn)。据推测,他们已经处理了目标平台所需的所有问题,未来将继续这样做,甚至可能提供了更新机制。对于 Microsoft 的许多组件(例如 .NET 框架和 VC 运行时)来说,这绝对是正确的。

Nuget 适用于开发人员。它下载依赖项,将它们以及可能的源代码、配置元素等添加到项目中。因此,它通常不用于将库分发给最终用户。如果库没有自己的最终用户安装程序,您可以(如果许可证允许)将其包含在您的产品的设置中,或者按照您的建议包含在单独的设置中。

与往常一样,在此基础上的是您的应用程序将如何处理不同版本的库以及它将如何在运行时找到它们。这可能非常简单,但本身就是另一个话题。您必须在安装设计和构建过程中考虑这一点。

于 2013-07-10T15:13:02.417 回答