ClickOnce 或 Windows 安装程序,用于自动更新 C# 应用程序
本文关键字:更新 应用程序 用于 Windows 安装 程序 ClickOnce | 更新日期: 2023-09-27 18:37:18
我应该使用 ClickOnce 还是 Windows 安装程序来获取我的应用程序自动更新?
我的情况是,我有一个 C# Windows 应用程序,该应用程序正在对我通过 Web 托管服务 (webmasters.com) 维护的数据库运行 MySQL 查询。
该程序现在由三个不同的人使用,我只是将粘贴的发布文件夹复制到他们的计算机上,并在他们的计算机上安装了MySQL连接器和.NET framework 4客户端,然后运行可执行文件(.exe)。这听起来不是很专业,我在想,既然我喜欢与这个项目合作,为什么不做一些正确和专业的东西,而不是补丁和修复并从我的经验中学习?
所以我正在考虑创建一个安装和部署项目,该项目将用于将程序安装到其他计算机上。此外,在此安装和部署项目中,将包括mysql连接器和.NET框架,并将其与软件一起安装。一个安装程序适用于所有人。
此外,我认为该程序需要更新服务,以便每次我更改代码中的某些内容时,我都不必跑到人们的家中来更改程序。所以我创建了一个FTP站点,我可以在其中上传文件,当程序运行时,它将检查FTP站点上的更新,如果上传了任何新文件,它将下载它们并继续使用新版本。我读过有关ClickOnce应用程序的信息,但我不太了解它是如何工作的。
我已经阅读了部署 C# 应用程序 (MSDN),但我应该选择什么来完成这项工作并使我的程序更专业,而不仅仅是学生的家庭作业?
需要注意的一件事是,ClickOnce 始终安装在当前用户的上下文中。 如果他们需要使此应用程序可供登录到该计算机的任何人使用,则此模型将失败。
使用Visual Studio中的安装工具的MSI安装程序肯定会为您提供更灵活的安装体验。 除了定义进入应用程序文件夹的内容以及启动文件夹的外观之外,它还允许自定义安装程序组件。 因此,如果您需要让人们安装您的应用程序,但根据他们的位置输入服务器路径。
您跳过的一个元素是其他安装工具。 市场上主要有两种:Wise和Install Shield。 这些也是很好的工具,我知道你至少可以在Visual Studio中构建你的安装盾。 专业版本可以更轻松地合并路径安装程序,从而避免David Stratton提到的卸载/安装问题。
完成所有三个操作后,我更喜欢通过拖放 (XCOPY) 部署来部署 Windows 应用程序,这意味着首先手动安装必备组件。
- ClikOnce 很好 - 直到您需要停用托管它的服务器,或者证书过期,或者我必须处理的其他一些小问题。 除此之外,这是一种非常强大且简单的方法来保持用户的应用程序更新。
- 公平地说,我遇到的所有问题都有答案,可以避免它们,但文档并没有告诉你"要避免这种情况,请这样做"。对我来说,这一切都是"边走边学"。有一个规划指南来预先解释常见的陷阱会很有帮助。
- MSI安装程序也很好,但这意味着卸载/重新安装以进行更新。
- 拖放 - 简单且不那么华丽,但如果我想进行小更新,我可以复制新文件。
综上所述,所有方法都有优点和缺点,但是在我的95%的部署中,这些部署是在公司环境中部署到我们自己的用户,我更喜欢XCOPY部署。
如果我向外部客户交付软件,我会使用使用专业工具构建的安装程序。
也就是说,Microsoft提供了一篇关于在ClickOnce或MSI安装程序之间进行选择的好文章。 它根本没有解决XCOPY问题,但话又说回来,XCOPY很容易理解,可能没有必要。
如果您可以开源您的代码,那么 CodePlex 为您的安装程序提供 ClickOnce 托管。ClickOnce Release解释了如何设置它。我正在将其用于我的示例项目,效果很好。发布更新后,所有客户端都会在第一次启动时自动更新。