在线更新C#程序
您好 如果这个问题已经被问过,我很抱歉。我尝试过使用搜索功能,但找不到适合我情况的答案 我有一个真正简单的C#表单应用程序,只有一个文件,一个exe。 我目前通过4shared发布了这篇文章,人们可以随意下载 但是,每次我对程序进行更改时,人们都必须从4shared下载新版本 现在这不是一个理想的情况,我是一个noob当谈到创建升级,但我希望的情况是,该程序在一个网站/ftp服务器上,我部署了一个新版本 我正在我的程序中寻找一种方法来查看该网站/ftp服务器上的文件,并确定是否有新版本可用。 如果网站/ftp服务器中有新版本可用,我希望该程序将自身更新为最新版本在线更新C#程序,c#,ftp,auto-update,C#,Ftp,Auto Update,您好 如果这个问题已经被问过,我很抱歉。我尝试过使用搜索功能,但找不到适合我情况的答案 我有一个真正简单的C#表单应用程序,只有一个文件,一个exe。 我目前通过4shared发布了这篇文章,人们可以随意下载 但是,每次我对程序进行更改时,人们都必须从4shared下载新版本 现在这不是一个理想的情况,我是一个noob当谈到创建升级,但我希望的情况是,该程序在一个网站/ftp服务器上,我部署了一个新版本 我正在我的程序中寻找一种方法来查看该网站/ftp服务器上的文件,并确定是否有新版本可用。 如
希望你们能帮我解决这个问题,我希望我能充分解释我的情况 看看ClickOnce。它将为您完成此任务。当我开发和发布此类应用程序时,我通常采用以下方式:
[WebMethod]
public string CheckUpdateAvailable( string currentVersion )
{
...
}
Windows窗体应用程序调用此方法(例如,在程序启动时从后台线程),将其当前程序集版本作为字符串传递给函数
WSDL函数依次根据最新安装版本检查传递的版本(例如,存储在web.config
中或从服务器上的setup.exe实时提取)。如果存在较新版本,则返回一个字符串,其中包含要从中下载的URL;否则返回NULL
当WSDL函数的调用者得到一个非空字符串时,它可以向用户显示一条消息,询问用户是否要下载并安装可执行文件,然后简单地执行URL(通过)。NetParkle是一个很好的替代方法,可以使用更多部署选项单击一次 是到这里的路。我们已经使用它一年多了,效果很好(他们也有很好的支持) 它实际上使用补丁来更新文件,这样当5MB的可执行文件只有一个小的变化时,客户端只需要下载一个以千字节为顺序的文件 它们为Windows窗体或WPF提供了一个自动更新组件,该组件看起来很好,工作也很好 您可以在FTP服务器或普通网站上承载更新文件,而无需任何服务器端配置
还有很多内容,最好从如何设置更新开始。我写了一个开源库来满足我们对WinForms和WPF应用程序的特定需求。总体思路是以尽可能低的开销获得最大的灵活性。你所要做的就是创建一个更新提要并从你的应用程序中引用库 因此,集成非常简单,库可以为您完成几乎所有的事情,包括同步操作。它也非常灵活,可以让您确定执行什么任务以及在什么条件下执行——您可以设置规则(或者使用一些已经存在的规则)。最后,最重要的一点是支持任何更新源(web、BitTorrent等)和任何提要格式——任何未实现的都可以自己编写 还支持冷更新(需要重新启动应用程序),并自动完成,除非为任务指定了“热插拔” 这一切归结为一个DLL,大小小于70kb 详情请浏览 代码位于(根据Apache 2.0许可证许可)
当我有更多的时间时,我计划进一步扩展它,但老实说,无论它目前不支持什么,您都应该能够自己快速增强它。似乎正是我想要的。当我让它正常工作时,我会进一步研究它并接受它作为答案:)ClickOnce对我来说失败了。可能是因为我缺乏彻底解决问题的意愿。我自己写的,简单的更新程序@TheunArbeider是你的开源程序吗?你愿意和我们分享吗?Clickonce与我的需要不太兼容自从我只使用winforms,并且读到它存储在web.config中,我假设这不是我要找的?取决于:-)我使用ASP.NET只是为了更新检查机制。应用程序本身就是Windows窗体(,例如,顺便说一句),该网站对我来说似乎处于脱机状态。@Uwe:这很奇怪,现在是我自己,当我发布答案时。我同意。是的,现在又开始了。谢谢:-)