将exe + dll打包成一个可执行文件(不是.NET)

Phi*_*e F 31 dll

可能重复:
如何将C++ windows dll合并到C#应用程序exe中?

是否有人知道可以将多个DLL和.EXE打包到一个可执行文件中的程序.我不是在谈论.NET案例,我在谈论一般的DLL,其中一些是我用C++生成的,其他一些是我无法控制的外部DLL.

我的具体案例是一个用py2exe打包的python程序,我希望通过打包来"隐藏"另一个DLL.但问题很普遍.

看看的东西:

  • ILMerge:特定于.NET
  • NETZ:特定于.NET
  • UPX:执行DLL压缩但不包含多个DLL + EXE打包
  • FileJoiner:
几乎得到了它.它可以将可执行文件+任何东西打包到一个exe中,但是当打开它时,它将为每个打包的文件启动默认的opener.因此,如果用户用户dlldepend已安装,它将启动它(因为这是默认的dll开启器).

也许这不可能?


答案摘要:

DLL打开由操作系统管理,因此将DLL打包成可执行文件意味着在某些时候,需要将它们提取到操作系统可以找到它们的位置.没有灵丹妙药.

所以,我想要的是不可能的.

除非...

我们改变了操作系统中的内容.感谢Conrad指向ThinInstall,它将应用程序和操作系统加载机制虚拟化.使用ThinInstall,可以将所有内容打包在一个exe(DLL,注册表设置,...)中.

小智 6

看看BoxedApp.祝好运!


Rad*_*Rad 5

看看Thinstall ThinApp

  • 看起来链接无效了 (2认同)
  • 它有效……但对于考虑此选项的任何人,ThinApp 将您的应用程序与名为 TSASurrogate.exe 的东西打包在一起,而在 5.1 版中,它是 **14 兆字节**。在我看到的情况下,这使程序的大小增加了一倍多。 (2认同)

Kac*_*hed 5

尝试一下PowerpackerEvalaze是另一个免费的虚拟化解决方案。 Enigma Virtual Box免费版