2014-05-05 57 views
0

我工作的公司目前自动构建.NET产品,并将生成的安装程序(.EXE)转储到共享网络驱动器上。现场“蒸汽”机制分发版本?

要安装新版本,用户(潜在50+的人 - 无论是开发人员,QA人员,顾问等),必须手动找到正确的编译和安装/升级。补丁和更新也发生同样的容易出错的过程。

随着公司变得越来越大,我一直在想,是否已经有用于分配解决方案建立一个公司内部很多人在一次 - 也许沿着蒸汽线的东西? (即是自动更新,通过通信等建立与服务器的客户端?)

有什么事情,最好是与平台无关的,已经具备这种行为的?

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


编辑: ClickOnce是可能不在这里行不通,因为产品安装服务(我不觉得被捆绑到当前/安装用户就足够了)

回答

1

OK ......有点奇怪的事实经过这么长的回答我的问题,但这里有云:

我的经验是:不要找,像蒸汽等进行明确的安装/升级的解决方案人。

您应该改为使用提供“所需状态配置”并将其部署到所有节点的工具。

典型的例子是ChefPuppet


具体来说,在我自己的环境中,我已经结束了为此目的部署厨师和它出色的作品。通过使用公开的Windows cookbook,我已经能够编写脚本自动安装并在必要时重新安装产品。 (在我的情况下,我使用WinSCP - 即scriptable - 幕后同步构建EXE文件夹,然后在修改时间改变时执行重新安装等)。

厨师 - 这可能也适用于Puppet等 - 可以非常容易地跟踪关于存储在特定节点上的任意信息。就我而言,只需跟踪节点级别的构建修改时间(作为attribute)就足以确定当前安装的构建何时过时。

这完全有可能推动/弯曲这些工具的预期目的 - 但它们很适合这项法案。

我强烈推荐这种方法,如果你正在寻找解决类似的问题

1

您可以使用一个ClickOnce应用。来自MSDN的定义:

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

这是MSDN上的一篇文章,它解释了管理应用程序更新所需的一切:How to: Manage Updates for a ClickOnce Application

这是从文章的例子:

要检查是否有更新的应用程序开始之前:

  1. 随着Solution Explorer中选择一个项目,在项目菜单上,单击属性。
  2. 单击发布选项卡。
  3. 单击“更新”按钮打开“应用程序更新”对话框。
  4. 在“应用程序更新”对话框中,确保“应用程序应检查更新”复选框处于选中状态。
  5. 在选择应用程序何时检查更新部分,选择应用程序启动之前。这可确保连接到网络的用户始终使用最新更新运行应用程序。
+0

我应该在Q都提到了这一点:这些产品是非常庞大的,复杂的,我想切换到ClickOnce是种出来的可能性的领域(至少因为产品需要安装服务,根据我的意识,这超出了CO的职责范围) 我更多的是可能不是.NET特有的那种检测新版本的东西,获得他们,然后把控制权交给我们自己的代码* *如何更新? (如果存在这样的事情?) –

1

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

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

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

我们曾经使用ClickOnce,但是偏离了使用CI。