我有一个安装在企业环境中的三层应用程序。随着每个服务器版本的更新,所有客户端也必须更新。目前,我提供了一个MSI软件包,它通过Active Directory自动部署,但是我的客户(大多数每个用户有20-300个用户)似乎讨厌MSI解决方案,因为它是
我现在已经使用ClickOnce做了一些实验,但这种方式对我来说不灵活,而且很难集成到我的自动构建过程中。此外,它会产生神秘的错误信息,这肯定会让我的客户感到困惑。
我自己编写更新逻辑没有问题,但问题是运行到自更新应用程序的用户执行更新的权限太多。我发现他们能够写入他们的本地应用程序数据目录,但我认为这不是安装应用程序文件的典型位置。
你知道一种“正常工作”的更新方法吗?
答案 0 :(得分:4)
您可以在某种程度上复制ClickOnce所做的事情,只需根据您的需要进行调整。
应用程序文件的位置应由权限和操作系统确定。如果用户只对一组有限的文件夹具有写入权限,则您无法选择,而是使用其中一个文件夹。另一个选项是提供一个初始安装包,用于安装轻量级可执行文件并授予特定文件夹(如“C:\ Program Files \ MyApp”)的r / w权限。这种方法通常需要IT人员的支持。
我希望这会有所帮助。
答案 1 :(得分:2)
很难为您提供准确的答案,因为有关客户端安装程序的重要信息并不明确。您是否将客户端文件安装到Program Files中?然后,当用户受到限制时,您可能会遇到问题。
您不认为本地应用程序数据是部署应用程序的文件夹,但谷歌确实如此。它的Chrome浏览器在Windows上以这种方式安装,其自动更新过程甚至无法察觉(这可能听起来很糟糕)。那么为什么不将应用程序部署到受限用户的此文件夹中?您可以在此处找到有关Chrome安装程序的更多信息,
http://robmensching.com/blog/archive/2008/09/04/Dissecting-the-Google-Chrome-setup.aspx
答案 2 :(得分:2)
这是我为满足WinForms和WPF应用程序的特定需求而编写的开源解决方案。一般的想法是尽可能以最低的开销获得最大的灵活性。它应该为您所描述的所有内容提供所需的所有灵活性。
所以,集成非常容易,而且库可以为您完成一切,包括同步操作。它也高度灵活,让您确定要执行的任务以及在什么条件下 - 您制定规则(或使用已经存在的规则)。最后一点是对任何更新源(web,BitTorrent等)和任何 Feed格式的支持 - 任何未实现的内容,您都可以自己编写。
还支持冷更新(需要重启应用程序),并自动完成,除非为任务指定了“热交换”。
这可以归结为一个DLL,大小不到70kb。
http://www.code972.com/blog/2010/08/nappupdate-application-auto-update-framework-for-dotnet/
的更多详情代码位于http://github.com/synhershko/NAppUpdate(根据Apache 2.0许可证授权)
我计划在我有更多时间的时候扩展它,但老实说,你应该能够自己快速增强它,无论它目前不支持什么。
答案 3 :(得分:0)
如果您不想为用户授予太多权限,则可以编写Windows服务,该服务将在具有相应权限的帐户下的每台计算机上运行,并且可以更新您的应用程序。版本可用。