用于分发构建的现场“Steam”式机制?

时间:2014-05-05 10:26:57

标签: c# .net deployment

我工作的公司目前自动构建其.NET产品,并将生成的安装程序(.EXE)转储到共享网络驱动器上。

要安装新版本,用户(可能有50多人 - 无论是开发人员,QA人员,顾问等)必须手动查找正确的构建和安装/升级。修补程序和更新也会出现同样容易出错的过程。

随着公司变得越来越大,我一直想知道是否已经有一个解决方案可以同时将公司内部的构建分配给许多人 - 也许是Steam的一些方面? (即通过与服务器通信自动更新构建等的客户端?)

有什么东西,最好是平台中立的,已经能够做到这种行为吗?

我想我的更大问题是:大公司如何实际在内部分发他们的.NET产品以进行测试/质量保证等?


编辑:ClickOnce在这里可能不可行,因为产品安装服务(我不认为与当前/安装用户绑定就足够了)

3 个答案:

答案 0 :(得分:1)

您可以使用ClickOnce应用程序。 MSDN的定义:

  

ClickOnce应用程序可以自动或以编程方式检查更新。

以下是MSDN上的一篇文章,介绍了管理应用程序更新所需了解的所有内容:How to: Manage Updates for a ClickOnce Application

这是文章中的一个例子:

在应用程序启动前检查更新:

  1. 在“解决方案资源管理器”中选择项目后,在“项目”菜单上单击“属性”。
  2. 单击“发布”选项卡。
  3. 单击“更新”按钮以打开“应用程序更新”对话框。
  4. 在“应用程序更新”对话框中,确保选中“应用程序应检查更新”复选框。
  5. 在“应用程序应检查更新时选择”部分中,选择“应用程序启动之前”。这可确保连接到网络的用户始终使用最新更新运行应用程序。

答案 1 :(得分:1)

我们只编写要在内部使用的软件。

我们开发了一个系统,其中所有软件都是由我们的团队服务器构建的,每个软件都使用一个DLL(使用NAppUpdate构建),它使用Teamcity服务器的Rest API,并确定是否有可用的更新,并且拉动最新的"发布"版本安装程序。

所有软件的安装程序都是使用WIX构建的,安装程序本身可以处理用户计算机上安装的软件的就地升级。

我们曾经使用过ClickOnce,但离开了它,转而使用CI。

答案 2 :(得分:1)

好的......在事实发生后很久就回答我自己的问题有点奇怪但是这里有:

我的经验是:不要寻找像Steam等人那样执行显式安装/更新的解决方案。

您应该尝试做的是使用提供所需状态配置的工具'并在所有节点上部署它。

经典示例包括 Chef Puppet

具体来说,在我自己的环境中,我最终为此目的部署了Chef,它的工作非常出色。通过使用公开的Windows cookbook,我可以在认为有必要时自动安装和重新安装产品。 (在我的情况下,我使用WinSCP - scriptable - 在幕后同步构建EXE的文件夹。如果修改时间已更改,我会执行重新安装等)

Chef - 这也可能适用于Puppet等 - 可以很容易地跟踪有关特定节点上存储内容的任意信息。在我的情况下,只需跟踪节点级别的构建修改时间(作为attribute)就足以在当前安装的构建过时时计算出来。

这完全有可能推动/弯曲这些工具的预期目的 - 但它们非常符合要求。

如果您希望解决类似的问题,我强烈推荐这种方法