使用什么安装产品?InstallShield,WiX,Wise,高级安装程序等


69

我目前正在做一些调查,以移出当前使用的安装包(Wise Installer 9),并移至可以处理Windows Vista,Windows 7和64位系统之类的东西。安装程序的本地化将是有益的,因为我们也有许多加拿大的法国客户。

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

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

我已经研究过WiXInstallShield,并且Altiris替代了旧的Wise系统。

我还没有玩过InstallShield,但从我所见/安装的所有内容来看,它似乎是业界最受欢迎的游戏之一。我浏览了一些与InstallShield相关的Stack Overflow标签,并且很好奇该小组对此有何评论。

我是否默认情况下会去找他们?WiX在非.NET方面的表现如何?



18
我一直感到惊奇的是,如何在Stackoverflow的每个地方都将与您开发的解决方案到目标计算机的部署相关的所有内容标记为“主题外”。将您开发的应用程序提供给最终用户是交付软件的关键部分!停止干涉试图在此过程中寻求帮助的人。查看答案获得的好评数量(相对较少的文章浏览量)。确实有人在寻找这些信息。
SteinÅsmul'17

1
谢谢伊维特。只要有相关内容,我就会尽力维护。这是一种尝试写书中找不到的信息的尝试-但是人们需要做出明智的决定,以如何将软件提供给最终用户-“尽最大努力”而不声称“正确”。“尝试的客观性”-为什么这个“术语”会让我发笑?:-)-显然是因为-出于种种自命不凡的态度-这意味着有缺陷的专业人士只能提供愿意提供帮助的诚实,明智的见解。我是一个“务实的领域”-不仅仅是“该领域的专家”。
SteinÅsmul18年

Answers:


137

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


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

