Installshield或Wix

Thu*_*ein 19 wix installshield-2010

我有一个使用asp.net 3.5开发的非常庞大的Web应用程序,我需要准备一个安装程序包,用于在IIS 6和7上部署应用程序.我已经对Wix和Installsheild 2010(专业版)做了大量研究.在做出决定之前需要一些建议.我注意到installsheild在许可证方面是相当费用的,但对我来说,我有足够的预算,所以这不会是一个问题.安装程序应该能够执行以下过程.

  • 部署已发布的Web资源(aspx等).

  • 创建虚拟目录.

  • 在sql server上创建数据库并运行一些初始化脚本.

  • 修改XML文件和web.config文件.

  • 设置允许写入虚拟目录中文件的权限.

我发现这两种技术都能够完成上述场景,但我想获得个人经验和建议.

Sam*_*ack 25

创建了一个Wix安装程序来完成你想做的事情,我很乐意推荐它.

正如我所看到的,Wix优于InstallShield的好处:

  1. 由于Wix是免费的,团队中的每个人都可以安装它,因此每个人都可以为安装程序做出贡献.如果一个开发人员将一个库添加到项目中,他们可以根据需要更新安装程序,而无需等待"安装人员"完成他的工作.
  2. 在构建服务器上安装Wix没有问题,因此非常适合使用持续集成的环境.它与MSBuild很好地集成(参见Votive项目).
  3. Wix安装程序是由文本文件构建的,因此非常容易进行版本控制.
  4. Wix包含部署工具基础(DTF),可以使用.Net代码轻松创建自定义操作.
  5. Wix接近金属:您通常可以将您对Windows Installer的知识直接应用于Wix.相反,学习Wix会教你很多关于Windows Installer的知识,在提供部署支持方面总是很好.

为了平衡这一点,有几点需要注意:

  1. Wix确实有一个陡峭的学习曲线.如果您还没有,请查看WiX教程.
  2. WiX不像InstallShield这样的"可视化"环境 - 它通常是文本和xml.话虽如此,有编辑,免费商业.
  3. 特别是与IIS设置有关:Wix 3.0仅适用于IIS 6元数据库API.要在IIS 7上安装,您必须在目标服务器上启用元数据库兼容性功能.完全支持IIS 7将在Wix 3.5中出现 - 我已经尝试了这个测试版,到目前为止它似乎工作得很好.


小智 18

根据我对Wix和InstallShield的经验,我建议使用InstallShield,除非你需要一个相当基本和简单的安装程序.我之所以这么说,是因为缺乏可用的信息,使得Wix学习曲线变得更加困难

Wix上没有书籍,因此您的资源仅限于Wix教程,该教程详细而冗长,但仍然没有超出基础知识和您通过Google找到的博客文章.当然,有许多好的博客文章详细介绍了如何完成特定的事情,但除非你没有最后期限,否则你可能无法坐下来研究如何在Wix中做几天的具体事情.就个人而言,我发现自己这样做太过于让Wix成为一个可行的解决方案(再次,除非你只需要一个简单的安装程序)

最终,在我的情况下,我们使用InstallShield开发了现有的安装程序,我们可以更快地使用它.InstallShield也有自己的脚本语言,它也有很好的文档.

对我来说另一个重要的好处是InstallShield减轻了多个实例的痛苦(试着用Wix搜索如何做到这一点,你会知道我在说什么)和升级/修补.我能够在完成这两个(尤其是多个实例)的分数的使用InstallShield的时间比它参加了维克斯完成.

我的建议是根据您的时间限制/期限/承诺,安装程序的复杂性以及产品的成熟度进行选择.Wix需要大量研究,因为InstallShield提供了一种相当快速的方法.如果你有一个成熟的产品而不是一个相当年轻的产品,这可能会更加痛苦.

希望这可以帮助.

  • 这个答案在当时非常考虑我们,但现在对于Wix来说非常不准确.Wix现在拥有许多书籍和整个公司:https://www.firegiant.com/他们提供咨询和指导,甚至会为您编写安装程序.请注意,我不为他们工作或有任何从属关系,我只是想指出现在提供的更成熟的支持. (5认同)
  • 是的,这是正确的,我的意思是,我是Wix的乐趣,我已经使用它一段时间了,但是有时候它非常困难,需要时间来完成一些基本任务,特别是如果你没有任何手 - 上. (2认同)
  • JustinPinkley,对于多个实例,您是否查看了WiX文档中的Instance元素?它们非常易于使用.此外,WiX v3.5还有一个新元素MajorUpgrade,它可以升级一个内核.此外,修补在WiX工具集中非常容易使用.这些都记录在WiX文档的一个页面中(您可以通过搜索"修补"找到它). (2认同)
  • 是的,我实际上使用了Instance元素,并且可以安装3个实例.问题不在于Wix实现实例的能力,而是在我花费大量时间找到足够的文档来充分实现实例.帮助文件肯定缺乏.MajorUpgrade确实非常简单,但是稍微升级会更复杂,这很好,但需要更多时间来搜索如何实现.我知道Wix功能强大,但缺乏详细的文档可能会阻止更多商店使用它. (2认同)
  • 更正,有一些关于WiX的书籍.我的办公桌上有http://www.amazon.com/WiX-Developers-Guide-Windows-Installer/dp/1849513724 :) (2认同)

Chr*_*ter 12

为了解决上面撒母耳的观点......

  1. 我在CodePlex上创建了一个名为IsWiX的项目来解决民主化问题.您可以将它与WiX一起使用来创建合并模块,然后使用带有InstallShield的合并模块来充分利用这两个世界.这允许安装人员使用InstallShield和我的几十个开发人员使用IsWiX/WiX.XML仍然可以使用其他元数据进行标记,因此我们不限制模块可以描述的内容.

  2. InstallShield有一个独立的构建引擎,它与MSBuild/TFS集成并提供自动化接口.这里没有WiX的优势.

  3. InstallShield也是一个文本文件.这是一种更丑陋的DTD格式,但IsWiX通过从安装程序很少变化的部分中抽象出频繁变化的部分来解决这个问题.

  4. 我强烈建议在InstallShield中使用DTF.毕竟,Type 1导出函数与任何基于MSI的工具相同.

  5. InstallShield有一个直接编辑器,可以显示基础表.这实际上更接近金属,然后使用基于XSD的DSL输出金属的WiX.总而言之,WiX InstallShield 确实很好用,我一起使用它们来创建极其复杂的安装程序.

PS-IsWiX对散列和排序进行了大量考虑,以解决分支合并问题.(我们在几十个分支上使用Base Clearcase,因此这对我们非常重要.)


Yan*_*nko 8

给撒母耳的答案+1.至于陡峭的学习曲线......如果您不了解底层技术(Windows Installer)的工作方式,您将无法获得安装支持,无论是您选择的InstallShield还是WiX.但WiX鼓励您学习Windows Installer以正确使用WiX抽象.

我个人使用InstallShield启动了我的安装项目(一个巨大的Web应用程序),但我最近搬到了WiX,我很高兴.我选择的关键点:

  • 这是免费的
  • 它是XML(没有更多的痛苦差异和合并)
  • 它对NAnt很友好
  • 它完全符合你的指示(不多也不少)

希望您发现此信息有用.