使用 ClickOnce 将公司应用程序自动更新到个人 FTP 服务器

Using ClickOnce to automatically update company application with personal FTP server

这是我的第一个 Stack Overflow 问题,如果不是很好,我们深表歉意...

我确定这要么是我遗漏的超级简单的东西,要么是我自己陷入的非常复杂的东西,但我是第一次使用 ClickOnce 为我开发的公司应用程序创建自动更新程序.

应用程序本身最初是用 VB 编写的,但我已将其翻译成 C#。我们使用它来自动化经常更改的资产数据库。我的任务是让它每周完成自动更新,以免某些技术人员与 uninstall/reinstalling 应用程序混淆。

我自愿使用我在家里使用的个人服务器机器制作一个 FTP 服务器。通常这台机器将用于本地网络,但我想创建一个 FTP 服务器有一段时间了(这也是我的第一个 FTP 服务器)。

所以我继续前进,将构建的发布位置设置为 ftp://[IP.ADDRESS]:21/Folder/Subfolder,并将安装文件夹 URL 设置为 http://[IP.ADDRESS]:21/Folder/Subfolder

长话短说,当我尝试测试更新(仅更改程序集版本)时,出现错误:

System.Deployment.Application.DeploymentDownloadException: Downloading http://[IP.ADDRESS]:21/Folder/Subfolder/applciation.application did not succeed ---> System.Net.WebException: The server committed a protocol violation.

我做了一些研究并尝试添加 SSL 证书并将更新路径更改为 https://[IP.ADDRESS]:21/Folder/Subfolder/ 然后进行了测试。这一次,我得到这个错误:

System.Deployment.Application.DeploymentDownloadException: Downloading http://[IP.ADDRESS]:21/Folder/Subfolder/applciation.application did not succeed ---> System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. --> System.IO.IOException: The handshake failed due to an unexpected format.

我不知道这是进步还是我倒退了,哈哈。我一直在来回跳转并转到许多线程以试图找出问题所在。我也很难确定这是我设置 ClickOnce 的方式的错误,还是我使用 IIS 设置 FTP 的方式的错误。

抱歉,如果这还不够,我可以在必要时提供更多信息。如果信息过多,我们也深表歉意!感谢任何帮助或指导!

我猜你在一家小公司工作,infrastructure/resources 薪水很高。考虑到这一点,我将提供一些建议:

  1. 贵公司有网络共享驱动器吗?我不喜欢 ClickOnce,但我过去曾成功地将它部署到网络共享中。这样做的好处是您无需处理安全问题。
  2. 您是否考虑过将其迁移到 Web 应用程序?当我还是本地应用程序开发人员时,Web 开发似乎真的令人望而生畏,但有了 Blazor 和 ASP.NET Core,它变得更容易访问。这将完全摆脱更新应用程序的需要。
  3. 考虑替代部署路线。 ClickOnce 没有得到很好的支持。

如果我没有在安全方面发出危险信号,那我就是失职了。 FTP 是一个非常古老的协议,在设计上基本上是不安全的。将它托管在您的家庭服务器上意味着您正在通过 public 互联网传输该应用程序...如果您公司以外的人安装了该应用程序会怎样?