Solved

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

Posted on 2009-07-14
2
382 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
2 Comments
 
LVL 30

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

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

This article describes relatively difficult and non-obvious issues that are likely to arise when creating COM class in Visual Studio and deploying it by professional MSI-authoring tools. It is assumed that the reader is already familiar with the cla…
As game developers, we quickly learn that Artificial Intelligence (AI) doesn’t need to be so tough.  To reference Space Ghost: “Moltar, I have a giant brain that is able to reduce any complex machine into a simple yes or no answer. (http://www.youtu…
The viewer will learn how to use NetBeans IDE 8.0 for Windows to connect to a MySQL database. Open Services Panel: Create a new connection using New Connection Wizard: Create a test database called eetutorial: Create a new test tabel called ee…
The viewer will learn how to synchronize PHP projects with a remote server in NetBeans IDE 8.0 for Windows.

707 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

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now