【问题标题】:Automatically update a C# Windows Forms application自动更新 C# Windows 窗体应用程序
【发布时间】:2015-09-01 18:34:31
【问题描述】:

我希望我的应用程序自动检查更新并在需要时更新应用程序。我安装了 InstallShield Limited edition,但是当我进入更新部分时,我发现我需要安装 FlexNet,这需要我购买它。

我发现 Windows 已停止支持 Windows Installer,这就是为什么在 Visual Studio 2013 中它未在设置和部署部分列出的原因。

我还阅读了有关 ClickOnce 的信息,但是当我尝试将我的应用程序部署到 FTP 服务器时出现了一个小问题。它要求输入用户名和密码,但它添加了一个警告,这些值将是纯文本!所以我该怎么做?是否有其他第三方方式来创建安装程序和设置自动更新?

【问题讨论】:

  • 在我所做的研究中,我看到了一些开源解决方案。但是,我还是使用了 WyBuild - 请注意,虽然它仍在销售中,但已经有几年没有更新了。
  • 我从未在使用 ClickOnce 时遇到过这种情况。您确定提示不只是来自 FTP 服务器吗?您是否尝试过从其他位置提供已发布的文件夹?
  • @JerryFederspiel 可能是 ftp 服务器,因为我将它直接发布到服务器。我可以简单地将它部署在我的电脑上并将新创建的文件夹上传到服务器上吗?但是每次点击一次我都会上传一个 76MB 的文件夹,我可以只上传最新的并删除以前的文件夹会导致任何问题吗?
  • 你可以用 ClickOnce 删除旧的
  • 是的,这是因为您直接通过 FTP 发布。是的,您可以在服务器上上传新内容并删除以前的版本。您可以使用 MS 发布的此扩展恢复旧的安装/部署项目:blogs.msdn.com/b/visualstudio/archive/2014/04/17/… 但它不是自动更新的最佳选择,ClickOnce 是

标签: c# winforms clickonce installshield-le automatic-updates


【解决方案1】:

我已经在几十个应用程序中使用过 ClickOnce,但从未见过用户名/密码提示。我的流程是:

  1. 声明应用程序是从“http://www.yourSite.com/yourApp/”下载的
  2. 发布到您想要的任何位置的文件夹“yourApp”
  3. 将整个文件夹拖放到服务器上的 WWW 空间中
  4. 通过电子邮件向您的用户发送链接“http://www.yourSite.com/yourApp/yourApp.application”

对于更新,只需重复相同的过程(向用户发送电子邮件除外),其他一切都会自行处理。请务必选中您的应用程序设置中告诉它检查更新的复选框。

【讨论】:

  • 在我使用 clickonce 的经验中,我通常也从网络服务器分发应用程序,甚至从网页中的链接运行应用程序。 +1,感谢您对 clickonce 的深入了解 :)
  • 所以你推荐 ClickOnce?我一直试图避免它,因为我读过很多文章,人们说他们后悔使用它......
  • 而我所做的就是将它发布到 ftp 服务器上,这可能就是提示我这个问题的原因,你知道当你的大脑因压力而停止工作时,这就是发生在我身上的事情
  • 绝对推荐 ClickOnce!发布不使用 File 类或任何潜在危险代码的安全性较低的应用程序非常简单。使用受信任的证书发布您的应用程序比较棘手,但仍然可以使用 ClickOnce...但这是另一个问题
  • 非常感谢,该应用程序适用于中小型中心,它将安装在 10-20 台 PC 上,因此自动更新对我来说非常重要,而不是浪费我的时间单独更新每台 PC。我会试一试,如果可行,我会将您的答案标记为已接受:)
【解决方案2】:

有关用户名和密码的提示仅适用于部署期间。因此,我不会使用 FTP 在星巴克使用他们的 Wi-Fi 部署应用程序,但它应该可以在工作中或在家中的私人网络上使用。

【讨论】:

  • 这是唯一能真正回答这两个问题(使用普通 FTP 服务器的安全问题)的答案。
【解决方案3】:

考虑看:

您可以使用网络服务器分发您的应用程序,甚至您的应用程序也可以从网页中的链接运行。

您还可以使用代码检查更新。

【讨论】: