为什么要向MSI添加自定义表?

时间:2011-02-01 18:40:23

标签: windows-installer msiexec

我只是想知道这个功能的用途是什么,因为MSIEXEC可能甚至不知道它在那里。是否有一些可以访问它们的自定义操作代码?

2 个答案:

答案 0 :(得分:4)

重点是编写自定义操作,使其行为方式与标准操作类似。动作和表定义了动作执行工作的模式,表定义了要完成的工作。这是声明式数据驱动编程的核心。相反的是,当你以强制性的方式将两者紧密地结合在一起时。

推荐阅读材料:

Zataoca: Custom actions should be data driven

Data Driven Managed Custom Actions made easy with DTF

答案 1 :(得分:2)

正如Chris Painter所说, MSI文件是透明的,因为您可以根据MSI表的内容看到安装过程中会发生什么。 This is one of the key benefits of MSI that you can find described here自定义表格扩展此内置透明度,以包含由其中指定的操作提供的自定义操作。它们还允许重复使用自定义操作代码,因为操作不是硬编码的,而是在表中指定。

在大公司工作期间,我编写了一个自定义动作DLL,可以执行多项非标准MSI任务,例如创建本地用户和组创建共享和< strong>设置自定义权限等。通过定义自定义表中应该完成的操作,我们可以完成我们需要做的事情而无需在自定义操作中对任何内容进行硬编码。创建后,用户创建的自定义操作可以创建自定义表中指定的任何用户。

自定义表在 _Validation table 中定义,以便为表中的每列设置可接受的值范围和类型。还可以连接自定义ICE验证规则以检测自定义表中的错误。需要解析目录的自定义操作可以将自定义表中的外键添加到Directory表中,以便能够解析安装目录。您还可以将外键添加到其他表,包括其他自定义表。

简而言之,自定义操作会使用自定义表格,并且在用于实现自定义操作的灵活性和重用时非常有效。但是,实施是一项重大工作。 The WiX toolkit使用许多自定义表来完成非标准MSI任务,例如IIS安装。他们的源代码是开源的,它将向您展示如何编写由自定义表提供的自定义操作。它涉及相当多的毛茸茸的MSI技术,例如从客户端到服务器进程的排序和传递值(提升,延迟模式自定义操作),但所有这些都应该可以从WiX“借用” - 或者更好的是,使用WiX自己的现成的自定义操作。

如果您具备创建此功能的技能,我认为与WiS社区分享您的创作将非常有益。这也将为您提供一群非常有才华的开发人员,帮助您跟踪代码和实现中的任何错误。

相关问题