使用什么安装产品? InstallShield,WiX,Wise,Advanced Installer等

What installation product to use? InstallShield, WiX, Wise, Advanced Installer, etc

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

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

  • 进步4GL
  • Visual Studio 2005
  • Visual Studio 2008
  • .NET Compact Framework 3.5

我已经看过WiX和InstallShield,Altiris还替换了旧的Wise系统。

我还没有玩过很多关于InstallShield的东西,但是从我见过/安装过的所有东西来看,它似乎都是业界的最爱之一。我浏览了一些与InstallShield相关的Stack Overflow标签,我很想知道该组织对此有何看法。

我是否只是默认情况下去找他们? WiX在非.NET的东西有多好?


UPDATE, Aug.2018, a new and shorter option: How to create windows installer.
Focused on summarizing MSI and its major benefits and to list the major tools available (with download links), as
well as mentioning some new, trending deployment technologies.

Ok.

我曾在大型企业担任过发布经理,构建工程师,安装开发人员以及作为应用程序包装程序,SOE工程师和部署工程师(SCCM)的软件开发人员。

在此过程中,我使用了大多数主要的打包工具(一些在许多不同的版本中):InstallShield, Wise (不幸的是,市场上),WiX,高级安装程序(仅测试),Orca和我已经测试了一些其他工具(链接到http://www.installsite.org的"Windows Installer Authoring Tools for Developers" - 一个相当详尽的工具列表)。我还使用了不太常见的打包和部署工具,如Computer Associates Unicenter - 可能现在已经上市。非MSI设置创作工具上还有一个页面。

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

这篇文章概述了一些不同的创作工具的优点以及一些需要注意的障碍。尽管它们有相似之处,但这些工具实际上却完全不同。所有的尝试都是为了使描述尽可能客观 - 用积极和消极的方式描述现实世界的经验。

相关部署主题

  • 在深入研究不同工具之前,这里有一些其他链接,其中包含有关MSI技术本身的信息。
  • 以下是部署工具中常用的部署任务的一般说明,以及部署似乎变得越来越复杂的原因说明。
  • 很多人似乎认为MSI比它的价值更麻烦,有时这是可以理解的。好处是真实的 - 特别是对于企业部署,但一些问题也是如此。

  • 这是我写的关于MSI的主要公司利益的描述(来自serverfault.com)。这篇文章增长得太多了,但希望仍然具有相关性。
  • 在同一篇文章中,我写了一篇关于MSI文件中典型的现实设计缺陷的文章(这项工作正在进行中 - 只是经历"软件的两面"的"内存转储":开发和部署)。
  • 的InstallShield

  • 功能丰富。
  • 始终与最新技术保持同步。
  • (设置)面向开发人员。

  • 提供不同版本。
  • 旗舰产品AdminStudio提供了面向设置开发人员的工具以及面向重新定位器的工具。
  • 非常好的发布管理,本地化和自动化功能,用于构建流程自动化至少比竞争对手好。

  • 对于复杂的产品,发布管理可能是InstallShield的主要卖点。您可以轻松地提供各种风格:语言版本,oem版本,查看器,应用程序版本等...使用发布标志和类似结构。
  • 发布标志主要用于从每个编译设置中有条件地排除或包含产品的某些部分 - 这通常是制作专业设置系列时所要求的很大一部分。
  • Installshield中的发布视图允许全面概述所有不同的安装类型和版本。您可以看到为Web(一个大型安装文件)或可再发行媒体(外部源文件)以及您提供的任何其他风格提供的所有语言版本和发布设置。

  • 至关重要的是,每个版本和版本都可以覆盖重要设置,例如产品名称,产品版本,软件包,产品和升级代码以及必须根据产品版本和语言版本动态更改的许多其他必需设置。
  • 在许多其他产品中,这种类型的发布和版本管理可能更难实现。对于更简单的设置,这种灵活性可能不那么重要。
  • 该产品的自动化API允许从各种类型的构建自动化脚本轻松"远程控制"它。

  • 还有命令行构建模块(用于专用构建服务器)。
  • 使用常规VBScript / VBA / Javascript自动化,可以轻松实现整套产品和版本构建的完全自动化。
  • 使用字符串表完全本地化支持,用于支持不同的安装语言。

  • 基本对话框也以多种语言提供现成的(额外费用)。
  • 您只需要本地化您自己的设置内容(功能列表标题,任何自定义对话框或消息框,带文本的图像等) - 仍然需要做很多工作。
  • 您可以提供庞大的多语言设置。由于以下几个原因,我不建议这样做(阅读本地化部分)。最糟糕的问题是您必须本地化所有语言中的所有新内容和更改内容,然后才能提供英文版本。这对营销/销售来说几乎是不可接受的。并且总有一些修复需要您重建和重新发布单一语言,然后您希望在没有UAT和QA的情况下为所有其他语言执行此操作。最好为每种语言提供单独的构建(易于实现)。
  • 良好的社区支持:用户社区论坛。
  • 非常好的GUI,常见的东西相当容易。
  • 完整的MSI-GUI编辑器。

  • 很强大。有点复杂。
  • 底层MSI技术的GUI功能的局限性会导致一些障碍和烦人的限制,但对于所有部署工具来说都是如此。
  • 根本原因是MSI GUI是使用MSI文件本身内部的数据表实现的,与正确的Win32对话框的完整"事件模型"相比,这会导致对话事件的严重限制。
  • 用于自定义操作的全功能C风格脚本语言,称为"Installscript"。

  • Installscript现在编译为native - 或者使用自己的沙箱进行模拟,不知道哪个。无需像以前那样安装运行时。
  • 顺便提一下,由于运行时损坏(似乎经常与DCOM相关)以及不同运行时版本之间的各种不兼容性,此运行时是一些相当棘手的部署问题的根源。以下是"遗留目的"的一些故障排除链接:

  • 无法安装InstallShield脚本运行时。
  • 安装程序无法查找或更新ISScript.msi。
  • Flexera Consumer Central(针对最终用户设置问题)。
  • 虽然运行时是一个非常有问题的错误来源,但现在所有相关问题似乎已经完全解决,因为Installshield 12及更高版本。
  • 在GUI中很好地集成了帮助。

  • 对于如此困难的技术非常重要。
  • 通常非常有用 - 特别是对于处理常见任务。
  • 默认的二进制文件存储格式不允许真正的源代码控制或分支(与开箱即用的WiX不同)。我认为有一种方法可以以文本格式存储项目,但我从未使用它。不确定它会有多有效。
  • 毫无疑问,到目前为止,所有安装产品都是最大的。

  • 公平地说,大多数错误都与特殊的"Installscript MSI"项目类型有关,该项目类型实现了MSI设置的自定义对话框模型(而不是被抑制的本机基于表的GUI)。
  • 换句话说,在任何情况下都不得使用Installscript MSI项目类型。如果您仍然使用它们,请记住这一点 - 它们特别难以正确升级(第一次部署可能没问题,但升级正在破坏)。其他项目类型似乎运作良好。
  • 在放弃Installscript MSI(大多数人似乎都这样做)之后,该工具对我个人而言非常好(尽管不是无bug)。
  • 我对IIS站点和COM +应用程序的部署支持感到不满意。我需要为WiX的灵活性和可定制性而不是Installshield的易用性。根本没有足够的灵活性和控制可用。
  • 支持Microsoft App-V虚拟包和新的虚拟化技术。

  • 与普通应用程序相比,允许一些新东西。
  • 应用程序流 - 机器上没有本地安装 - JIT。
  • 在同一台计算机上使用两个不兼容的软件。
  • 通过服务器更新。
  • 控制许可 - 最大化同时用户或将软件与组/用户联系起来。
  • 快速,轻松地向用户展示应用程序。
  • 更多微软营销在这里。
  • <删除>怀斯

    Wise正式退役,但之前已经复活了。不幸的是,一些法律问题可能使这次成为最终 - 我所知道的一切。对于这样一个伟大的工具来说,这将是一种耻辱。它被Altiris和赛门铁克收购。它现在似乎是在市场上。我仍然留在好的Wise功能的摘要中:

  • 快速简便,功能丰富。

  • 整体易用性非常好,功能设置非常出色。
  • 缺乏一些(非常)高级功能,如IIS,高级版本管理等......
  • 管理员/重新打包者。

  • 比Installshield更少的代码集中。
  • 功能独特且灵活的图形脚本编辑器。
  • 精心设计的安装配置GUI。
  • 对于寻求快速且相对简单的方式来部署应用程序的小型开发团队来说也是非常好的。
  • 有时与最新技术略有滞后(与Installshield相比),但相对"无bug"。
  • 直观的GUI,常见的东西(非常)容易。
  • 在脚本样式编辑器中非常好地处理安装顺序配置和自定义操作。更多的GUI脚本,更少的编码。
  • 坚如磐石,很少有重大错误。
  • 帮助资源和社区支持与InstallShield不相上下,但仍然很好。
  • 我的调试和原型设计的选择工具(快速,稳定,易于使用,伟大的差异功能)。
  • 并且关于diff功能(允许两个MSI文件的二进制比较)。

  • 没有其他工具我已经尝试接近Wise的不同MSI文件的二进制差异。
  • 差异查看器的易用性和清晰度同样出色。
  • 对于企业包装而言,这些差异功能可能是工作中非常关键的一部分,因为您可以在许多不同版本中管理数百甚至数千种不同的软件包。
  • 在主观上注意:我最喜欢的包装工具。非常可靠。

  • 令人遗憾的是该工具已不再可用。
  • 我们总是希望"转世"(我已经看过在其他一些工具中看起来像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源的情况下研究WiX源。
  • 对IIS,COM +,SQL Server,权限,防火墙规则等复杂事物的异常可定制性......
    "一切"都是可能的,但有时会有所涉及。
  • WiX通过新的和急需的功能有效地"扩展了Windows Installer"。对于之前不得不"推出自己的"解决方案的每个人来说,这都是一个巨大的好处 - 通常用于看似微不足道的事情(但仍然非常容易出错)。
  • 这些扩展的力量不容小觑。您可以摆脱许多自编,复杂的自定义操作,转而使用经过测试的解决方案。有适当的回滚支持! (供应商设置中一个被忽视的功能 - 根据我的经验,几乎所有这些功能 - 在中止设置后导致不洁的系统状态)。
  • 我有个人使用C ++ dll编写带有适当回滚支持的常见任务的自定义操作的经验,而且工作量惊人 - 尤其是实际回滚功能的QA。
  • 显着缺乏GUI工具和很少的好样本 - 特别是对于WiX 4。

  • 事情似乎在改善,或许可以尝试这个简短的总结。
  • 一个有趣的项目可能是IsWiX。值得一试。

  • WiX教程:https://github.com/iswix-llc/iswix-tutorials
  • 快速Youtube演示:https://www.youtube.com/watch?v = nnV_OU6fk8c
  • 我已经过时了,如果您有更新的信息,请帮助更新。
  • Visual Studio与IntelliSense完全集成。

  • 显然,对于WiX 4将支持哪些版本的Visual Studio会有一些限制。
  • 我还没有详细信息,但您需要最新版本的Visual Studio。我认为Rob和Bob有很好的博客文章。
  • 免费 (!)。每个开发人员都可以构建设置。有人必须拥有它(!)。真的;-)。
  • 它也是开源的。

  • "社区":https://github.com/wixtoolset。并且公开的问题:https://github.com/wixtoolset/issues/issues
  • 工具包下载也包括DTF(部署工具基础)。用于通过自动化处理所有MSI文件的.NET类。在此处查看内联示例。非常有用和优质。没有COM互操作来处理。请参阅此serverfault.com帖子。和Chris Painter的博客。
  • 你是如何开始的? (直接链接到一个受到好评的答案 - 令我惊讶)。

  • 对于基于样本的修补程序,请尝试使用此代码项目文章,以快速了解如何使用WiX(WiX 3)创建MSI文件。它非常简单(如果你知道MSI它是不言而喻的)。
  • 您还可以阅读此WiX StackOverflow文章,以获取更多快速入门提示。
  • 新建和推荐:stackoverflow答案显示在Visual Studio中创建新的WiX项目时编译工作MSI文件所需的当前最小更改:WiX安装程序msi未安装使用Visual Studio 2017创建的Winform应用程序。
  • 您可以使用WiX的dark.exe(MSI反编译器)将现有的MSI文件反编译为正确的WiX XML格式,然后研究它如何组合在一起。非常有用和教育 - 特别是对于高级功能。
  • 当前和未来版本。

  • 版本3.1稳定并且已经发布(2017年5月发布)。坚如磐石。
  • 此时版本4已经发展了8年(2017年8月)。

  • 目前尚不清楚它何时可用于稳定释放。
  • 它显然是一个非常重要的更新,需要对现有WiX文件进行大量返工才能成功使用。
  • 我无法提供有关此时主要差异的详细信息。
  • 毫无疑问,版本3的稳定性和可靠性得以保留。
  • 高级安装程序

  • 我没有用它来进行真正的开发。
  • 非常好用,很好的GUI。
  • 更新:

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

  • 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(with感谢Phil Wilson的链接 - 我无法复活他的回答。
  • 我想我还可以包含一个指向维基百科安装软件列表的链接。
  • 工具建议?

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

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

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

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

    我应该明确表示,我推荐WiX供企业团队提供内部应用程序,因为他们可以利用WiX提供的灵活性,他们还将拥有可用的专业知识和技术技能来应对WiX的复杂性。他们可以在需要时培训新人。一个非常重要的问题。除非你已经掌握了很多Windows安装程序的知识,否则WiX并不是一件容易的事情 - 然后它是小菜一碟,但仍然需要时间,因为它非常灵活,而且缺乏一个更好的词:"fiddly" - 就像真实一样开发,你有真正的控制,但需要精确。一旦设置好WiX源就可以成为一个梦想 - 你知道发生了什么。

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

    最后要提醒一句:Advanced Installer,InstallShield和 Wise 通常允许打包软件进行虚拟化。到目前为止,我还没有发现WiX的任何功能。如果您有这方面的信息,请添加评论或编辑此帖子。

    最实用的提示:

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

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

    一些链接:

  • 如何创建Windows安装程序
  • 部署工具的候选清单
  • 较旧的内容
  • 好。


    How good is WiX at non-.NET stuff?

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

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

    • XML文本格式允许审查
      提交,合并之间的变化
      分支机构
    • 构建自动化应包括设置
      生成,使用WiX很容易
    • 带组件组的wixlib文件
      定义允许模块化设置
      发展。无需担心
      依赖关系的依赖关系,
      等等
    • 没有许可或部署问题,
      我们只需要包含WiX工具集
      我们项目的一个/ tools文件夹
      SVN

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


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


    我在几年内没有使用过InstallShield。在我上一份工作中,我们从它转移到NSIS主要是因为它的二进制格式使版本控制变得困难,并且因为源文件几次简单地被破坏,没有恢复的希望。那可能与SourceSafe有关!

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

    NSIS有一个很棒的插件系统,你可以使用LogicLib插件强制编程,生成自动卸载文件,还有很多其他的东西。


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

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