82

我目前正在对移除我们目前使用的安装包(Wise Installer 9)进行一些调查,并转向可以处理 Windows Vista、Windows 7 和 64 位系统之类的东西。安装人员的本地化将是有益的,因为我们也有许多法裔加拿大客户。

我们目前安装了以下技术的软件包和实用程序:

  • 进步4GL
  • 视觉工作室 2005
  • 视觉工作室 2008
  • .NET 紧凑型框架 3.5

我已经看过WiXInstallShield了,Altiris 也替代了旧的 Wise 系统。

我还没有玩过InstallShield,但从我所看到/安装的所有内容来看,它似乎是行业的最爱之一。我浏览了一些与InstallShield相关的 Stack Overflow 标签,我很想知道该小组对此有何评论。

我只是默认去他们吗?WiX 在非 .NET 方面有多好?

4

5 回答 5

151

更新,2018年 8 月,一个新的更短的选项:如何创建 Windows 安装程序。专注于总结MSI and its major benefits和列出major tools available(带有下载链接),以及mentioning some new, trending deployment technologies.


我曾在软件开发领域担任过发布经理构建工程师设置开发人员以及大公司的应用程序打包人员、SOE 工程师部署工程师(SCCM)。

一路走来,我使用了大多数主要的打包工具(一些有许多不同的版本):InstallShield明智的(不幸的是,非市场)、WiXAdvanced Installer(只是测试)、Orca和我已经测试了一些其他工具(链接到来自http://www.installsite.org的“Windows Installer Authoring Tools for Developers ” - 一个相当详尽的列表工具)。我还使用了不太常见的打包和部署工具,例如 Computer Associates Unicenter——现在可能已经不在市场上。还有一个关于Non-MSI Setup Authoring Tools的页面。

更新:如果您发现自己需要一个 MSI 工具来比较两个 MSI 文件版本,或者只是从 MSI 文件中提取信息,您可能想阅读这个答案:我如何比较两个(或更多)MSI 的内容文件?(专注于免费的 MSI 工具)。

这篇文章概述了一些不同创作工具的优点以及一些需要注意的问题。尽管它们有很多相似之处,但这些工具实际上是完全不同的。已尽一切努力使描述尽可能客观——用积极和消极的方式描述现实世界的经验。


相关部署主题


安装盾牌

  • 功能丰富。
  • 始终与最新技术保持同步。
  • (设置)面向开发人员。
    • 提供不同的版本。
    • 旗舰产品 AdminStudio 提供了面向设置开发人员的工具以及面向重新打包程序的工具。
  • 用于构建过程自动化的非常好的发布管理本地化自动化功能。至少比竞争对手好。
    • 对于复杂的产品,发布管理可能是 InstallShield 的主要卖点。您可以轻松地提供各种风格:语言版本、oem 版本、查看器、应用程序版本等……使用发布标志和类似结构。
    • 发布标志本质上用于有条件地从每个编译设置中排除或包含产品的某些部分——这通常是制作专业设置系列时要求的大部分内容。
    • Installshield 中的发布视图允许您全面了解所有不同的设置类型和版本。您会看到为 Web(一个大的设置文件)或可再分发媒体(外部源文件)以及您提供的任何其他风格提供的 所有语言版本和发布设置。
      • 至关重要的是,对于每个版本和版本,您可以覆盖重要设置,例如产品名称、产品版本、包、产品和升级代码以及许多其他必须根据产品版本和语言版本动态更改的必需设置。
      • 在许多其他产品中,这种发布和版本管理可能更难实现。对于更简单的设置,这种类型的灵活性可能不太重要。
    • 该产品的自动化 API允许从各种类型 的构建自动化脚本轻松“远程控制”它。
      • 还有命令行构建模块(用于专用构建服务器)。
      • 使用常规的 VBScript / VBA / Javascript 自动化可以轻松实现一整套产品和版本的完全自动化构建。
    • 完全本地化支持,用于支持不同设置语言 的字符串表。
      • 还提供了多种语言的现成基础对话框(额外收费)。
      • 您只需要本地化您自己的设置内容(功能列表标题、任何自定义对话框或消息框、带有文本的图像等...) - 仍然需要大量工作。
      • 您可以提供庞大的多语言设置。根据我的经验,不建议这样做,原因有几个(阅读本地化部分)。最糟糕的问题是,您必须先将所有新的和更改的内容本地化为所有语言,然后才能交付英文版本。这对于营销/销售来说几乎是不可接受的。并且总是存在需要您重建和重新发布一种语言的修复程序,然后您希望在没有 UAT 和所有其他语言的 QA 的情况下这样做。最好为每种语言提供单独的构建(易于实现)。
  • 良好的社区支持:用户社区论坛
  • 相当不错的 GUI,常见的事情相当容易。
  • 成熟的 MSI-GUI 编辑器。
    • 很强大。有点复杂。
    • 底层 MSI 技术的 GUI 功能的限制会导致一些障碍和烦人的限制,但这对于所有部署工具都是一样的。
    • 根本原因是 MSI GUI 是使用 MSI 文件本身内部的数据表实现的,与正确 Win32 对话框的完整“事件模型”相比,这会导致对话框事件的严重限制。
  • 用于自定义操作的全功能C 风格脚本语言,称为“ Installscript ”。
    • Installscript 现在可以编译为本机 - 或使用自己的沙箱进行模拟,不确定是哪个。无需像以前那样安装运行时。
    • 顺便说一句,由于运行时损坏(似乎通常与 DCOM 相关)以及不同运行时版本之间的各种不兼容性,此运行时是一些相当麻烦的部署问题的根源。以下是一些用于“遗留目的”的故障排除链接:
    • 尽管运行时是一个非常有问题的错误来源,但现在所有相关问题似乎都在Installshield 12及更高版本之后得到了完全解决。
  • 在 GUI 中很好地集成了帮助
    • 对于如此高难度的技术来说非常重要。
    • 通常非常有帮助 - 特别是对于处理常见任务。
  • 默认的二进制文件存储格式不允许真正的源代码控制或分支(与开箱即用的 WiX 不同)。我认为有一种方法可以以文本格式存储项目,但我从未使用过它。不确定它会有多有效。
  • 毫无疑问,它是迄今为止所有安装产品中错误最多的。
    • 公平地说,大多数错误都与特殊的“ Installscript MSI ”项目类型有关,该项目类型为 MSI 设置实现了自定义对话框模型(而不是被抑制的基于表的原生 GUI)。
    • 换句话说,在任何情况下都不得使用Installscript MSI项目类型。如果您仍在使用它们,请牢记这一点 - 它们特别难以正确升级(第一次部署可能没问题,但升级会中断)。其他项目类型似乎运作良好。
    • 在放弃 Installscript MSI(大多数人似乎都这样做)之后,该工具对我个人来说效果很好(虽然不是没有错误)。
  • 我对IIS 站点COM+ 应用程序的部署支持不满意。我需要的是 WiX 的灵活性和可定制性,而不是 Installshield 的易用性。根本没有足够的灵活性和控制力。
  • 支持Microsoft App-V 虚拟包和新的虚拟化技术。
    • 与普通应用程序相比,允许一些新的东西。
    • 应用程序流 - 机器上没有本地安装 - JIT。
    • 在同一台计算机上使用两个不兼容的软件。
    • 通过服务器更新。
    • 控制许可 - 最大同时用户数或将软件绑定到组/用户。
    • 快速轻松地向用户展示应用程序。
    • 更多微软营销在这里

明智的

怀斯正式退役了,但之前已经复活了。不幸的是,据我所知,这次可能有一些法律问题最终决定了它。对于这么棒的工具来说,这将是一种耻辱。它被 Altiris 收购,然后被赛门铁克收购。它现在似乎不在市场上。我仍在总结 Wise 的优点:

  • 快速简单,功能丰富。
    • 整体非常好用,功能集优秀。
    • 缺少一些(非常)高级功能,例如 IIS、高级发布管理等……
  • 面向管理员/重新打包者。
    • 比 Installshield 更少关注代码。
    • 功能独特且灵活的图形脚本编辑器。
    • 精心设计的设置配置 GUI。
  • 对于寻求快速且相对简单的方法来部署其应用程序的小型开发团队也非常有用。
  • 有时会稍微落后于最新技术(与 Installshield 相比),但相对“没有错误”。
  • 直观的 GUI,常见的东西(非常)容易。
  • 在脚本样式编辑器中很好地处理安装顺序配置和自定义操作。更多的 GUI 脚本,更少的编码。
  • 坚如磐石,很少有重大错误。
  • 帮助资源和社区支持不及 InstallShield,但仍然很好。
  • 我选择的调试和原型设计工具(快速、稳定、易于使用、出色的差异功能)。
  • 关于差异功能(允许对两个 MSI 文件进行二进制比较)。
    • 对于不同 MSI 文件的二进制差异,我尝试过的其他工具都没有接近 Wise。
    • diff 查看器的易用性和清晰度非常棒。
    • 对于企业打包而言,此类差异功能可能是工作中非常关键的部分,因为您有数百甚至数千个不同的软件包需要在许多不同的版本中进行管理。
  • 主观上:我最喜欢的打包工具。非常可靠。
    • 该工具不再可用,真是令人遗憾。
    • 我们总是希望“轮回”(我在其他一些工具中看到过看起来像 Wise 的 GUI 片段)。

WiX快速入门技巧

  • 最大的优点是文本源文件。无需将源代码存储为二进制文件,这样几乎不可能跟踪更改并进行适当的版本控制。
    • 适当的文本源在分支版本控制合并方面对开发团队产生重大影响。这是一个巨大的飞跃(在我看来,特别是对于大型公司的内部开发——流程复杂、周转速度快且开发人员众多)。
    • 对文本源文件的需求和使用是创建 WiX 工具包的核心。这是包含更多详细信息的快速且不完整的“WiX 历史记录”。推荐阅读以掌握 WiX 的基础和基本原理。
    • 一些将安装程序存储为二进制文件的部署工具最终可能会出现二进制源出现无法正确追踪的神秘问题的情况。
      • 这尤其发生在工具更新之后,它也更新了源中的格式(无论出于何种原因)。
      • 升级通常会影响数十张表和数百条记录,因此无法有效地追踪真正的问题。
      • 症状包括突然出现缓慢的构建、突然的缓慢安装速度、无法解释的编译错误,甚至是文件完全损坏等......
      • 使用 WiX,您的来源具有完全的透明度和“精简性”。如果正确完成并且可以自动更新源,它会更清洁和更可靠,但不会导致通过数十个 MSI 表进行级联更改。结合源代码控制更改很容易跟踪和(希望)理解 - 没有添加神秘的、未记录的东西。
      • 尽管如此,必须注意的是,从 WiX 3 升级到 WiX 4 源文件似乎并非易事。让我们希望这是一次性的情况。老实说,我不确定为什么会发生这种情况,而且我没有关于它的最新信息。
      • 或许可以直接从 Rob Mensching 的博客中查看真实新闻:http : //robmensching.com/blog/ 和 Bob Arnson 的博客https://www.joyofsetup.com/。互联网使之成为可能,直接从马的嘴里说出来——这有时是一个美妙的世界;-)。有传言说他们在做“海龟一路向下”。
  • 坚如磐石,很少有重大错误
    • 对于那些在其他工具中长期存在的、间歇性的、无法解释的错误而苦苦挣扎的人来说,这是天赐之物。{战争故事已删除}。
    • 甚至更好:问题实际上似乎在 WiX 中得到解决,有时在社区的帮助下 - 这对于开源工具包来说是合适的。大多数时候,核心团队似乎会处理它。
  • 功能非常丰富,但有时有点难以使用。
    • 需要时间来适应,即使你已经习惯了,事情也可能是“繁琐”的(特别是如果你没有正确使用包含的帮助工具)。
    • 它有助于使用dark.exe 反编译器工具将现有的 MSI 文件反编译为 WiX XML。这使您可以在不事先了解太多的情况下研究 WiX 源。
    • 对复杂事物(如IISCOM+SQL Server权限防火墙规则等)的出色可定制性……“一切”都是可能的,但有时会有些涉及。
    • WiX通过新的和急需的功能有效地“扩展了 Windows Installer ”。对于以前必须“推出自己的”解决方案的每个人来说,这都是一个巨大的好处——通常是为了看起来微不足道的事情(但仍然很容易出错)。
    • 这些扩展的力量怎么强调都不为过。您可以摆脱大量自行编写的复杂自定义操作,转而使用经过测试的解决方案。有适当的回滚支持!(供应商设置中一个被忽视的功能 - 根据我的经验,几乎所有这些功能 - 在中止设置后导致系统状态不干净)。
    • 我有为具有适当回滚支持的常见任务编写自定义操作的 C++ dll 的个人经验,而且工作量惊人——尤其是实际回滚功能的 QA。
  • 显着缺乏 GUI 工具,并且可用的示例很少 - 特别是对于 WiX 4。
  • 与 IntelliSense 完全集成在 Visual Studio 中。
    • 显然,WiX 4 将支持哪些版本的 Visual Studio 会有一些限制。
    • 我还没有详细信息,但您需要最新版本的 Visual Studio。我认为 Rob 和 Bob 有很好的博客文章介绍了这一点。
  • 它是免费的(!)。每个开发人员都可以构建设置。必须有人拥有它(!)。真的 ;-)。
  • 它也是开源的。
  • 你是如何开始的?(直接链接到广受好评的答案 - 令我惊讶的是)。
    • 对于基于示例的修补程序,请 尝试此代码项目文章,以快速入门如何使用 WiX (WiX 3) 创建 MSI 文件。这真的很简单(如果您知道 MSI,那是不言而喻的)。
    • 您还可以阅读这篇 WiX Stack Overflow 文章以获取更多快速入门提示。
    • 新和推荐:stackoverflow 答案显示在 Visual Studio 中创建新的 WiX 项目时编译工作 MSI 文件所需的当前最小更改:WiX 安装程序 msi 未安装使用 Visual Studio 2017 创建的 Winform 应用程序
    • 您可以使用 WiX 的 dark.exe(MSI 反编译器)将现有的 MSI 文件反编译为正确的 WiX XML 格式,然后研究它如何组合在一起。非常有用且具有教育意义 - 特别是对于高级功能。
  • 当前和未来的版本。
    • 3.1 版稳定且已发布(2017 年 5 月发布)。坚如磐石
    • 至此(2017 年 8 月),第 4 版已经开发了八年。
      • 目前尚不清楚何时可以稳定发布。
      • 这显然是一个非常重大的更新,需要对现有的 WiX 文件进行大量修改才能成功使用。
      • 在这一点上,我无法提供有关主要区别的任何细节。
      • 毫无疑问,版本 3 的稳定性和可靠性得到了保留。

