关于.net:公司环境中的自动更新(C#)

关于.net:公司环境中的自动更新(C#)

Auto-updating in Corporate Environments (C#)

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

  • 使它运行起来很复杂(很少有Active Directory知识);
  • 当检测到新版本时,服务器无法触发更新过程。
  • 客户不能同时安装多个版本的客户端(例如2.3和2.4)与不同的服务器通话;
  • 更新过程本身并不总是能按预期工作(有时非常奇怪的行为会在几个小时后恢复正常)

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

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

您知道一种"可行"的更新方式吗?


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

  • 创建一个轻量级可执行文件,该文件检查网络/网站位置是否有更新。
  • 如果有更新,它将在本地复制它们并替换"实际"应用程序文件。
  • 它运行"实际"应用程序。
  • 应用程序文件的位置应由权限和操作系统如果用户仅对有限的一组文件夹具有写权限,那么您别无选择,只能使用这些文件夹之一。另一个选择是提供一个初始安装软件包,该软件包将安装轻量级可执行文件并在特定文件夹(例如" C:\\\\ Program Files \\\\ MyApp")上授予r / w权限。这种方法通常需要IT部门的支持。

    我希望这会有所帮助。


    这是我写的一个开放源代码解决方案,用于满足我们对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许可下获得许可)

    我打算在有更多时间的时候进一步扩展它,但老实说,您应该能够自己快速增强它,无论它当前不支持什么。


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

    您不认为本地应用程序数据是用于部署应用程序的文件夹,但是Google会。它的Chrome浏览器以这种方式在Windows上安装,其自动更新过程甚至也不为人所知(这听起来很可怕)。那么,为什么不将应用程序部署到此文件夹中以供受限用户使用呢?您可能会在这里找到有关Chrome安装程序的更多信息,

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


    如果您不想给用户太多的权限,可以编写Windows服务,该服务将在具有适当特权的帐户下在每台计算机上运行,??并且可以在新应用程序更新时更新您的应用程序。版本可用。


    推荐阅读

      linux命令所有用户?

      linux命令所有用户?,系统,密码,信息,情况,名称,命令,用户,时间,地址,位置,如

      linux命令进入用户?

      linux命令进入用户?,系统,密码,用户,地址,信息,软件,命令,用户名,联系方式,

      linux命令用户管理?

      linux命令用户管理?,系统,密码,管理,工作,信息,地址,工具,命令,用户,基础,LIn

      linux用户与组的命令?

      linux用户与组的命令?,管理,系统,名称,用户组,密码,用户,命令,情况,信息,单

      linux添加用户的命令?

      linux添加用户的命令?,密码,系统,软件,联系方式,用户,新增,信息,管理人员,

      linux看系统用户命令?

      linux看系统用户命令?,系统,信息,密码,命令,服务,名称,网络,情况,软件,工具,L

      linux赋权用户命令?

      linux赋权用户命令?,系统,密码,用户,权限,地址,状态,数字,软件,管理,电脑,Lin

      linux组加用户命令?

      linux组加用户命令?,系统,密码,联系方式,用户,软件,管理,命令,用户名,用户

      linux命令中添加用户?

      linux命令中添加用户?,系统,密码,软件,用户,命令,信息,目录,用户名,账号,文

      linux命令更改用户?

      linux命令更改用户?,系统,密码,管理,用户,命令,环境,工作,地址,电脑,文件,lin

      linux修改用户名命令?

      linux修改用户名命令?,系统,密码,查询系统,代码,数字,用户名,命令,第三,电

      linux命令给用户授权?

      linux命令给用户授权?,系统,数字,管理,权限,命令,密码,工具,时间,软件,信息,l

      linux命令创建用户组?

      linux命令创建用户组?,系统,代码,密码,用户组,用户,命令,信息,名称,新增,管

      linux命令给用户授权?

      linux命令给用户授权?,系统,数字,管理,权限,命令,密码,工具,时间,软件,信息,l

      linux命令创建用户组?

      linux命令创建用户组?,系统,代码,密码,用户组,用户,命令,信息,名称,新增,管

      查看linux用户命令行?

      查看linux用户命令行?,信息,系统,时间,名称,密码,用户,命令,地址,状态,设备,L

      linux所有用户命令行?

      linux所有用户命令行?,系统,信息,地址,工作,密码,命令,用户,时间,电脑,管理,L

      linux用户下的命令是?

      linux用户下的命令是?,系统,工作,管理,地址,命令,密码,基础,信息,目录,新增,L

      linux用户登录的命令?

      linux用户登录的命令?,系统,信息,工作,地址,时间,密码,名称,命令,电脑,软件,l