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:如何打包exe或dll以仅在安装期间使用_Wix_Wix3.5_Wix3_Wix3.6_Wix3.7 - Fatal编程技术网

WiX:如何打包exe或dll以仅在安装期间使用

WiX:如何打包exe或dll以仅在安装期间使用,wix,wix3.5,wix3,wix3.6,wix3.7,Wix,Wix3.5,Wix3,Wix3.6,Wix3.7,我需要在生成的MSI(通过WiX项目创建)中包含一个dll/exe,但我不想在安装期间部署它们:我只想在某些自定义操作中使用它们。我的目的是包含一个现有的exe/dll,并在安装期间从wxs代码(而不是从自定义操作dll)调用它。 是否可以包含安装期间未部署的文件?我的意思是,只将它们打包到生成的MSI中,并在%temp%文件夹中解包时调用它们执行某些任务? 另外,如果有人能展示一些示例代码,说明如何通过Product.wxs XML代码单元包含dll/exe,那就太好了。 谢谢。如果使用C#/

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

谢谢。

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

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

是,使用元素包含它们

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

这将使您可以使用BinaryKey属性引用二进制文件:

<CustomAction Id='MyCustomAction'
              BinaryKey='MyCustomActionBinary'
              DllEntry='MyCustomFunction'
              Execute='deferred' />

是,使用元素包含它们

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

这将使您可以使用BinaryKey属性引用二进制文件:

<CustomAction Id='MyCustomAction'
              BinaryKey='MyCustomActionBinary'
              DllEntry='MyCustomFunction'
              Execute='deferred' />



您计划用什么语言编写自定义操作?自定义操作是用C#编写的。您计划用什么语言编写自定义操作?自定义操作是用C#编写的。抱歉,可能我不够清楚:我不想将它们包含在CustomAction.CA.dll中,我希望它们通过Product.wxs代码包含。为什么?要意识到,如果你这样做的话,你将不得不彻底改造所有的基础设施。如果您正在调用EXE,则可能应该使用QuietExecCA。如果您正在调用DLL,可能应该将其添加为引用。否则,您必须编写从二进制表提取的所有代码,使用反射来调用它,然后进行清理。我必须有一个非常非常有说服力的理由来做这一切,而不是利用内置功能。好的,我明白了,那么我就不会从自定义操作调用外部exe/dll。我将只从wxs代码调用它们。无论如何,谢谢你的回答,它为我澄清了很多事情:)可悲的是,它可能有点复杂。您计划调用的EXE是否具有DLL依赖项?如果是这样,您想从临时目录调用它们而不安装它们吗?如果是这样的话,那就复杂一点。如果这是你的故事,请告诉我。不,我要调用的exe只是一个命令行实用程序,它没有依赖项。抱歉,也许我不够清楚:我不想在CustomAction.CA.dll中包含这些,我想通过Product.wxs代码包含它们。为什么?要意识到,如果你这样做的话,你将不得不彻底改造所有的基础设施。如果您正在调用EXE,则可能应该使用QuietExecCA。如果您正在调用DLL,可能应该将其添加为引用。否则,您必须编写从二进制表提取的所有代码,使用反射来调用它,然后进行清理。我必须有一个非常非常有说服力的理由来做这一切,而不是利用内置功能。好的,我明白了,那么我就不会从自定义操作调用外部exe/dll。我将只从wxs代码调用它们。无论如何,谢谢你的回答,它为我澄清了很多事情:)可悲的是,它可能有点复杂。您计划调用的EXE是否具有DLL依赖项?如果是这样,您想从临时目录调用它们而不安装它们吗?如果是这样的话,那就复杂一点。如果这是你的故事,请告诉我。不,我要调用的exe只是一个命令行实用程序,它没有依赖项。当然,你可以。但是,使blob可用、调用和清理的基础设施是相当可观的。C#/DTF允许您将所有这些封装在自定义操作中以简化故事。事实上,这正是我想要的,也许我不是很清楚:我的目的是包含一个现有的exe/dll,并在安装期间从wxs代码(而不是从自定义操作dll)调用它@ChristopherPaint我目前正在处理一个项目,其中我的project.exe文件具有多个依赖项…从哪里可以获得有关在WiX引导程序中包含project.exe的项目依赖项的更多信息?我为我的项目引用了
ExePackage
,但它不包括它的依赖项。我们是否要使用多个dll?当然可以。但是,使blob可用、调用和清理的基础设施是相当可观的。C#/DTF允许您将所有这些封装在自定义操作中以简化故事。事实上,这正是我想要的,也许我不是很清楚:我的目的是包含一个现有的exe/dll,并在安装期间从wxs代码(而不是从自定义操作dll)调用它@ChristopherPaint我目前正在处理一个项目,其中我的project.exe文件具有多个依赖项…从哪里可以获得有关在WiX引导程序中包含project.exe的项目依赖项的更多信息?我为我的项目引用了
ExePackage
,但它不包括它的依赖项。我们要使用多个dll吗?