ClickOnce或Windows安装程序用于自动更新C#应用程序?

时间:2012-06-15 21:25:11

标签: c# windows-installer clickonce

我应该使用ClickOnce或Windows安装程序让我的应用程序自动更新吗?

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

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

所以我想创建一个设置和部署项目,用于将程序安装到其他计算机上。此外,在此安装和部署项目中,将包含mysql连接器和.NET框架,并将随软件一起安装它们。适合所有人的一个安装程序。

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

我已经阅读了 Deploying C# Applications (MSDN),但是我应该选择什么才能实现这一目标,让我的课程更专业,而不仅仅是学生的作业?

3 个答案:

答案 0 :(得分:7)

需要注意的一点是,ClickOnce始终安装在当前用户的上下文中。如果他们需要向登录该计算机的任何人提供此应用程序,则此模型将失败。

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

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

答案 1 :(得分:5)

完成所有这三项后,我更愿意通过拖放(XCOPY)部署Windows应用程序进行部署,这意味着首先手动安装必备软件。

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

所有这些说明,所有方法都有优点和缺点,但在95%的部署中,属于公司环境,部署到我们自己的用户,我更喜欢XCOPY部署。

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

也就是说,微软提供了good article on choosing between ClickOnce or an MSI Installer。它根本不涉及XCOPY,但是再一次,XCOPY很容易理解它可能没有必要。

答案 2 :(得分:0)

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