Search code examples
deploymentinstallationcross-platformdependenciespackaging

How to find out which files my program depend on?


I often run into the problem when I create an installer for my program that I miss out some files it depend on.

On Windows:

I often miss out some DLL's that are installed on my system. I usually test my installation by just moving the executable in a folder alone to see which DLL's it cry for. But it will use the DLL's it find on my system32 folder anyway - those DLL's maybe there in other users' system, maybe not.

Other way I found that I open the EXE in a hex editor and search for the pattern '.DLL'. But dll's can depend on other dlls too.

Is there a (preferably free) tool that can tell me what DLL's my program need? So I won't miss out anything.

On Linux:

Linuxes have a nice package management system. Making an installer in those systems means making a package for them. I can find out what .so (shared object) files my programs need. But how can I determine which package contains that .SO file so I can add that package as dependency when packaging?


Solution

  • On Windows, what you're looking for is a tool called Dependency Walker, which tells you what DLLs an EXE (or another DLL) depends on.

    On Linux, see Dependency resolution in Linux