Wix中的Wix扩展和自定义操作有什么区别?

时间:2014-07-17 22:19:43

标签: c# wix

我正在尝试编写一些可添加到我的Wix安装程序的内容,该安装程序可自动连接到服务器并验证我们是否具有访问权限。我知道如何使用C#代码执行此操作,但对如何将其与Wix集成感到困惑。

我想我需要WixExtension或CustomAction。有人可以指出我正确的指示吗?这些概念之间有什么区别/关系?

1 个答案:

答案 0 :(得分:3)

假设您创建了一个C ++ / C#DLL并将其构建为Windows Installer标准。然后,您将其创建到MSI Binary / CustomAction / InstallExecuteSequence(或类似)表中。您现在有自定义操作。

明确定义的自定义操作应遵循许多最佳实践,包括数据驱动。不应将值硬编码到代码中,而应将它们抽象为自定义表。 immeadiate contenxt中的自定义操作应查询这些表,进行评估并序列化传递给延迟上下文的指令集,然后该指令集具有执行工作的权限。这就是MSI如何工作,你有ServiceInstall和一个名为ServiceInstall的表。有意义吗?

好的,现在扩展是让所有这些变得更优雅的一种方式。您创建一个XSD来描述这些关系,并创建一个DLL来扩展编译器。现在,您不必编写所有这些WXS,而是添加对DLL的引用,添加XSD命名空间并编写一些元素,让编译器处理细节。

你只需要一个自定义动作。但是如果你写的东西真的很强大,可以重复使用,并希望与世界分享....做一个扩展。