C# 自动更新建议

C# 自动更新建议,c#,wpf,scheduled-tasks,automatic-updates,C#,Wpf,Scheduled Tasks,Automatic Updates,我们目前正在考虑修改我们的应用程序的更新过程,有很多可能的方法可以做到这一点,但是我将首先给出一些背景知识。我们目前正在运行一个MVVM WPF/Silverlight应用程序,它有一个本地和在线运行的SQL Server 2008 R2数据库。我们目前有一个更新过程,在线检查更新,然后启动更新程序,在运行MSI或MSP修补程序文件应用更新之前提升权限 不幸的是,由于我们大多数客户端的设置,我们发现大多数用户都难以获得访问权限,因为他们的本地管理员并不总是可用的。这使我们开始寻找替代方法 我们的

我们目前正在考虑修改我们的应用程序的更新过程,有很多可能的方法可以做到这一点,但是我将首先给出一些背景知识。我们目前正在运行一个MVVM WPF/Silverlight应用程序,它有一个本地和在线运行的SQL Server 2008 R2数据库。我们目前有一个更新过程,在线检查更新,然后启动更新程序,在运行MSI或MSP修补程序文件应用更新之前提升权限

不幸的是,由于我们大多数客户端的设置,我们发现大多数用户都难以获得访问权限,因为他们的本地管理员并不总是可用的。这使我们开始寻找替代方法

我们的理想情况是让一个进程在后台以系统用户帐户静默运行,该帐户将定期检查服务器的更新。当更新被视为可用时,应通知当前用户更新可用,并询问他们是否希望下载更新。此外,还讨论了静默下载,用户单击以在准备就绪时运行更新。然后,该过程可以运行一个UI来显示正在进行的下载,如果在工具栏的通知区域中显示,这同样是理想的。在此过程结束时,它应在提升的权限下运行MSI文件,以允许用户在没有管理员权限的情况下更新软件

软件的初始安装将由管理员执行,管理员将了解此全自动更新过程

所以我的问题是:

执行此类流程的最佳实践方法是什么? 您对此有什么建议,例如,我们应该有一个应用程序,还是在任务或服务之外运行流程? 是否有专门设计用于解决此问题的软件? 是否有专门为此目的而设计的Windows帐户? 不同实践的任何示例和优缺点

我意识到这是一个非常模糊的问题,但我更愿意遵循推荐的方法,而不是重新发明轮子


谢谢。

我可能在这里偏离了正轨,但为什么不让您的应用程序成为一个单击一次的应用程序呢。这样,每次应用程序启动时,它都可以检查是否有更新的版本,并提示最终用户安装更新的版本

如果新版本确实出现问题,那么最终用户将能够回滚到以前的版本

我们在几个WPF应用程序中使用了这种方法,效果非常好

我们倾向于在开发机器上发布到一个文件夹,然后通过ftp发送到公共服务器


+1/-1 for:我意识到这是一个非常模糊的问题,但我更愿意遵循推荐的方法,而不是重新发明轮子:。