高级安装程序

  • 我还没有将它用于真正的开发。
  • 非常易于使用,漂亮的图形用户界面。
  • 更新
    • 在开发测试安装期间工具本身的非常好的集成日志记录。非常令人印象深刻。
    • 也可用于其“建筑师版”中的企业重新包装
    • 功能丰富。编译各种设置并支持所有新技术(App-X、App-V 等...)
    • App-V 的支持似乎非常广泛。
    • 可以导入许多其他工具的源文件(Installshield、Inno、Wix、Wise、NSIS、Visual Studio、Desktop Bridge 等)。没有经过我的广泛测试。
  • 据我所知,以专有的文本格式存储项目。
  • 看起来很可靠,关键是通过一个良好的 GUI 隐藏了一些 MSI 复杂性,该 GUI显示直观的复选框和选项,而不是 SDK 样式标志和属性。这是一件好事,在这一点上完全从 WiX 中消失了。
  • 看起来它可能适合原型设计和测试,非常强大的 GUI 和常用功能的自动化。
  • 我想念 InstallShield 的 Release 视图及其发布标志和构建自动化设置以及其他发布管理功能(现在可以改进)。
  • 总体而言,这是一款可靠的工具,看起来最适合正在寻找一种简单方法来部署其应用程序的开发人员。在这方面类似于 Wise。
  • 实践经验太少,写多了。试试看。

