BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

使用Visual Studio 2010和WiX 3.0开发托管自定义操作

| 作者 Jon Arild Tørresdal 关注 0 他的粉丝 ,译者 王波 关注 0 他的粉丝 发布于 2009年2月17日. 估计阅读时间: 5 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

InfoQ之前曾报道过,Visual Studio 2010将会配备WiX 3.0。相对于当前使用的Visual Studio安装项目,Wix更加灵活。而且它支持托管代码和Windows Installer进行交互。程序员可以使用C#、VB.NET或其他任何.NET编程语言。它也支持调试,这个曾让安装创建者头痛的问题。

通过WiX的发布工具基础(Deployment Tools Foundation,DTF)来支持托管自定义操作(CA's),开发人员不再需要使用C++或者脚本语言(VB Script或JavaScrip)编写CA's。DTF可以使用msi.dll中的托管.NET包装,让用户访问完整的MSI API。用C#编写的CA方法如下所示:

[CustomAction]
public static ActionResult CustomActionName(Session session)
{
...
}

CustomAction特性用于标识该方法为CA。Session对象让开发人员访问Windows Installer API,它可以查询MSI数据库、访问属性等等。这和过去用脚本和C++代码编写的CA’s非常类似。

要在WiX中使用前面的CA,必须注册WiX项目,代码如下所示:

<CustomAction Id="someID" BinaryKey="someKey" DllEntry="customActionName" Execute="immediate"  Return="check" />
<Binary Id="someKey" SourceFile="someCustomAction.CA.dll" />

UISequence中执行CA,如下所示:

<InstallUISequence>
 <Custom Action="someID" After="CostFinalize" Overridable="yes">NOT Installed</Custom>
</InstallUISequence>

WiX 3.0也给所有的WiX用户提供系列默认操作,事实上它们都是CA's。下面列举部分可用的默认操作:

  • IIS
  • Com+
  • MSMQ
  • SQL

WiX 3.0文档中有详细的信息。

下面的例子显示了IIS中创建新Web站点的Wix源代码:

<iis:WebSite Id='DefaultWebSite' Description='Default Web Site'>
 <iis:WebAddress Id='AllUnassigned' Port='80' />
</iis:WebSite>

很多开发人员都询问Windows Installer团队为什么不支持托管自定义操作。Wix的开发组长Rob Mensching解释道:

一年前,我、Carolyn (MSI Dev经理)和两位Windows架构师讨论过托管代码自定义操作,并把最终的结果发布到博客上。博文提出了两个问题。第一个是技术问题,即托管代码自定义操作需要运行在单独的线程中。第二个问题是Windows平台制定了减少自定义操作的战略目标。我发布那篇博文的时候,DTF就是面临着这两个问题。发布博文的一个月以后,Jason解决了当中的技术难题,通过实现进程间通讯机制把托管自定义操作转移到单独的进程中,但仍可以和Windows Installer通讯。

2009版的InstallShield也支持自定义托管操作,针对Rob提出的两个问题有着不同的解决方案,但是不支持调试。Christopher Painter谈到他认为DTF更好用的原因

  1. 通过合适的CLR版本,DTF解决了分离msi进程的难题
  2. MakeSfxCa在依赖性方面更加灵活和直观
  3. 从C#开发人员的角度来说,MSI互操作对象模型更好用
  4. 可对主进程进行调试
  5. 开发源代码更易于发现问题和解决问题,尽管需要我们自己动手
  6. 没有使用上的限制。它有多种使用方式,我们可以建立和使用自定义操作,包括集成到InstallShield(这正是我在尝试的方式)。

WiX 3.0即将发布。当前仍需修正一些Bug ,同时等待Visual Studio小组以便和Visual Studio的附加程序Votive进行集成。最新的版本是3.0.5006.0,我们也可以下载每周编译版本

查看英文原文:Managed Custom Actions with Visual Studio 2010 and WiX 3.0

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT