代码之家  ›  专栏  ›  技术社区  ›  Stefan Schultze

企业环境中的自动更新(C#)

  •  4
  • Stefan Schultze  · 技术社区  · 18 年前

    我有一个安装在公司环境中的三层应用程序。每次服务器版本更新时,所有客户端也必须更新。目前,我提供了一个通过Active Directory自动部署的MSI包,但是我的客户(大多每个客户有20-300个用户)似乎不喜欢MSI解决方案,因为它是

    • 运行起来很复杂(很少了解Active Directory);
    • 客户不能同时安装多个版本的客户端(如2.3和2.4)与不同的服务器通话;
    • 更新过程本身并不总是像预期的那样工作(有时在几个小时后会有非常奇怪的行为自我修复)

    我现在已经用ClickOnce做了一些实验,但是这种方法对我来说是不灵活的,并且很难集成到我的自动构建过程中。此外,它还会产生一些神秘的错误消息,这肯定会让我的客户感到困惑。

    我自己编写更新逻辑不会有问题,但问题是运行自更新应用程序的用户的权限太有限,无法执行更新。我发现他们能够写入本地应用程序数据目录,但我认为这不是安装应用程序文件的典型位置。

    你知道一种“只起作用”的更新方式吗?

    4 回复  |  直到 14 年前
        1
  •  4
  •   Rami    18 年前

    您可以复制ClickOnce的功能,只需根据需要进行调整即可。

    应用程序文件的位置应由权限和操作系统确定。如果用户仅对一组有限的文件夹具有写入权限,则您别无选择,只能使用其中一个文件夹。另一个选项是提供一个初始安装包,用于安装轻量级可执行文件并授予对特定文件夹(如“C:\Program Files\MyApp”)的r/w权限。这种方法通常需要IT部门的认可。

    我希望这有帮助。

        2
  •  2
  •   Lex Li    18 年前

    很难提供准确的答案,因为有关客户端安装程序的关键信息并不明确。您是否将客户端文件安装到程序文件中?当用户受到限制时,您可能会遇到问题。

    您不认为本地应用程序数据是部署应用程序的文件夹,但Google是这样做的。它的Chrome浏览器就是这样安装在Windows上的,它的自动更新过程甚至是不可察觉的(这听起来很可怕)。那么,为什么不为受限用户将应用程序部署到此文件夹中呢?你可以在这里找到更多关于Chrome安装程序的信息,

    http://robmensching.com/blog/archive/2008/09/04/Dissecting-the-Google-Chrome-setup.aspx

        3
  •  2
  •   synhershko    16 年前

    这是我为解决WinForms和WPF应用程序的特定需求而编写的开源解决方案。总体思路是以尽可能低的开销获得最大的灵活性。它应该为您描述的所有内容提供所需的所有灵活性。

    整合 非常简单,而且库可以为您完成几乎所有的事情,包括同步操作。也是 ,并让您确定要执行的任务和条件-您可以制定规则(或使用已有的一些规则)。最后同样重要的是支持 任何更新来源 (web、BitTorrent等)和任何 提要格式 -任何没有实现的东西,你都可以自己写。

    还支持冷更新(需要重新启动应用程序),并自动完成,除非为任务指定了“热插拔”。

    这可以归结为一个DLL,大小小于70kb。

    http://www.code972.com/blog/2010/08/nappupdate-application-auto-update-framework-for-dotnet/

    http://github.com/synhershko/NAppUpdate (根据Apache 2.0许可证许可)

    我计划在我有更多时间的时候扩展它,但老实说,你应该能够自己快速地增强它,不管它目前不支持什么。

        4
  •  0
  •   treaschf    16 年前

    推荐文章