其他工具

  • Orca是免费的 Windows SDK 工具,它允许打开、编辑二进制 MSI 文件并在一定程度上进行比较。它还允许其他操作,例如生成用于修改 MSI 文件的转换文件和一些其他技术操作。一个我一直喜欢安装并可用的基本工具。这里有一个更广泛的 Orca 段落讨论它的使用(向下看)。您通常必须安装 Windows SDK 才能使用 Orca(只需安装最新版本并搜索该工具)。
  • 向我推荐了一个名为“ Super Orca ”的免费工具,就像“ InstEd ”一样。我只是简单地使用了它们,但它们看起来还不错,而且它们比 Orca 更容易掌握(无需下载 Windows SDK)。
  • 而且还有很多其他的工具。以下是来自http://www.installsite.org的工具列表,说明该工具是否仍在积极维护:http: //www.installsite.org/pages/en/msi/authoring.htm(带有感谢菲尔威尔逊的链接 - 我无法恢复他的回答)。
  • 我想我还可以包含指向wikipedia 安装软件列表的链接。

工具推荐?

我不适合直接提出工具建议。但我想我可以做一些“观察”并提供一些进一步的决策链接。

对于任何认真的内部开发团队,我建议使用 WiX。在其他工具易于使用(这非常重要,有时是唯一重要的事情)的地方,WiX 在其灵活性、可扩展性、稳定性和XML 文本源文件的使用方面表现出色——其代价是在某种程度上涉及处理和。由于其免费许可证,每个开发人员都可以查看和编译源代码,并且可以轻松跟踪、恢复或批准更改。管理一个开发人员都更新单个 WiX 源的流程仍然存在挑战(与常规开发工作没有什么不同 - 没有什么是容易的)。

