从搜索中我可以看到这已经被一次又一次地问过,但还不够充分,所以这里就是这样。我是一个没有预算的业余爱好者。我一直在开发的程序一直需要常规的错误修正,而我和用户已经厌倦了必须手动更新。
我,因为我目前通过FTP更新文本文件的解决方案和我在网站上的下载链接,然后希望用户会看到“有更新消息”,最后让他们去打扰手动下载坦率地说,更新是非常糟糕的。
用户,因为,“你有没有实现自动更新?” “会不会有自动更新功能?”如果我碰巧搞砸了更新过程,干草叉就会开始到达。
过去我曾调查过:
令人非常失望的是,当您为Mac OS X提供非常好用且简单的Sparkle实施时,Windows的情况就是这样。
答案 0 :(得分:19)
自己实施!这会很有趣的。创建一个仅包含更新逻辑的单独应用程序,即在线获取文件,下载文件,替换本地文件,并以可视方式向用户显示。
因此,您的主应用程序可以检查更新,如果它们存在,则会提示用户更新。如果用户想要,它将运行更新程序,自行关闭(因此可以进行更新)和presto。
您需要的唯一内容可以在C#,FTP访问和IO中轻松获得。
编辑:我知道这不是一件非常简单的事,但这是一个学习的绝佳机会:
这些都是我们都需要了解的所有内容 - 如果需要几周时间来编写更新程序,则意味着您需要花费数周的时间来学习。如果你不需要学习,有时间磨练你的技能!如果您不知道是否需要,请及时查询! :)
注意:我知道我做需要学习更好的文件和网络I / O
答案 1 :(得分:7)
应该在很久以前更新过,哎呀!
但无论如何,我一直在使用SparkleDotNET一段时间,而且它的工作非常精彩。这里和那里有一些小错误,但我已经帮助他们中的一些被压扁了,希望我也能够摆脱其他人:)
对于那些有时间运行Visual Studio的发布功能,并且其应用程序相对独立,并且不需要启动时启动的人,我肯定会推荐ClickOnce。 MetroTwit使用它并且它有一个不错的应用程序内更新程序界面,因此它似乎很灵活(至少在某种程度上)。对于在启动时启动,可能这样做,但是这样做的方法非常黑,而且效果不好。
答案 2 :(得分:3)
你可以试试codeplex的Autoupdater.NET我自己开发它,它在我的应用程序中运行得很好。您只需在代码中添加一行即可完成。它也是开源的,因此您可以根据需要进行修改和使用。
答案 3 :(得分:1)
您甚至无法开发外部应用程序,但可以将其作为应用程序的模块实现,例如:进入namespace Update
,并使用动态程序集构建器生成exe,启动它并退出app main,在更新完成后再次启动它。
更多info。
答案 4 :(得分:1)
还有DDay update是开源的,我的一个客户使用它。我们/他们主要对Windows服务的上下文感兴趣,因为它的工作原理相当不错。
答案 5 :(得分:0)
有关更强大的解决方案,您可能需要查看Google Omaha。这就是Chrome的用途。当您的应用程序不运行时,您可以在后台获取应用程序内更新和自动更新。
答案 6 :(得分:-1)
所有人都是对的,特别是看看abatishchev的回复。但我觉得有些东西需要那个人忘了它。尝试开发你的项目“模块化”。尽可能在类库中输入你的代码。所以在修复操作期间替换其中一个。想一个bout数据库fix.some时你需要在数据库表中添加一个列。你是否为这些案件做过?
已经开发了一个更新项目。我有三种修复方法。 1-程序操作中的BUG并需要替换DDL文件 2-程序中的Bug,需要更新当前程序执行文件 3- bug或更改数据库并需要执行sql server查询
在网络主机上的表格中我放置了版本历史记录,每次我的应用程序开始检查新版本。如果存在任何更新,请检查其类型并下载并根据更新类型和参数执行合适的操作< / p> 好运老兄