在此过程中,我使用了大多数主要的打包工具(有些版本很多):InstallShield明智的(不幸的是,不在市场上),WiX高级安装程序(只是测试),Orca和我已经测试了其他一些工具(从http://www.installsite.org链接到“开发人员的Windows Installer创作工具” -相当详尽的列表)工具)。我还使用了不太常见的打包和部署工具,例如Computer Associates Unicenter-现在可能已经退出市场。在非MSI设置创作工具上也有一个页面。

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

这篇文章概述了一些不同的创作工具的优点以及一些需要注意的地方。尽管具有所有相似之处,但这些工具实际上是完全不同的。尽一切努力使描述尽可能客观-用正面和负面描述现实世界的经验。


相关部署主题

  • 在深入研究各种工具之前,这里有一些其他链接,其中包含有关MSI技术本身的信息。
  • 这是部署工具通常支持的部署任务的一般说明,并说明为什么部署似乎变得越来越复杂。
  • 许多人似乎认为MSI麻烦多于其价值,有时这是可以理解的。好处是实实在在的-特别是对于公司部署,但是其中一些问题也是如此。

InstallShield

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

明智的

Wise已正式退休,但之前已复活。不幸的是,就我所知,一些法律问题可能使这次决定最终化了。对于如此出色的工具,这将是可耻的。它被Altiris和Symantec收购。现在看来已经不在市场上了。我仍然保留Wise功能的摘要:

  • 快速简便,功能丰富。
    • 总体来说,它非常易于使用,功能强大。
    • 缺少某些(非常)高级功能,例如IIS,高级版本管理等。
  • 面向管理员/重新打包者。
    • 与Installshield相比,更少关注代码。
    • 功能独特且灵活的图形脚本编辑器。
    • 设计良好的设置配置GUI。
  • 对于寻求快速且相对简单的方法来部署其应用程序的小型开发团队而言,它也非常出色。
  • 有时与最新技术相比(与Installshield相比)略有滞后,但相对而言“无错误”。
  • 直观的GUI,常见的事情(非常)容易。
  • 在脚本样式编辑器中非常好地处理了安装顺序配置和自定义操作。更多的GUI脚本,更少的编码。
  • 坚如磐石,几乎没有重大错误。
  • 帮助资源和社区支持与InstallShield不相上下,但仍然不错。
  • 我选择的用于调试和原型制作的工具(快速,稳定,易于使用,出色的diff功能)。
  • 关于差异功能(允许对两个MSI文件进行二进制比较)。
    • 对于不同的MSI文件的二进制差异,我尝试过的其他工具都没有接近Wise。
    • 差异查看器的易用性和清晰度不俗。
    • 对于企业包装,这种差异功能可能是工作中非常关键的部分,因为您需要数百甚至数千个不同的软件包来管理许多不同的版本。
  • 在一个主观注:我最喜欢的打包工具。非常可靠。
    • 真遗憾的是该工具不再可用。
    • 我们总是可以希望有一个“轮回”(在其他一些工具中,我看到过像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源。
    • 对于复杂的事物(如IISCOM +SQL Server许可防火墙规则等)具有出色的可定制性。“一切”都是可能的,但有时会涉及到。
    • WiX具有新的和急需的功能,可以有效地“扩展Windows Installer ”。对于以前不得不“推出自己的”解决方案的每个人来说,这都是一个巨大的好处-通常是为了看似琐碎的事情(但仍然很容易出错)。
    • 这些扩展的功能不能被夸大。您可以摆脱许多自写的,复杂的自定义操作,而使用经过测试的解决方案。有适当的回滚支持!(根据我的经验,供应商设置中的一个被忽略的功能-几乎所有功能-在中止设置后都会导致系统状态不干净)。
    • 我有编写具有自定义操作的C ++ dll的个人经验,并具有适当的回滚支持,用于常见任务,并且工作量令人吃惊-尤其是实际回滚功能的QA。
  • 显着缺乏GUI工具,并且几乎没有很好的示例,尤其是对于WiX 4。
  • 与IntelliSense完全集成在Visual Studio中。
    • 显然,WiX 4将支持哪些版本的Visual Studio,会有一些限制。
    • 我没有详细信息,但是您将需要Visual Studio的最新版本。我认为Rob和Bob都有很好的博客文章。
  • 它是免费的(!)。每个开发人员都可以构建设置。有人必须拥有它!真的;-)。
  • 它也是开源的
  • 你是如何开始的?(直接链接到一个广为接受的答案-让我惊讶)。
  • 当前和将来的版本。
    • 3.1版稳定且已发布(2017年5月发布)。坚如磐石
    • 目前,第4版的开发已有八年时间(2017年8月)。
      • 目前尚不清楚何时可以将其稳定发布。
      • 显然,这将是非常重要的更新,需要对现有WiX文件进行大量修改才能成功使用。
      • 在这一点上,我无法提供任何细节。
      • 无疑保留了版本3的稳定性和可靠性。

高级安装程序

  • 我没有将其用于实际开发。
  • 非常易于使用,漂亮的GUI。
  • 更新
    • 在开发测试安装过程中,工具本身具有非常好的集成日志记录。非常令人印象深刻。
    • 也可在其“建筑师版”中用于公司重新包装
    • 功能丰富。编译各种设置并支持所有新技术(App-X,App-V等)
    • App-V的支持似乎非常广泛。
    • 可以导入许多其他工具的源文件(Installshield,Inno,Wix,Wise,NSIS,Visual Studio,Desktop Bridge等)。没有经过我的广泛测试。
  • 据我所知,项目以专有文本格式存储。
  • 看起来很扎实,并且通过一个良好的GUI(它显示了直观的复选框和选项而不是SDK样式的标志和属性)来关键地隐藏了MSI的某些复杂性。这是一件好事,目前,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/zh-cn/msi/authoring.htm(带有感谢Phil Wilson的链接-我无法复活他的回答)。
  • 我想我也可以包含指向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并非易事-虽说是小菜一碟,但仍然需要时间,因为它是如此的灵活并且缺少更好的词:“ fidd”-就像真实的一样开发中,您得到了真正的控制,但需要保持精确。设置好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文件通常带有难以删除的功能“加水印”。


一些链接


2
+1-重大故障。现在,我们对WiX进行了漫长而艰辛的工作,特别是如果使用WixSharp将有助于简化它的使用并帮助我们摆脱手动编辑XML的道路。
Mat Nadrofsky

这里的更新。我们现在选择了WIX,并且将直接与标记以及WixAware结合使用。好东西。
Mat Nadrofsky 09年

请记住使用dark.exe反编译现有MSI(使用Installshield,Wise或其他工具构建)的技巧,以获取正确的WIX标记以插入到新的WIX源中。这通常比从头开始编写所有WIX标记要快得多。
斯坦·奥斯穆尔09年

10
阅读本文后,我们使用了高级安装程序。我们没有时间学习WiX,但是我们确实有钱,而且Advanced Installer的专业版可以使我们在大约两个小时内启动并运行。WiX看起来需要几天的阅读时间,并且AI向导和配置确实非常流畅。(我根本没有隶属关系,我只是有一个非常不错的经验。)
有偿书呆子,2015年

1
是的,确实如此,但是如果您尝试将MSI文件用作源文件和可执行文件,则可以很快得出结论,文本源文件是非常可取的。文本不仅是Unix的哲学,还是开发者的哲学。这是进行正确区分的唯一方法。
SteinÅsmul'7

18

WiX在非.NET方面的表现如何?

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

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

  • XML文本格式允许查看提交,合并分支之间的更改
  • 构建自动化应包括设置生成,使用WiX即可轻松实现
  • 具有组件组定义的wixlib文件允许 模块化设置开发。无需担心依赖关系的依赖关系等。
  • 无需许可或部署方面的麻烦,我们只需将WiX工具集包含在SVN中我们项目的/ tools文件夹中

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


2
+1-好评。感谢您的见解。关于审查和合并的要点。使用我们现有的.wse(Wise)脚本,我们对此有问题。
Mat Nadrofsky


6

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

最重要的是,它不必要地复杂。不要误会我的意思-我们正在做一些相当复杂的安装程序,其中包含许多条件路径,合并模块和复杂的UI,但即使如此,它也仍然非常复杂。

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


我正在为该答案添加最新信息:有Visual Studio扩展,可以直接在IDE中编写NSIS(以及Inno Setup)安装程序。使用脚本语言更加容易(语法高亮显示,IntelliSense等):marketplace.visualstudio.com/…–
Slappy

1

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

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


+1-感谢您的回复和背景,这一点始终很重要。我不知道IS可能对SCM友好。很高兴知道!
Mat Nadrofsky
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.