Solved

how to find all dependency dll's to include them in application delivery

Posted on 2009-07-14
2
388 Views
Last Modified: 2013-12-26
I am trying to make a installer for an application that does not require to include multiple and large additional files, like i.e. .NET service Pack 2.1 20 or 3.5 etc.
So what I am looking for is a dependency walker that allows me to copy all required dll's to one place so I can includen them in my installation.

Or do you have any other suggestions for the issue?
Basic thing is that the application that works on my machine does not work on all the others due to some missing windows update packages etc - thus I need to include them in my installation. But instead of including the original large packages I'd like to include only the dll's I need from them..
0
Comment
Question by:Seppoo
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 31

Accepted Solution

by:
Zoppo earned 500 total points
ID: 24847420
Hi Seppoo,

I don't think it's a good idea to just copy system DLLs onto a target machine because you can't grant these DLLs are working correctly with those installed on the system. You can't simply copy all system DLLs needed for any Windows-Version, i.e. Kernel32.dll or other very basic DLLs can't be exchanged between differen Windows-Versions.

IMO you should either see if it's possible to compile your application into a single EXE (i.e. by static linking of C-Runtime and MFC [if used]) or create a setup containing original Microsoft redistributable packages.

In the some latest versions of Visual Studio it's quite easy to create a very simple Setup, just add a new Project of Type 'Other Project Types->Setup and Deployment->Setup Project' to your solution and 'fill' it with your application dependencies. Or you can use some other Setup creation package, i.e. InstallShield from Microsoft or the OpenSource Tool NSIS (http://nsis.sourceforge.net/Main_Page).

Hope that helps,

ZOPPO
0
 
LVL 39

Expert Comment

by:itsmeandnobodyelse
ID: 24847761
>>>> because you can't grant these DLLs are working correctly with those installed on the system.
Some of these dlls you could copy into the folder where the application exe resides. That way they wouldn't collide with those installed at the target system. But as that wouldn't work with registered dlls and hence is not recommendable to do so.

Instead you should/could do:

1. For MS libraries and subsystems like .NET or Visual C++ runtime, get a download from MS download page suitable for the target system. Then install it separately (prior) to installing your executables. You also could install these packages within your own setup but that probably is much more difficult and may have the problem that newer updates of the packages must be installed separately anyhow. So, it is not much won. Also if you have different target platforms you would need to distribute packages for any of them.

2. For third party libraries you probably integrate their runtime setup into your own setup. If the have no own setup you may copy their dlls to the application folder as told above and - if needed - add them to .manifest (XP only) or registry. The .manifest is a .NET way to use individual versions of a dll without needing to install them globally for the target system. If you have no .manifest or can't use it, dlls were registered by calling regsvr32. But in that case your setup must check whether the dll is not already registered at the target system. In that case things get complicated cause some other application may need a different version than your's what could give unsolvable issues.  
0

Featured Post

Online Training Solution

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action. Forget about retraining and skyrocket knowledge retention rates.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

What is RenderMan: RenderMan is a not any particular piece of software. RenderMan is an industry standard, defining set of rules that any rendering software should use, to be RenderMan-compliant. Pixar's RenderMan is a flagship implementation of …
Recently, in one of the tech-blogs I usually read, I saw a post about the best-selling video games through history. The first place in the list is for the classic, extremely addictive Tetris. Well, a long time ago, in a galaxy far far away, I was…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
THe viewer will learn how to use NetBeans IDE 8.0 for Windows to perform CRUD operations on a MySql database.

688 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question