0

我需要在生成的 MSI 中包含一个 dll/exe(通过 WiX 项目创建),但我不想在安装过程中部署它们:我只想在一些 CustomAction 中使用它们我的目的是包含一个现有的 exe/dll并在安装期间从 wxs 代码(而不是从 CustomAction dll)调用它。
是否可以包含安装期间未部署的文件?我的意思是,只将它们打包在生成的 MSI 中,并在它们被解压到 %temp% 文件夹中时调用它们执行某些任务?
此外,如果有人可以通过 Product.wxs XML 代码单元展示一些如何包含 dll/exe 的示例代码,那就太好了。
谢谢。

4

2 回答 2

2

是的,使用Binary元素包含它们。

<Binary Id='MyCustomActionBinary'
        SourceFile='$(var.CustomActionProject.TargetPath)' />

这将使它们对您的CustomAction可用,您可以在其中使用 BinaryKey 属性来引用二进制文件:

<CustomAction Id='MyCustomAction'
              BinaryKey='MyCustomActionBinary'
              DllEntry='MyCustomFunction'
              Execute='deferred' />
于 2013-04-08T15:44:45.210 回答
1

如果您使用 C#/DTF 编写自定义操作,您只需添加 DLL 作为引用。对于任何其他类型的文件,您将它们作为 Content | 添加到项目中。CopyAlways 和构建将自动将这些文件包含在自解压自定义操作中。当 CA 运行时,它们将在当前目录(临时目录)中可用,并在 CA 结束时自动清理。

于 2013-04-08T15:37:59.750 回答