购买或构建Web部署?

时间:2009-03-23 03:22:12

标签: installer wix windows-installer clickonce web-deployment

我一直在评估适用于Windows应用程序的各种安装和Web部署解决方案。我将在这里澄清(没有太多细节,这些工具已经在其他问题中得到了解释)我对选项的理解:

  • NSIS - 生成设置可执行文件的免费工具。小二进制。专门的,有时是迟钝的脚本语言。
  • Inno Setup - 免费设置可执行文件的工具。各种二进制压缩方案。 Pascal脚本引擎。
  • WIX - 用于生成MSI二进制文件的免费工具集。 XML定义语言。
  • WIX ClickThrough - 用于打包,网络下载和自动更新检测的其他工具(现在是WIX核心的一部分)。
  • InstallShield - 安装包装的商业开发环境。生成MSI二进制文件。类似于C语言的InstallScript语言。
  • Wise - 安装包装的商业开发环境。生成MSI二进制文件。
  • ClickOnce - Visual Studio支持将应用程序发布到Web服务器的框架,并自动检测更新。不支持自定义安装要求(INI文件,注册表等...)。包设置为MSI二进制文件。
  • Install Aware - 安装的商业开发环境。生成MSI二进制文件。自动更新框架(Web Update)。

如果我错过了,请告诉我。

在StackOverflow上找到了一些有关这些技术的有用讨论:

我已经使用了其中一些解决方案,以及一些专有的内部安装解决方案。它们主要关注打包安装并为开发人员提供访问运行时环境的框架。随着对Web部署和自动软件更新的需求不断增长,我期望在开发人员之间找到更多关于Web交付软件和后续更新框架的共识,我还没有真正找到共识。当然有可用的解决方案(ClickOnce,ClickThrough,InstallShield更新服务),但它们都有相当大的限制(如果我错误地代表其中任何一个,请纠正我)。我会对提供以下内容的框架感兴趣:

  • 第三方托管/管理更新。
  • 访问客户端环境(INI文件,注册表等)。
  • 用户注册/激活。
  • 反馈/错误报告

这让我产生了强烈的印象,即解决Web部署问题的最佳方法是通过定制的专有解决方案(可能利用现有的安装程序包)。我已经看到这种解决方案适用于许多成功的应用程序:

  • FileZilla - 对update.filezilla-project.org的HTTP请求以检查更新,下载NSIS二进制文件(我认为),然后关闭以运行安装。
  • 大型多人游戏的自动更新是完全必要的,并且使用专有系统进行普遍实施。

所以,最后,我的问题:

  • 我是否错过了提供我需要的功能的Web部署框架?
  • 我的要求是否过于具体,无法合理地期望第三方框架能够实现?
  • 我应该购买还是建造?

4 个答案:

答案 0 :(得分:12)

我会敦促对Installaware保持警惕。我们最近在客户支持方面遇到了令人震惊的经历。

我们跟随他们的一个样本项目到了悲惨失败的那封信。在客户支持下提出了一张支持票据,他们被告知要花费199美元来修改他们自己的代码。

然后我们在用户论坛中提出了相同的问题并被及时禁止,因为这构成了交叉发布并且不被允许。即使在他们的条款和条件中没有提到这一点。事实上,他们禁止我们的知识产权,所以我们公司的任何人都不能发布论坛。

非常糟糕的经历,我们不会重复。我们现在正在寻求尽快更换Installaware。

自担风险购买Installaware。

答案 1 :(得分:10)

绝对同意那些说要远离InstallAware的海报。他们有着悠久的道德问题,他们对待自己的客户非常荒谬。他们可能是彻头彻尾的侮辱和侮辱。

小心InstallAware!

答案 2 :(得分:4)

我完全同意InstallAware。

在使用WiX,NSIS和InstallAware之后,我不得不谦虚地承认,作为一名软件开发人员,我真的需要它们。到目前为止,我还没有使用Visual Studio部署项目部署的项目。

有限吗?是。

学习使用也非常简单 。此外,您实际上可以通过使用here

所述的技术自动创建补丁(.MSP文件)等内容。

我完全理解您无法在Visual Studio安装项目中执行所有,但您可以完成的工作相当令人惊讶。它是免费的,很简单,坦率地说,对于一般用途而言,比花费无数个小时学习WiX令人难以置信的XML(令人印象深刻)或InstallAware的详细脚本......更好的选择...

使用VS安装程序,它是拖放式的& amp; build'n'deploy。我尝试过的所有其他解决方案都已经退回......他们无法自动检测您的项目输出......或者需要特殊的过滤器,以免在构建中包含不需要的输出。

我的建议是:如果您只是希望部署项目,那么请学习:

  1. 如何构建自定义安装程序类,
  2. 如何编写自己的必备软件包
  3. 这些都是相当容易掌握的技能,并且满足大多数开发人员的需求。

答案 3 :(得分:2)

  • 如果您的具体要求是您的业务的核心;即,您的业务的一部分是提供流畅且用户友好的部署/安装,并且您认为没有任何可用的部署库可以让您实现这一目标,然后肯定会继续构建您自己的部署库。
  • 如果您的具体要求很好,但它们并不能成为您业务的重要组成部分;即最终用户通常不会期望或需要顺利的安装程序,或者永远不需要自己这样做(即他们将这一步传递到他们的IT部门),然后根据您自己的特定要求构建自己的需求是可能会被所涉及的额外努力所抵消。

我认为您对自己需要定制解决方案的印象是合理的;看起来您的要求将成为您产品体验的关键,特别是如果您需要非常顺畅的自动更新和反馈。