3

我应该使用 ClickOnce 还是 Windows 安装程序来让我的应用程序自动更新?

我的情况是,我有一个 C# Windows 应用程序,它正在对我通过网络托管服务 (webmasters.com) 维护的数据库运行MySQL查询。

该程序现在由三个不同的人使用,我只是将发布文件夹复制粘贴到他们的计算机上,并在他们的计算机上安装 MySQL 连接器和.NET Framework 4 客户端,然后运行可执行文件 (.exe)。这听起来不太专业,我在想,既然我喜欢与这个项目一起工作,为什么不做一些正确和专业的事情而不是补丁和修复并从我的经验中学习呢?

所以我正在考虑创建一个设置和部署项目,用于将程序安装到其他计算机上。同样在这个设置和部署项目中,mysql 连接器和 .NET 框架将被包括在内,并将与软件一起安装。一个安装程序供所有人使用。

此外,我在想程序需要更新服务,这样每次我更改代码中的某些内容时,我就不必跑到别人家来更改程序。所以我创建了一个FTP站点,我可以在其中上传文件,当程序运行时,它将检查 FTP 站点上的更新,如果上传了任何新文件,它将下载它们并继续使用新版本。我阅读了有关 ClickOnce 应用程序的信息,但我不太了解它是如何工作的。

我已经阅读了Deploying C# Applications (MSDN),但是我应该选择什么来完成这项工作并使我的程序更专业,而不仅仅是学生的家庭作业?

4

3 回答 3

8

需要注意的一件事是 ClickOnce 始终安装在当前用户的上下文中。如果他们需要让任何登录到该机器的人都可以使用这个应用程序,那么这个模型就会失败。

使用 Visual Studio 中的安装工具的 MSI 安装程序肯定会为您提供更灵活的安装体验。除了您定义进入应用程序文件夹的内容以及启动文件夹的外观这一事实之外,它还允许自定义安装程序组件。因此,如果您需要让人们安装您的应用程序,但要根据他们的位置输入服务器路径。

您跳过的一个元素是其他安装工具。市场上主要有两种:Wise 和 Install Shield。这些也是很好的工具,我知道您至少可以在 Visual Studio 中构建您的 Install Shield。专业版可以更轻松地合并路径安装程序,从而避免 David Stratton 提到的卸载/安装问题。

于 2012-06-15T21:45:01.770 回答
5

完成这三个操作后,我更喜欢通过拖放 ( XCOPY ) 部署来部署 Windows 应用程序,这意味着首先手动安装先决条件。

  • ClikOnce 很好 - 直到您需要停用它托管的服务器,或者证书过期,或者我必须处理的其他一些小问题。除此之外,它是一种非常强大且简单的方法,可以让您的用户的应用程序保持更新。
    • 公平地说,我遇到的所有问题都有答案,并且可以避免它们,但是文档并没有告诉您“要避免这种情况,请执行此操作”。对我来说,这一切都是“边走边学”。有一个计划指南来预先解释常见的陷阱会很有帮助。
  • MSI安装程序也不错,但这意味着卸载/重新安装以进行更新。
  • 拖放 - 简单且不那么华而不实,但如果我想进行小更新,我可以复制新文件。

综上所述,所有方法都有优点和缺点,但在我 95% 的部署中,在公司环境中,部署到我们自己的用户,我更喜欢 XCOPY 部署。

如果我要向外部客户提供软件,我会选择使用专业工具构建的安装程序。

也就是说,Microsoft 提供了一篇关于在 ClickOnce 或 MSI Installer 之间进行选择的好文章。它根本不涉及 XCOPY,但话又说回来,XCOPY 很容易理解,可能没有必要。

于 2012-06-15T21:34:53.660 回答
0

如果您可以开源您的代码,那么CodePlex会为您的安装程序提供 ClickOnce 托管。ClickOnce Releases解释了如何设置它。我将它用于我的示例项目,效果很好。在我发布更新后,所有客户端都会在第一次启动时自动更新。

于 2012-06-15T21:50:32.457 回答