2009-09-01 87 views
0

我正在寻找在我的ActiveX CAB文件中部署系统DLL的方法。 CAB无法更新系统文件,整个安装失败。完美的是,我想将DLL复制到ActiveX安装文件夹中。在CAB文件内部署系统DLL

我最好的建议(我没有尝试它)使用INF文件挂钩与一些独立的安装程序,但我不知道有另一种方式?

任何其他想法将不胜感激...

+0

哪个系统的DLL? – 2009-09-01 14:11:42

+0

我使用dbghelp.dll进行转储创建,但在Win2K中dbghelp.dll不包含MiniDumpWriteDump。所以我需要使用更新的版本,并且不能替换系统的版本。 – Eugene 2009-09-01 15:16:34

+0

也许这是一个愚蠢的问题,但是真的很难要求你需要能够在Win2K上调用MiniDumpWriteDump吗?它可能会减少头痛使用LoadLibrary/GetProcAddress针对这个二进制文件的系统副本,如果缺少入口点(因为它将在2K),只是“优雅地失败”......它应该有希望存在于XP +中...... – reuben 2009-09-03 07:47:10

回答

0

打包你的DLL作为主ActiveX控件的资源。使用您自己的代码将其写入文件。

恶意软件行业有很多这方面的经验,应该提供示例代码。

+0

我决定拒绝Win2K支持,但是这个答案看起来更有希望... – Eugene 2009-09-22 04:54:51

0

您可以将DLL安装到ActiveX安装文件夹中并动态加载dll(使用LoadLibrary)及其方法(使用GetProcAddress)。
这样你就可以控制从哪里加载dll并使用本地副本而不是系统。

+0

我只能用独立安装程序(.msi,* .exe)将DLL安装到ActiveX安装文件夹。在这种情况下,所有人都应该工作,即使没有后期约束 但问题是如何从CAB文件做到这一点? CAB拥有DestDir密钥,但它的价值在于其中一个系统位置。 顺便说一句,我想我正在使用dbghelp.lib中的MiniDumpWriteDump,它对dbghelp.dll有依赖性。 – Eugene 2009-09-01 15:31:13