Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WIX:您可以在两个组件或功能之间运行自定义操作吗?_Wix_Windows Installer - Fatal编程技术网

WIX:您可以在两个组件或功能之间运行自定义操作吗?

WIX:您可以在两个组件或功能之间运行自定义操作吗?,wix,windows-installer,Wix,Windows Installer,我是WIX(Windows Installer XML)的新手,有些东西我不明白 在我看来,自定义操作和功能之间存在矛盾:功能由安装用户选择,并按程序员确定的顺序运行。自定义操作是其中的一部分(特别是当安装需要运行外部脚本或EXE时),但在我看来,它们不能作为一组功能的一部分运行—只能在运行所有功能之前或之后运行 能否设置自定义操作以在组件内运行?您可以设置一个自定义操作在两个功能之间运行吗?否。功能仅为逻辑实体,旨在为安装产品的人员提供选择所需组件的方式。组件更接近“真实”,但在某种意义上,它

我是WIX(Windows Installer XML)的新手,有些东西我不明白

在我看来,自定义操作和功能之间存在矛盾:功能由安装用户选择,并按程序员确定的顺序运行。自定义操作是其中的一部分(特别是当安装需要运行外部脚本或EXE时),但在我看来,它们不能作为一组功能的一部分运行—只能在运行所有功能之前或之后运行


能否设置自定义操作以在组件内运行?您可以设置一个自定义操作在两个功能之间运行吗?

否。功能仅为逻辑实体,旨在为安装产品的人员提供选择所需组件的方式。组件更接近“真实”,但在某种意义上,它们只描述将安装哪些文件和注册表项等。所有实际工作都参与到操作中,无论是自定义操作还是自定义操作

查看内置MSI的StutialExtExeStudio等式,只考虑安装文件、WrreSeriGristyValm和MyCuffActudio。简化一点,将检查所有选定的组件,以确定要安装的文件,并将它们复制到目标。将检查所有选定组件,并写入其注册表项和值。您的自定义动作可以在这些动作之前或之后发生,但不能在中间出现。(即使可以,InstallFiles和WriterRegistryValue中的操作顺序也不一定是您可以控制的。)


顺便说一句,我猜您会问这个问题,因为您的场景似乎要求您执行的代码取决于确切的机器状态。例如,您可能希望在文件a存在的情况下运行自注册例程,但文件B仍然丢失。这不是Windows Installer的正确方法。在本例中,应该标识自注册例程将编写的注册表项,并编写它们。当然,将这类建议应用到您的实际场景中可能会很棘手。

感谢您提供的全面且非常出色的解释。这帮了大忙。