Windows installer 为什么要将自定义表添加到MSI?

Windows installer 为什么要将自定义表添加到MSI?,windows-installer,Windows Installer,我只是想知道这个功能的用途是什么,因为MSIEXEC可能甚至不知道它在那里。是否有一些自定义操作代码可以访问它们?关键是要编写自定义操作,使其行为方式与标准操作类似。动作和表格定义了一种模式,其中动作执行工作,表格定义要完成的工作。这是声明式、数据驱动编程的核心。相反,当您以命令式方式将两者紧密结合在一起时 建议阅读材料: 正如Chris Painter所说,MSI文件是透明的,从这个意义上讲,您可以根据MSI表的内容看到安装过程中会发生什么自定义表扩展此内置透明度,以包括由其中指定的操作提供

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

关键是要编写自定义操作,使其行为方式与标准操作类似。动作和表格定义了一种模式,其中动作执行工作,表格定义要完成的工作。这是声明式、数据驱动编程的核心。相反,当您以命令式方式将两者紧密结合在一起时

建议阅读材料:


正如Chris Painter所说,MSI文件是透明的,从这个意义上讲,您可以根据MSI表的内容看到安装过程中会发生什么自定义表扩展此内置透明度,以包括由其中指定的操作提供的自定义操作。它们还允许重用自定义操作代码,因为这些操作不是硬编码的,而是在表中指定的

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

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

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

如果你有创造这个的技能,我认为与WiS社区分享你的创造将是非常有益的。这还将为您提供一群才华横溢的开发人员,帮助您追踪代码和实现中的任何错误