DTF正在复制自定义动作DLL文件

时间:2014-08-29 15:06:59

标签: wix installshield custom-action installshield-2012 dtf

我有在installshield中创建的msi设置,我正在执行DTF自定义操作dll作为提交自定义操作。如果我将MessageBox.Show插入到自定义操作中,我可以看到[PROGRAMFILESDIR]中有一个临时文件夹,名为" CustomActionProject.CA.dll - "并复制了CustomActionProject.CA.dll及其所有引用。

有没有办法告诉技术不要创建这个临时文件夹,并在.CA.dll所在的同一文件夹中解压+执行CustomActionProject.CA.dll?

编辑:

我发现通过配置wix.ca.targets,我无法在.CA.dll中包含引用。这可以防止.CA.dll在我的情况下包含20MB的dll。

现在我想确保CustomActionProject.dll能够看到随产品一起安装的引用。

文件是:

<ProgramFilesFolder>
  <MyApplicationFolder>
    CustomActionProject.CA.dll
    ... About 30 dlls installed with the application that CustomActionProject.dll needs to call
    <Place I Would Like to See CustomActionProject.dll extracted> 

2 个答案:

答案 0 :(得分:1)

您的自定义操作是使用托管的.Net语言(可能是C#或VB.Net)编写的。由于msi文件可能只包含由本机代码组成的dll自定义操作,因此DTF工具(特别是工具makesfxca.exe)将托管dll与帮助程序代码打包/包装,从而生成自解压本机代码dll。遵循WIX的命名约定,本机自定义操作dll包含.CA中缀。

为了实现这一点(即,使用用于生成托管代码的语言编写自定义操作),必须进行自我提取。因此,对您的问题的简短回答是“”。

答案 1 :(得分:1)

DTF自动将其文件提取到临时文件夹以供执行,然后清理处理。这非常好,因为它消除了某些竞争条件。如果愿意,您仍然可以将这些文件编写到安装程序中。例如,在以前的公司,我们的安装程序在安装期间使用多个DLL进行许可检查,并安装它们以供应用程序在运行时使用。

顺便说一句,确保你已经看到了这个:

WiX DTF Behavior Alert

相关问题