对于企业重新打包(诚然,这超出了 stackoverflow.com 的开发人员重点),我想目前的主要选项是Flexera AdminStudioAdvanced Installer Architect。还有其他可用的产品,并且一如既往地 installsite.org 有详细信息:工具:重新包装和企业部署

对于寻求快速简便的应用程序部署方式的小型开发团队,我猜InstallshieldAdvanced Installer是最常见的“基于 GUI”的工具。它们提供了许多功能,您将能够快速提供设置。如前所述,有时这是唯一重要的事情。事实上很多时候。但是,可以使用WiX来提供出色的安装程序,但需要更多的知识。有一个学习曲线,并且有一些严重的限制 - 特别是目前的 GUI - 但基础技术非常可靠和免费。重要的是还有 许多其他工具(列表来自http://www.installsite.org)也可能更适合您的任务 - 特别是如果它是一个只需要基本部署功能的简单应用程序。我没有提供有关这些功能强大但不太常用或已建立的工具的更多信息是“不公平的”。

我应该明确表示,我向交付内部应用程序的公司团队推荐 WiX,因为他们可以使用 WiX 提供的灵活性,并且他们还将拥有处理 WiX 复杂性的可用专业知识和技术技能。他们可以在需要时培训新人。一个非常重要的问题。除非您已经具备大量 Windows Installer 知识,否则学习 WiX 并不是一件容易的事——那么它就是小菜一碟,但仍然需要时间,因为它非常灵活并且没有更好的词:“fiddly”——它就像真的开发,你得到了真正的控制,但需要精确。一旦设置了 WiX 源,就可以梦想处理 - 你知道发生了什么。

总结一下:如果您是一个小型(或大型)第三方供应商,正在寻找一种将您的应用程序快速交付给您的客户的好方法,那么您最好使用旨在提供易用性和快速实施解决方案的商业工具数量有限的变化。特别是对于 IIS,商业工具无法提供我过去所需的灵活性。内部开发团队至少应该尝试一下 WiX。

最后提醒一句Advanced InstallerInstallShield明智的一般允许打包软件进行虚拟化。到目前为止,我不知道 WiX 中有任何功能。如果您在此处有信息,请添加评论或仅编辑此帖子。


实用技巧

如果可以选择,我通常会使用其他工具进行原型设计和 WiX 实施。您可以使用 WiX 的dark.exe(MSI 反编译器)来反编译现有的 MSI 文件。有时我在 Wise 或 InstallShield 中实现某些东西,编译 MSI 并将其反编译为 WiX 格式。然后我解除 WiX 标记并将其转储到我的主 WiX 文件中。效果很好,通常非常快。这与用于自动创建组件的heat.exe工具相结合,使我能够在经过一些练习后在不到 10 分钟的时间内打包一个巨大的 IIS 网站。之后,我拥有了 WiX 提供的完全可定制性,以及其他工具的易用性。

清理反编译的源代码不是野餐,但也不是火箭科学。需要一些 MSI 知识,您将“摆弄”一段时间。请注意,不建议下载商业工具的试用版来生成和反编译 MSI 文件。生成的 MSI 文件通常带有难以删除的功能“水印”。


一些链接

于 2009-10-10T03:22:57.270 回答
20

您应该查看免费软件Inno Setup:我使用它很长时间以来,它从未让我失望!

于 2014-04-20T22:56:36.530 回答
18

WiX 在非 .NET 方面有多好?

WiX 在设计上支持所有Windows Installer功能。Windows 安装程序早于 .NET。

就我个人而言,我更喜欢 WiX 而不是 InstallShield,因为

  • XML 文本格式允许审查提交、合并分支之间的更改
  • 构建自动化应该包括设置生成,这对于 WiX 来说很容易
  • 带有组件组定义的 wixlib 文件允许模块化设置开发。无需担心依赖项的依赖关系等。
  • 没有许可或部署问题,我们只需将 WiX 工具集包含在 SVN项目的 /tools 文件夹中

当我们使用 InstallShield 时,这些都是痛点。不过,WiX 确实有一个非常陡峭的学习曲线。

于 2009-10-09T16:35:31.713 回答
6

我已经有几年没有使用 InstallShield 了。在我的上一份工作中,我们从它转移到 NSIS 主要是因为它的二进制格式使版本控制变得困难,并且因为有几次源文件只是损坏了,没有恢复的希望。当然,这可能与SourceSafe有关!

最重要的是,它是不必要的复杂。不要误解我的意思——我们正在做一些相当复杂的安装程序,有很多条件路径、合并模块和复杂的 UI,但即便如此,它也太复杂了。

NSIS 有一个很棒的插件系统,你可以使用LogicLib 插件对它进行命令式编程,生成自动卸载文件,以及许多其他的东西。

于 2009-10-09T15:35:12.143 回答
1

我继承了一些 InstallShield (v12) 项目。这些文件都是文本/XML,因此不存在版本控制问题。我们有一台使用他们的命令行工具的构建机器,效果很好。我不喜欢的是(a)每个开发人员席位的成本和(b)错误。

Inno Setup 非常有能力/灵活,通常有多种方法可以实现目标,这导致了陡峭的学习曲线。我们比他们的最新版本落后了几个版本(由于他们的升级成本结构)。因为我们的产品在 Widows 上运行,如果我们必须切换,我可能会首先研究 Microsoft 的 MSDN 订阅附带的安装程序解决方案。

于 2009-12-12T21:08:43.490 回答