安装程序功能,WIX vs InstallShield Express

19

实际将其产品推向生产环境的程序员需要一个安装程序。(为预先防止“与编程有关”的解释。)

对于部署新的内部企业应用程序和服务套件,我正在尝试决定使用WIX还是随Visual Studio 2010提供的InstallShield Express版。

我已经寻找过了,但没有找到一个功能矩阵,可以突出显示不在Express版中的功能。我希望WIX总体上能够胜任,但更难使用,并且听说过WIX不支持的情况。

是否有人发现了特性矩阵,或者对管理内部部署的长期最佳方式有其他建议?


1
Visual Studio 2010附带的InstallShield版本不是Express版,而是Limited版:http://blogs.msdn.com/somasegar/archive/2009/12/14/building-setup-and-deployment-packages-in-vs-2010.aspx 如果您正在尝试VS2010 beta版,则应该能够尝试InstallShield Limited Edition beta版,以查看它们是否符合您的需求。 - Michael Urman
3个回答

10
我发现Wix是一个很好的选择(尽管学习曲线非常陡峭),如果您需要在复杂的环境中管理安装程序,因为:
  • 设置定义以XML格式存储
  • 它使您完全控制基础Windows Installer技术;XML模式通常紧密遵循Windows Installer数据库模式(这也是学习曲线如此陡峭的主要原因)
  • 易于集成到自动化构建
  • 设置的一部分可以自动生成
  • 它允许您定义小型可重用模块并处理它们之间的复杂依赖关系。
  • 没有成本或许可问题(在使用Wix之前,我们都必须使用单个“Installshield PC”)

XML格式的优势:这使您可以充分利用代码版本控制系统,例如Subversion或Mercurial。查看更改、检查历史记录甚至在分支之间合并更改变得轻而易举。与Installshield项目相比,它们是不透明的二进制文件。

我所说的管理复杂依赖关系的意思是:在我们的情况下,我们有一个庞大的可重用组件库池,其中组件之间存在复杂的依赖关系,并且有许多构建在其上的应用程序。在使用Wix之前,当某个新依赖关系在某个地方引入时,这简直是一场噩梦:必须更新所有设置。

现在,使用wix,我们为每个库都有一个ComponentGroup,组织成几个wixlibs。每个组件组使用ComponentGroupRef引用其依赖的其他组件组。应用程序设置开发人员只需要引用直接依赖的组件组,wix将通过跟随引用来完成其余工作。因此,引入新的依赖项只需要进行单个本地更改。我们的自动化构建和wix会完成所有设置的重新生成。

谢谢,你已经说服我选择WIX。我希望我们能像你一样顺利地实现它。 - DanO
1
有没有使用Wix的完整示例? - Kiquenet

6
InstallShield Express是用于基本部署的工具(它只是一个经过美化的WinZip)。您还可以查看我最喜欢的AdvancedInstaller。它们也有免费的快速版,但我认为对您都没有用,因为如果您需要处理IIS、MS SQL、Active Directory、GAC等内容,您将需要“企业级”版本。WiX是免费的,但学习曲线非常陡峭,不值得学习。我后悔学了它。
如果您只需要进行内部部署,并且不能花费1000美元购买安装程序,则可以从头开始创建自己的“安装”项目。 System.EnterpriseServices.Internal命名空间包含一些有用的IIS、GAC等包装器。 System.Configuration.Install.ManagedInstallerClass可以帮助您部署Windows服务。换句话说,您可以从头开始制作自己的程序,以处理主要产品的所有必要部署步骤。许多公司不使用商业安装程序来部署旗舰产品,而是制作自己的安装程序。

感谢您指引我们远离InstallShield,转向使用.Net类来进行自定义安装选项。这可能会对我们有所帮助。我想我会尝试使用WIX,但如果我发现它像您一样麻烦,那么知道其他公司只需自己制作安装程序也是好的。 - DanO
你不能花1000美元购买一个安装程序,但你可以“浪费”数周的开发时间(开发人员需要花钱)来构建自己的安装程序? - anon2009
4
@anon2009,也许有些惊讶,但在大多数公司中,程序员花费数周时间自己制作安装程序比说服管理层购买一项价值1000美元的工具更容易。此外,企业授权的1000美元成本通常是每个开发人员,因此在大型公司中,建立自己的工具比购买数十个许可证更便宜和更灵活。 - lubos hasko
Lubos,这正是问题所在。经理们不明白,花一个月的时间来构建一些你可以购买且拥有比你的团队永远无法构建的1000个以上功能的东西是错误的。 他们称其为机会损失。开发团队应该是解决公司问题所需的产品,而不是重复造轮子。 - anon2009
2
@anon2009,我同意你的观点,但令人遗憾的是,许多公司都非常严格地审查预算,以至于经理们很容易获得开发者的时间,而要获得甚至500美元的资金却更加困难。这是短视的行为吗?当然是,但经理们认为他们在“削减成本”。 - Vaccano
显示剩余2条评论

1

感谢您找到这些详细信息。我相信您对限制的正确性。他们必须准确地限制企业客户需要的东西,以便从拥有企业资金的客户那里推动销售。 - DanO

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接