代码之家  ›  专栏  ›  技术社区  ›  Mat Nadrofsky

使用什么安装产品?InstallShield、WiX、Wise、高级安装程序等[已关闭]

  •  90
  • Mat Nadrofsky  · 技术社区  · 16 年前

    我目前正在调查如何摆脱我们目前使用的安装包(Wise Installer 9),转而使用能够处理Windows Vista、Windows7和64位系统的安装包。安装人员的本地化将是有益的,因为我们也有许多法裔加拿大客户。

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

    • 进度4GL
    • Visual Studio 2008
    • .NET精简框架3.5

    WiX InstallShield ,以及 Altiris made replacement 对于旧的Wise系统。

    InstallShield

    我只是默认去找他们吗?WiX在非。NET的东西?

    5 回复  |  直到 10 年前
        1
  •  96
  •   Stein Åsmul    7 年前

    更新,2018年8月 ,一个新的、更短的选项: How to create windows installer . 专注于总结 MSI and its major benefits 并列出 major tools available 同样 mentioning some new, trending deployment technologies .


    我曾从事软件开发工作 发布经理 , 构建工程师 , 安装开发人员 作为一个 应用程序打包器 , 部署工程师 (SCCM)在大公司。

    在此过程中,我使用了大多数主要的打包工具(有些有许多不同的版本): InstallShield , 明智 (不幸的是,场外市场), WiX , Advanced Installer (只是测试), Orca 我已经测试过了 some other tools (链接到 “Windows Installer开发者创作工具 “从 http://www.installsite.org -相当详尽的工具列表)。我还使用了不太常见的打包和部署工具,如Computer Associates Unicenter——现在可能已经停产了。还有一个页面 Non-MSI Setup Authoring Tools .

    更新 :如果您发现自己需要一个MSI工具来比较两个MSI文件版本,或者只是从MSI文件中提取信息,您可能需要阅读以下答案: How can I compare the content of two (or more) MSI files? (专注于免费的MSI工具)。

    本文概述了 一些不同创作工具的优点 需要注意的一些障碍 尽管它们有很多相似之处,但这些工具实际上却大不相同。所有的努力都是为了使描述尽可能客观——用积极和消极来描述现实世界的体验。


    相关部署主题


    安装向导

    • 功能丰富。
    • 始终掌握最新技术。
    • (设置)面向开发人员。
      • 有不同的版本可供选择。
    • 发布管理 , 本地化 自动化功能
      • 对于 复杂产品 发布管理可能是InstallShield的主要卖点。您可以轻松交付各种口味:语言版本、oem版本、查看器、应用程序版本等……使用 释放标志
      • 释放旗帜
      • The release view in Installshield 允许您全面了解所有不同的设置类型和版本。你看到了一切 语言版本 以及为网络(一个大型设置文件)或可再分发媒体(外部源文件)以及您交付的任何其他版本提供的发布设置。
        • 对于每个版本和版本,你都可以 覆盖重要设置 例如产品名称、产品版本、包、产品和升级代码,以及许多其他必须根据产品版本和语言版本动态更改的必需设置。
      • 因为产品允许它很容易” “从 构建自动化脚本 各种类型。
        • 命令行构建模块 (用于专用构建服务器)。
        • 使用常规的VBScript/VBA/Javascript自动化,可以轻松实现整套产品和版本的完全自动化构建。
      • 全面本地化支持 字符串表 用于支持不同的设置语言。
        • 基础对话框也提供多种语言的现成版本(额外收费)。
        • 您只需要本地化自己的设置内容(功能列表标题、任何自定义对话框或消息框、带文本的图像等),这仍然是一项艰巨的工作。
        • 你可以提供一个庞大的多语言设置。根据我的经验,不建议这样做 several reasons
    • User Community Forums .
    • 功能齐全的MSI-GUI编辑器。
      • 底层MSI技术的GUI功能的局限性会导致一些障碍和恼人的限制,但这对所有部署工具都是一样的。
      • 根本原因是MSI GUI是使用MSI文件本身内的数据表实现的,与正确Win32对话框的完整“事件模型”相比,这导致了对话框事件的严重限制。
    • C风格脚本语言 对于名为“”的自定义操作 安装脚本 ".
      • Installscript现在可以编译为本机模式,也可以使用自己的沙盒进行模拟,但不确定是哪一种。有 就像你以前必须做的那样。
      • 顺便说一句,这个运行时是一些 棘手的部署问题 由于 运行时损坏 -似乎经常与DCOM相关 各种不兼容性 在不同的运行时版本之间。以下是一些用于“传统目的”的故障排除链接:
      • 虽然运行时是一个非常有问题的错误来源,但现在似乎所有相关的问题都已经 自Installshield 12以来已完全解决 然后。
    • GUI中集成良好的帮助 .
      • 对于如此困难的技术来说非常重要。
      • 通常非常有用,尤其是在处理常见任务时。
    • 默认二进制文件存储格式
    • 毫无疑问,这是迄今为止所有安装产品中最麻烦的。
      • 安装脚本MSI “为MSI设置实现自定义对话框模型的项目类型(而不是被抑制的基于表的本机GUI)。
      • 换言之 安装脚本MSI 不能 在任何情况下都可以使用。如果你仍然使用它们,请记住这一点——它们特别难以正确升级(第一次部署可能没问题,但升级会中断)。其他类型的项目似乎运行良好。
      • 在放弃了Installscript MSI(大多数人似乎都这么做了)之后,该工具对我个人来说运行得很好(但并非没有bug)。
    • 我曾 对部署的支持感到满意 COM+应用程序 。我需要选择WiX的灵活性和可定制性,而不是Installshield的易用性。根本没有足够的灵活性和控制权。
    • 支持 Microsoft App-V virtual packages 以及新的虚拟化技术。
      • 与普通应用程序相比,允许一些新功能。
      • 应用程序流式传输-机器上没有本地安装-JIT。
      • 在同一台计算机上使用两个不兼容的软件。
      • 通过服务器进行更新。
      • 控制许可-最大限度地同时使用用户或将软件绑定到组/用户。
      • 快速轻松地向用户展示应用程序。
      • More Microsoft marketing here .

    明智

    Wise正式退休 ,但它以前已经复活了。不幸的是 some legal issues 据我所知,这次可能是最后一次。对于这样一个伟大的工具来说,这将是一种耻辱。它被Altiris收购,然后是赛门铁克。现在看来是 off market 。我仍然在总结Wise的优秀功能:

    • 快速简单,功能丰富。
      • 总体而言,易用性很好,功能集很好。
      • 缺少一些(非常)高级功能,如IIS、高级发布管理等。。。
    • 面向管理员/重新打包人员。
      • 比Installshield更少关注代码。
      • 设计良好的设置配置GUI。
    • 也非常适合 寻找一种快速且相对简单的方法来部署他们的应用程序。
    • 直观的图形用户界面,常见的东西(非常)容易。
    • 在脚本样式编辑器中很好地处理了安装顺序配置和自定义操作。更多的GUI脚本,更少的编码。
    • 坚如磐石 ,很少有重大错误。
    • 我选择的调试和原型制作工具 (快速、稳定、易于使用、差异很大)。
    • 关于diff特性(允许对两个MSI文件进行二进制比较)。
      • 对于不同MSI文件的二进制差异,我尝试过的其他工具都无法与Wise相提并论。
      • diff查看器的易用性和清晰度同样出色。
      • 对于企业打包来说,这些差异功能可能是这项工作的一个非常关键的部分,因为您需要在许多不同的版本中管理数百甚至数千个不同的软件包。
    • 在一个 主观音符 :我最喜欢的包装工具。非常可靠。
      • 该工具不再可用,这确实令人遗憾。
      • 我们总是希望“转世”(我在其他一些工具中看到过看起来像Wise的GUI片段)。

    维克斯 ( quick-start tips )

    • 最大的好处是 文本源文件 在几乎不可能跟踪更改和进行适当的版本控制的情况下,不需要将源代码存储为二进制文件。
      • 适当的文本来源对开发团队来说至关重要,因为 分支 , 合并 这是一个巨大的飞跃(在我看来,尤其是对于大公司的内部开发来说——流程复杂,周转快,而且有很多开发人员)。
      • 对文本源文件的需求和使用是创建WiX工具包的核心。这是一个 quick and incomplete "WiX history" 更多细节。建议阅读以掌握WiX的基础和原理。
        • 这尤其发生在工具更新之后,工具更新也更新了源代码中的格式(无论出于什么原因)。
        • 升级通常会影响数十个表和数百条记录,因此无法有效地追踪真正的问题。
        • 症状包括突然出现的构建速度慢、安装速度突然慢、无法解释的编译错误,甚至文件完全损坏等。。。
        • 使用WiX,您可以完全透明和“精简”您的来源。如果操作得当,它会更干净、更可靠,并且可以自动更新源代码,但不会导致数十个MSI表的级联变化。结合源代码管理更改,可以很容易地跟踪和(希望)理解——没有添加神秘、未记录的内容。
        • 尽管如此,必须指出的是,从WiX 3升级到WiX 4的源文件似乎
        • 也许可以直接从Rob Menshing的博客中查看真实新闻: http://robmensching.com/blog/ Bob Arnson的博客 https://www.joyofsetup.com/ 互联网使之成为可能,这简直是一个美妙的世界;-).有传言说他们正在做“ turtles all the way down ".
    • .
      • 对于那些在其他工具中长期存在、间歇性、无法解释的错误的人来说,这是天赐之物。{战争故事已删除}。
      • 更妙的是:问题似乎在WiX中得到了解决,有时在社区的帮助下——这对于开源工具包来说是合适的。但大多数时候,核心团队似乎都在处理这件事。
    • 非常 功能丰富
      • 需要时间来适应,即使你已经习惯了,事情也可能会变得“棘手”(特别是如果你没有正确使用附带的辅助工具)。
      • 它有助于使用 dark.exe反编译工具 将现有的MSI文件反编译为WiX XML。这使您可以在事先不了解太多的情况下研究WiX源。
      • 复杂事物的卓越可定制性 例如 IIS , COM+ , SQL Server , 许可 , 防火墙规则 等等。。。 “一切皆有可能”,但有时会有一些牵涉。
      • WiX有效” 扩展Windows安装程序 “具有新的和急需的功能。这对以前不得不“推出自己的”解决方案的每个人来说都是一个巨大的好处——通常是针对看似微不足道的事情(但仍然很容易出错)。
      • 经过测试的解决方案 .与 !(在供应商设置中,这是一个被忽视的功能——根据我的经验,几乎所有供应商都是如此——导致设置中止后系统状态不干净)。
    • 明显缺乏GUI工具,可用的好样本也很少,尤其是对于WiX 4。
      • 显然,对于WiX 4将支持哪些版本的Visual Studio,将会有一些限制。
      • 我还没有详细信息,但你需要一个最新版本的Visual Studio。我认为Rob和Bob在博客上写了很多关于这件事的好文章。
    • 它是免费的 (!).每个开发人员都可以构建设置。必须有人拥有它(!)。真正地;-).
    • Open Source 我也是。
    • How do you get started?
    • 当前和未来版本。
      • 是稳定的(2017年5月发布)。 坚如磐石 .
      • 版本4 到目前为止(2017年8月)已经发展了八年。
        • 非常重要的更新 这需要对现有的WiX文件进行大量的返工才能成功使用。
        • 目前,我无法提供任何关于主要差异的细节。
        • 毫无疑问,版本3的稳定性和可靠性得到了保留。

    安装包制作

    • 我没有把它用于真正的发展。
    • 更新 :
      • 综合测井
      • 也可用于 企业重新包装 在其“ 建筑师版 ".
      • 功能丰富 .编译各种设置并支持所有新技术(App-X、App-V等)
      • 支持 App-V 看起来非常广泛。
      • 导入 许多其他工具的源文件(Installshield、Inno、Wix、Wise、NSIS、Visual Studio、Desktop Bridge等)。我没有进行广泛的测试。
    • 据我所知,以专有文本格式存储项目。
    • 看起来很稳固,而且至关重要 它显示直观的复选框和选项,而不是SDK样式的标志和属性。这是一件好事,目前WiX完全没有。
    • 看起来它可能适合原型设计和测试,非常强大的GUI和 自动化 用于常用功能。
    • 我怀念InstallShield的发布视图,它有发布标志、构建自动化设置以及其他发布管理功能(现在可以改进)。
    • 总体a 那看起来 最适合寻求简单方法部署应用程序的开发人员 在这方面与Wise相似。
    • 实际经验太少,无法写更多。试试看。

    其他工具


    工具建议?

    我无权直接推荐工具。但我想我可以做一些“观察”,并为决策提供一些进一步的链接。

    对于任何认真的内部开发团队,我建议使用WiX。 在其他工具易于使用的情况下(这非常重要,有时是唯一重要的事情),WiX在灵活性、可扩展性、稳定性和

    对于 企业重新包装 (诚然,这有点超出了stackovoverflow.com的开发人员关注点)我想目前的主要选择是 Flexera管理工作室 高级安装架构师 .还有其他产品可供选择,一如既往,installsite.org提供了详细信息: Tools: Repackaging & Corporate Deployment .

    对于 我想,他们正在寻找一种快速简单的方法来部署他们的应用程序 安装向导 安装包制作 是最常见的“基于GUI”的工具。它们提供了很多功能,您将能够快速交付设置。正如前文所述,有时这是唯一重要的事情。事实上,很多时候。然而,使用以下命令可以交付一个出色的安装程序 维克斯 相反,但需要更多的知识。有一个学习曲线,也有一些严重的局限性,特别是在目前的GUI方面,但基础技术非常坚实和自由。重要的是,有 many other tools (列表来自 http://www.installsite.org )此外,这可能更适合您的任务,特别是如果它是一个只需要基本部署功能的简单应用程序。我没有提供更多关于这些功能强大但不太常用或不太成熟的工具的信息,这是“不公平的”。

    我应该明确表示,我推荐WiX 提供内部应用程序的公司团队 因为他们可以使用WiX提供的灵活性,而且他们还将拥有 可用的专业知识和技术技能 以应对WiX的复杂性。他们可以在需要时训练新人。一个非常重要的问题。除非你已经掌握了很多Windows Installer知识,否则学习WiX并不容易——那么它是小菜一碟,但仍然需要时间,因为它非常灵活,而且缺乏一个更好的词:“繁琐”——这就像真正的开发,你有真正的控制权,但需要精确。一旦建立了WiX源,处理它可能是一个梦想——你知道发生了什么。

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

    最后提醒一下 : 安装包制作 , 安装向导 明智 通常允许打包软件 虚拟化 到目前为止,我还不知道WiX中有什么功能。如果您在此处有信息,请添加评论或编辑此帖子。


    顶级实用技巧 :

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

    清理反编译的源代码并非易事,但也不是什么高深莫测的科学。需要一些MSI知识,你会“摆弄”一段时间。请注意,不建议下载商业工具的试用版来生成和反编译MSI文件。由此产生的MSI文件通常带有难以删除的特征的“水印”。


    一些链接 :

        2
  •  18
  •   Peter Mortensen Pieter Jan Bonestroo    10 年前

    你应该看看免费软件 Inno Setup :我用了很长时间,它从来没有让我失望!

        3
  •  8
  •   Peter Mortensen Pieter Jan Bonestroo    10 年前

    WiX在非。NET的东西?

    WiX支持所有 Windows Installer 设计特色。Windows安装程序早于此。网。

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

    • XML文本格式允许 回顾 提交、合并 之间的变化 分支
    • 构建自动化 应包括设置 生成,使用WiX很容易
    • 带有组件组的wixlib文件 模块化设置 无需担忧 依赖关系的依赖性, 等等
    • 没有许可或部署方面的麻烦, 我们只是将WiX工具集包含在 SVN

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

        4
  •  5
  •   Peter Mortensen Pieter Jan Bonestroo    10 年前

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

    除此之外,它还变得不必要地复杂。不要误会我的意思——我们正在做一些相当复杂的安装程序,有很多条件路径、合并模块和复杂的UI,但即使是这样,它也太复杂了。

    NSIS有一个很棒的插件系统,您可以使用 LogicLib plugin ,有 automatic uninstall files 生成,以及许多其他东西。

        5
  •  1
  •   Peter Mortensen Pieter Jan Bonestroo    10 年前

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