2010-07-01 80 views
17

我使用asp.net 3.5开发了一个非常庞大的网络应用程序,我需要准备哪些将使用部署在IIS 6和7的应用程序,我已经做了很多的研究维克斯安装程序包和Installsheild 2010(专业版),需要一些建议,然后再作出决定。我注意到installsheild在许可证方面相当昂贵,但对我来说,我有足够的预算,所以不会成为问题。安装程序应该能够执行以下过程。的Installshield或维克斯

  • 部署发布的网页资源 (aspx等)。

  • 创建虚拟 目录。

  • 在sql 服务器上创建数据库并运行一些初始化 脚本。

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

  • 设置 权限以允许在虚拟目录中写入 文件。

我发现这两种技术都能够做到上述情况,但我想获得个人经验和建议。

回答

16

根据我对Wix和InstallShield的经验,我会推荐使用InstallShield,除非您需要一个相当基本和直接的安装程序。我之所以这么说,是因为由于缺乏可用的信息,巨大的Wix学习曲线变得更加困难

Wix没有书籍,所以您的资源限于the Wix tutorial,这是详细和冗长的,但仍然没有涵盖远远超出基础知识,以及通过Google找到的博客文章。诚然,有许多好博客文章详细说明如何完成具体的事情,但除非你没有最后期限才能见面,否则你可能无法坐下来研究如何在Wix中做好几天的具体事情。就我个人而言,我发现自己对Wix做了太多的事情来做一个可行的解决方案(再次,除非你只需要一个简单的安装程序)

最终,在我的情况下,我们有现有的安装程序,它们是用InstallShield开发的,只需简单地提高生产效率即可。 InstallShield也有它自己的脚本语言,它也有很好的文档。

对我来说,另一大优势是InstallShield减轻了多个实例的痛苦(试着搜索如何使用Wix来做到这一点,并且你会知道我在说什么)以及升级/修补。在使用InstallShield的时候,我能够在分数中完成这两个(尤其是多个实例),而不是在Wix中完成的。

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

希望这会有所帮助。

+2

是的,这是正确的,我的意思是,我是一个Wix的乐趣,我已经使用它一段时间了,但有时候它很难找到神秘的东西,需要时间去完成一些基本的任务,特别是如果你没有任何的手-上。 – Thurein 2010-07-05 06:21:17

+2

JustinPinkley,您查看了WiX文档中的Instance元素的多个实例吗?它们非常易于使用。此外,WiX v3.5有一个新的元素MajorUpgrade,使升级成为一个班轮。而且,修补在WiX工具集中非常易于使用。这些都记录在WiX文档的一个页面中(您可以通过搜索“修补”来找到它)。 – 2010-07-11 00:42:13

+2

是的,我实际上使用了实例元素,并且有3个实例可以被安装。问题不在于Wix实现实例的能力,而在于我花费足够的时间来找到足够的文档来充分实现实例。帮助文件肯定缺乏。 MajorUpgrade确实非常简单,但小升级稍微复杂一些,这很好,但需要更多时间来寻找如何实现。我知道威克斯功能强大,但缺乏详细的文档可能会阻止更多商店使用它。 – 2010-07-11 03:28:23

22

已经创建了一个维克斯安装程序做的正是你希望做什么,我会高兴地推荐它。

维克斯过的InstallShield的好处,因为我看到它:

  1. 由于维克斯是免费的,每个人都在你的团队可以安装它,因此每个人都可以向安装程序。如果一个开发人员添加了一个库到项目中,他们可以根据需要更新安装程序,而无需等待“安装人员”尽其所能。
  2. 有一个生成服务器上安装维克斯,使其成为一个很好的适合在您使用持续集成的环境没有问题。它与MSBuild很好地集成(参见Votive项目)。
  3. Wix安装程序是从文本文件构建的,使它们非常易于版本控制。
  4. 维克斯包括部署工具基金会(DTF),这使得它很容易创建使用的.Net代码的自定义操作。 Wix接近金属:通常可以将您的Windows Installer知识直接应用于Wix。交谈中,学习Wix会教你很多关于Windows Installer的知识,在为部署提供支持方面总是很好。

为了平衡这一点,有几件事情需要注意的:

  1. 维克斯确实有一个陡峭的学习曲线。如果您还没有,请查看WiX tutorial
  2. WiX不是像InstallShield这样的“可视化”环境 - 它通常是text和xml。说了这些,有编辑,freecommercial
  3. 特别与IIS设置有关:Wix 3.0仅适用于IIS 6元数据库API。要在IIS 7上安装,您必须在目标服务器上启用Metabase Compatibility feature。对Wix 3.5中的IIS 7的全面支持 - 我已经尝试过这个测试版,并且它迄今为止工作正常。
+0

是的,这是真的,我的wix(3.0)安装程序不能对付IIS 7,但我的管理人员不想使用仍然是测试版的3.5版本。他们也担心陡峭的学习曲线。 – Thurein 2010-07-01 09:20:03

+0

但是绝对的,Install Shield可以加快我想的开发时间。 – Thurein 2010-07-01 09:23:46

8

+1给Samuel的答案。至于陡峭的学习曲线......如果您不了解底层技术(Windows Installer)的工作方式,那么您的安装支持问题会出现问题,您可以选择InstallShield或WiX。但是,WiX鼓励您学习Windows Installer以正确使用WiX抽象。

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

  • 它是免费的
  • 它是XML(不再有痛苦版本比较并合并)
  • 它是友好的恶性
  • 它到底是什么,你指示它做(不多也不少)

希望你会发现这个信息有用。

+0

感谢您的输入。如何升级和修补?我已经使用wix创建了一个安装程序,并且运行良好,但我从未尝试过使用wix进行版本升级和修补。我担心在升级和修补过程中可能会遇到一些问题。 – Thurein 2010-07-02 03:33:02

+0

您可以使用WiX进行各种MSI升级,并且还有用于生成补丁的工具。它都在那里,不需要额外的工具/脚本。唯一没有涉及的是嵌入变换。在本地化您的安装程序并在其中嵌入语言转换时,您可能会面临这一问题。但是Windows Installer SDK中的msidb.exe解决了这个问题。此外,我可以回忆起某人引用脚本做同样的事情...... – 2010-07-02 06:46:34

12

为了解决上述....

  1. 塞缪尔点我已经创建了CodePlex上的一个项目,被称为IsWiX,解决民主化问题。您可以将它与WiX一起使用来创建合并模块,然后使用InstallShield合并模块来获得两全其美的效果。这使安装人员可以使用InstallShield和数十位开发人员使用IsWiX/WiX。 XML仍然可以用额外的元数据标记,所以我们不限制模块可以描述的内容。

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

  3. InstallShield也是一个文本文件。这是一种更丑陋的DTD格式,但IsWiX通过从安装程序的几乎不变的部分抽象出经常变化的部分来解决该问题。

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

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

PS-IsWiX在散列和排序上投入了很多思想来解决分支合并问题。 (我们在几十个分支上使用Base Clearcase,所以这对我们来说非常重要。)

+0

谢谢你。从未使用InstallShield,我永远无法提供均衡的视图! – 2010-07-02 08:34:22