8

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

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

如果我遗漏了任何内容,请告诉我。

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

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

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

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

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

所以,最后,我的问题:

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

4 回答 4

12

我会敦促对 Installaware 保持谨慎。我们最近在他们的客户支持方面获得了令人震惊的体验。

我们跟踪了他们的一个示例项目,结果惨遭失败。向客户支持提出了一张支持票,并被告知要花费 199 美元让他们查看修复自己的代码。

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

一次非常糟糕的经历,我们不会重复。我们现在希望尽快更换 Installaware。

购买 Installaware,后果自负。

于 2009-04-08T00:42:13.770 回答
10

绝对同意说远离 InstallAware 的海报。他们长期以来一直存在非常荒谬的道德问题,并且他们对待自己的客户非常糟糕。他们可以是彻头彻尾的辱骂和侮辱。

当心安装意识!

于 2009-09-16T19:11:07.283 回答
4

我完全同意 InstallAware。

在使用了 WiX、NSIS 和 InstallAware 之后,我不得不谦虚地承认,对于我作为软件开发人员真正需要的东西来说,它们都太过分了。到目前为止,我所做的所有项目都无法使用 Visual Studio 部署项目进行部署。

有限制吗?是的。

学习使用也很简单。此外,您实际上可以通过使用此处描述的技术自动创建补丁(.MSP 文件)等非常巧妙的事情

我完全理解您无法在 Visual Studio 安装项目中完成所有工作,但您完成的工作令人惊讶。它是免费的,很简单,坦率地说,与花费无休止地学习 WiX 令人难以置信的 XML(尽管令人印象深刻)或 InstallAware 的冗长脚本相比,一般用途是一个更好的选择......

使用 VS Setup,它是拖放和构建和部署。我尝试过的所有其他解决方案都遇到了挫折......他们无法自动检测您的项目输出......或者需要特殊的过滤器以免包含来自构建的不需要的输出。

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

  1. 如何构建自定义安装程序类,以及
  2. 如何编写自己的必备包

这些都是相当容易掌握的技能,并且可以满足大多数开发人员的需求。

于 2009-09-30T17:56:07.333 回答
2
  • 如果您的特定要求是您业务的核心;即,您的业务的一部分是提供流畅且用户友好的部署/安装,并且您觉得没有可用的部署库可以让您实现这一点,那么当然可以继续构建您自己的。
  • 如果您的特定要求很好,但它们并没有成为您业务的重要组成部分;即最终用户通常不会期望或需要顺利的安装过程,或者永远不需要自己这样做(即他们将这一步骤传递给他们的 IT 部门),那么需要构建自己的只是为了满足您自己的特定要求是可能会被所涉及的额外努力所抵消。

我认为您需要定制解决方案的印象是正确的。似乎您的要求将成为产品体验的关键,特别是如果您需要真正流畅的自动更新和反馈。

于 2009-03-23T03:39:59.643 回答