WiX和WiX Toolset有哪些限制?

19

我一直在努力寻找一篇文章或帖子,列出WiX(Windows Installer XML)/ WiX工具集的功能限制。使用WiX几周后,我至少想到了最新的RTM版本(v3.0)中的两个限制

  • WiX工具集无法创建启动程序(setup.exe)。
  • WiX工具集无法从COM 可执行文件中获取COM注册信息。

你能想到其他限制吗?在部署项目中遇到的问题?我认为这些信息对学习WiX的人非常有用。


1
感谢Yan和Chris的深入回答,我希望我能将两个回答都选为被采纳的答案。 - Alek Davis
2个回答

21

以哪些方面WiX比InstallShield差(即功能缺失)为例,回答这个问题最容易了解。

  • 启动器/链接程序 - WiX有一个名为Burn的启动器,现在包含在WiX v3.6中。
  • XML读取 - WiX仅支持写入而不是读取XML文件的CA(应用程序搜索)。
  • 文本搜索/替换 - InstallShield 有用于读取/写入非INI/XML文件的模式。
  • 仅支持MSSQL - 不支持Oracle和MySQL。
  • 自动化接口 - 没有用于程序更新/生成项目的DOM。必须全部使用原始XML。
  • 没有本地IIS 7支持 - 本地IIS7支持自WiX v3.5起存在。
  • 大多数工具集仅限于文本。没有适用于大型任务的GUI设计师(请参见IsWiX)。XML简洁且有其作用,但这就像将记事本与Blend进行比较。

我已经成功使用heat提取COM,所以我不再担心它了。


很棒的观点,谢谢你。顺便问一下,我假设您使用热提取法从DLL而不是EXE中提取COM信息,对吗? - Alek Davis
我之前尝试过在注册COM EXE之前和之后转储注册表,然后使用WinDiff工具查找差异。问题是,您需要将注册表条目映射到适当的WiX属性。我想你可以按原样处理它们,但这对我来说看起来不太“纯粹”。我最终只是使用/RegServer开关调用了EXE。对于商业应用程序,我不会这样做,但对于内部应用程序,这很好:我只是不想花太多时间在这上面。 - Alek Davis
实际上,WiX默认会将COM元素/属性作为常规的旧注册表表行构建。 阅读:http://robmensching.com/blog/posts/2007/3/12/RobMens-Recommendation-Do-not-advertise-COM-information-in-MSI - Christopher Painter
IIS 7支持已经在WiX 3.5中实现。不过我还没有测试过。 - si618
请查看Community MSI扩展 https://github.com/dblock/msiext。它有许多自定义操作(包括读取XML),以便于WiX/MSI的日常使用。 - Santi Agüero
显示剩余4条评论

12

我认为还有几点需要补充说明,但这些都不算是严重的限制,因为它们都可以通过以下方式解决:

  • 没有现成的工具可以将变换(MST)嵌入到MSI包中;不过,msidb.exe可以帮忙解决此问题。
  • 如果需要创建一个包含多种语言的单一软件包,则需要额外的工作,例如:创建N个软件包、对中性软件包生成N个语言变换、将这些变换嵌入到软件包中、指示启动程序调用正确的语言变换。
  • WiX 3.0的IIS扩展功能相对较少——仅支持以IIS 6兼容模式运行的IIS 7;不过,幸运的是,在WiX 3.5中已经不存在这个问题了。
  • Heat默认情况下无法生成“1个组件-N个文件”结构。是的,我知道这不被推荐,但有时确实需要这样做;不过,你可以使用XSL来转换heat输出,从而达到你想要的效果。
  • UtilExtension的PermissionEx没有一个开关仅设置文件夹的ACL。如果只需要为安装的文件设置ACL,则这并不是很大的问题。但是,我必须通过快速修复来修改WiX,才能在现有的文件系统树上说“仅将这些权限应用于文件夹”。

我再次强调,我认为这些都不是严重的限制。我非常满意Rob和整个团队迄今为止所做的工作,并且他们正在走在正确的道路上! :)


正是我正在寻找的信息。谢谢 Yan。 - Alek Davis
1
这个项目可能(大部分)走在正确的轨道上,但是它已经比预定计划晚了5年。我通过将WiX与InstallShield混合使用来克服其限制,但从我的角度来看,缺少引导程序是一个致命问题,目前阻止我完全采用WiX。不过,对我来说,策略性地使用WiX替换InstallShield的部分功能效果非常好。 - Christopher Painter
至于第二点:这正是SharpSetup所做的(加上一些其他功能,例如它添加了在VS设计器中编辑安装程序GUI的能力)。 - Tomasz Grobelny

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