WixExtension和Wix中的CustomAction有什么区别?
本文关键字:什么 区别 CustomAction Wix 中的 WixExtension | 更新日期: 2023-09-27 18:13:37
我试图写一些东西,可以添加到我的Wix安装程序,自动连接到服务器并验证我们有访问权限。我知道如何用c#代码做到这一点,但我对如何将其与Wix集成感到困惑。
我想我需要一个WixExtension或CustomAction。谁能给我指个正确的方向?这些概念之间的区别/关系是什么?
假设您创建了一个c++/c# DLL并将其构建为Windows Installer标准。然后将其写入MSI Binary/CustomAction/installeexecutesequence(或类似)表中。现在您有了一个自定义操作。
定义良好的自定义操作应该遵循许多最佳实践,包括数据驱动。与其将值硬编码到代码中,不如将它们抽象到自定义表中。即时内容中的自定义操作应该查询这些表,进行计算并序列化传递给延迟上下文的指令集,然后延迟上下文有权限执行该工作。这就是MSI的工作方式,你有像ServiceInstall这样的动作和一个名为ServiceInstall的表。有意义吗?
现在,扩展是一种使这一切更优雅的方式。您可以创建一个XSD来描述这些关系,并创建一个DLL来扩展编译器。现在,您不必编写所有这些WXS,而是添加对DLL的引用,添加XSD名称空间并编写一些元素,并让编译器处理细节。
很可能你只需要一个自定义动作。但如果你曾经写过一些真正强大的,可重用的东西,并想与世界分享....