简体   繁体   English

安装程序功能,WIX与InstallShield Express

[英]Installer capabilities, WIX vs InstallShield Express

Programmers that actually promote their products to production need an installer. 实际上将产品推向生产的程序员需要安装程序。 (pre-emptive "programming related" justificaton.) (先发制人的“编程相关”理由。)

For deploying a new suite of internal corporate apps and services, I'm trying to decide between using WIX and the InstallShield Express edition that comes with Visual Studio 2010. 为了部署一套新的内部企业应用程序和服务,我正在尝试使用WIX和Visual Studio 2010附带的InstallShield Express版本。

I've looked, but haven't found a feature matrix that highlights the features that are not in the express edition. 我看过了,但还没有找到一个功能矩阵,突出了快递版中没有的功能。 I expect WIX to be generally quite capable, but more difficult to use, and have heard of situations that WIX doesn't support well. 我希望WIX通常非常强大,但更难以使用,并且听说过WIX不能很好地支持情况。

Has anyone found a feature matrix, or have other recommendations on the long-term best way to manage internal deployments? 有没有人找到功能矩阵,或者有关于管理内部部署的长期最佳方法的其他建议?

I find that wix is a great choice (in spite of the very very steep learning curve) if you need to manage installers in a complex environment because 如果你需要在复杂的环境中管理安装程序,我发现wix是一个很好的选择(尽管学习曲线非常陡峭

  • setup definitions are stored in an XML format 设置定义以XML格式存储
  • it gives you full control to the underlying windows installer technology; 它使您可以完全控制底层的Windows安装程序技术; the XML schema typically closely follows the windows installer database schema (which is also the main reason why the learning curve is so steep) XML模式通常紧跟Windows安装程序数据库模式(这也是学习曲线如此陡峭的主要原因)
  • It is easy to integrate into your automated build 它很容易集成到您的自动构建中
  • Parts of the setup can be generated automatically 可以自动生成部分设置
  • It allows you to define small reusable modules and manage complex dependencies between them. 它允许您定义小型可重用模块并管理它们之间的复杂依赖关系。
  • no cost or licensing issues (before wix we all had to use a single "Installshield PC") 没有成本或许可问题(在wix之前我们都必须使用单个“Installshield PC”)

Why the XML format is an advantage: this allows you to fully leverage code versioning systems like subversion or mercurial. 为什么XML格式是一个优势:这使您可以充分利用代码版本控制系统,如subversion或mercurial。 Reviewing changes, examining history or even merging changes across branches is a breeze. 查看更改,检查历史记录甚至跨分支合并更改是一件轻而易举的事。 Compare that to installshield projects which are opaque binary blobs. 将其与不透明的二进制blob的installshield项目进行比较。

What I mean by managing complex dependencies: in our case we have a big pool of reusable component libraries with a complex set of dependencies between them, and many applications that were build on top of that. 我的意思是管理复杂的依赖关系:在我们的例子中,我们有一大堆可重用的组件库,它们之间有一组复杂的依赖关系,以及许多构建在它之上的应用程序。 Before wix, this was a nightmare when a new dependency was introduced somewhere: ALL setups had to be updated. 在wix之前,当一个新的依赖项被引入时,这是一场噩梦:所有设置都必须更新。

Now with wix, we have a ComponentGroup for each library, organized into a couple wixlibs . 现在使用wix,我们为每个库都有一个ComponentGroup ,组织成几个wixlib Each component group references other component groups that it depends on with a ComponentGroupRef . 每个组件组引用ComponentGroupRef所依赖的其他组件组。 Application setup developers only need to reference the component groups of direct dependencies, and wix will do the rest by following the references. 应用程序设置开发人员只需要引用直接依赖项的组件组,wix将通过遵循引用来完成剩下的工作。 As a result, introducing a new dependency only requires making a single local change. 因此,引入新的依赖关系只需要进行一次本地更改。 Our automated builds and wix do the rest to regenerate all the setups. 我们的自动构建和wix完成剩下的工作以重新生成所有设置。

InstallShield Express is for basic deployments (it's nothing but glorified WinZip). InstallShield Express用于基本部署(它只是荣耀的WinZip)。 You can also check my favorite AdvancedInstaller . 您还可以查看我最喜欢的AdvancedInstaller They have also free express edition but I think both of them will be no use to you, because if you need to do anything with IIS, MS SQL, Active directory, GAC etc, you will need "enterprise level" editions. 他们也有免费的快递版,但我认为它们都没用,因为如果你需要对IIS,MS SQL,Active目录,GAC等做任何事情,你将需要“企业级”版本。 WiX is free but learning curve is so steep, that it's not worth learning. WiX是免费的,但学习曲线非常陡峭,不值得学习。 I regret ever learning it. 我很遗憾学习它。

If you need this just for internal deployments and cannot spend $1,000 on installer, just create your own "installation" project from scratch. 如果您只需要内部部署而且不能在安装程序上花费1,000美元,那么只需从头开始创建自己的“安装”项目。 System.EnterpriseServices.Internal namespace contains some useful wrappers for IIS, GAC etc. System.Configuration.Install.ManagedInstallerClass can help you deploy windows services. System.EnterpriseServices.Internal命名空间包含一些有用的IIS,GAC等包装器System.Configuration.Install.ManagedInstallerClass可以帮助您部署Windows服务。 In other words, you can make your own program from scratch that can handle all necessary steps for deployment of your primary product. 换句话说,您可以从头开始创建自己的程序,这些程序可以处理部署主要产品的所有必要步骤。 Many companies don't use for their flagship products commercial installers, they make their own. 许多公司不会为他们的旗舰产品商业安装人员使用,他们自己制作。

The feature matrix for Install shield can be found here: 安装盾的功能矩阵可以在这里找到:

http://www.flexerasoftware.com/products/installshield/features.htm http://www.flexerasoftware.com/products/installshield/features.htm

However, for the IIS section (I assume you need IIS based on the link to my earlier question) all it says is "Limited". 但是,对于IIS部分(我假设您需要基于我之前问题的链接的IIS),它所说的只是“限制”。 It is up to you to guess what Limited means, but I am betting it will not support an enterprise level deployment. 由你来猜测有限意味着什么,但我认为它不会支持企业级部署。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM