【问题标题】:DTF is copying custom action dll filesDTF 正在复制自定义操作 dll 文件
【发布时间】:2014-08-29 15:06:58
【问题描述】:

我有在 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> 

【问题讨论】:

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


    【解决方案1】:

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

    顺便说一句,请确保您已经看过这个:

    WiX DTF Behavior Alert

    【讨论】:

    • 谢谢!我试图在我的 InstallShield 项目中用这个 DTF 替换 .NET 自定义操作。我们的自定义操作正在调用大量应用程序代码,并且提取到子目录给我带来了麻烦。卸载后该目录甚至保留在那里。我已编辑问题以针对此问题。
    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的回答。我可以看到为什么需要提取 .CA.dll,但我担心所有引用也会被复制到目录中。我想知道是否有办法将此 dll 直接提取到 [INSTALLDIR],而无需创建其他文件夹和复制引用。
    • 假设“引用”是指诸如“SfxCA.dll”、“Microsoft.Deployment.WindowsInstaller.dll”之类的文件以及 .Net 未提供的托管自定义操作的 dll 的其他依赖项;这些是安装过程中需要的临时文件。为什么将它们放在您的应用程序文件旁边(寿命更长)?或者您在写“[INSTALLDIR] 时是在谈论“C:\windows\installer”吗?当您写“复制引用”时,您的意思是自解压文件吗?您是否不小心将许多(多余的)文件传递给了“makesfxca”?很难看出你对什么感到不舒服。也许你可以扩展 Q?
    • 我发现 wix.ca.targets 包含所有不需要的引用(项目中有大约 20 个 dll)。我可以改变它。但是.CA.dll 文件会被解压到“C:\Program Files\MyProduct\CustomActionProject.CA.dll-\CustomActionProject.dll”。我希望将其提取到“C:\Program Files\MyProduct\CustomActionProject.dll”。不需要创建“CustomActionProject.CA.dll-”目录。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多