Solved

Deployment:  System.IO.FileNotFoundException:

Posted on 2004-04-28
9
515 Views
Last Modified: 2007-12-19
I am deploying a small database program onto an office computer.  The program runs seemlessly on the computer it has been developed on.  I created an msi project to install the program.

When I run the program all is fine except for when I click on one button on a second dialog form.

The appropiate .Net Framework has  been installed on the computer where I am having trouble.

************** Exception Text **************
System.IO.FileNotFoundException: The specified module could not be found.
   at E_Tracker.AddRecord.Button3_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 1.0.5000.0
    Win32 Version: 1.1.4322.573
    CodeBase: file:///c:/windows/microsoft.net/framework/v1.1.4322/mscorlib.dll
----------------------------------------
E-Tracker
    Assembly Version: 1.0.1579.14858
    Win32 Version: 1.0.1579.14858
    CodeBase: file:///C:/Program%20Files/E-Tracker/E-Tracker_inst/E-Tracker.exe
----------------------------------------
System.Windows.Forms
    Assembly Version: 1.0.5000.0
    Win32 Version: 1.1.4322.573
    CodeBase: file:///c:/windows/assembly/gac/system.windows.forms/1.0.5000.0__b77a5c561934e089/system.windows.forms.dll
----------------------------------------
System
    Assembly Version: 1.0.5000.0
    Win32 Version: 1.1.4322.573
    CodeBase: file:///c:/windows/assembly/gac/system/1.0.5000.0__b77a5c561934e089/system.dll
----------------------------------------
Microsoft.VisualBasic
    Assembly Version: 7.0.5000.0
    Win32 Version: 7.10.3052.4
    CodeBase: file:///c:/windows/assembly/gac/microsoft.visualbasic/7.0.5000.0__b03f5f7f11d50a3a/microsoft.visualbasic.dll
----------------------------------------
System.Drawing
    Assembly Version: 1.0.5000.0
    Win32 Version: 1.1.4322.573
    CodeBase: file:///c:/windows/assembly/gac/system.drawing/1.0.5000.0__b03f5f7f11d50a3a/system.drawing.dll
----------------------------------------
System.Data
    Assembly Version: 1.0.5000.0
    Win32 Version: 1.1.4322.573
    CodeBase: file:///c:/windows/assembly/gac/system.data/1.0.5000.0__b77a5c561934e089/system.data.dll
----------------------------------------
System.Xml
    Assembly Version: 1.0.5000.0
    Win32 Version: 1.1.4322.573
    CodeBase: file:///c:/windows/assembly/gac/system.xml/1.0.5000.0__b77a5c561934e089/system.xml.dll
----------------------------------------
Interop.DSOleFile
    Assembly Version: 1.4.0.0
    Win32 Version: 1.4.0.0
    CodeBase: file:///C:/Program%20Files/E-Tracker/E-Tracker_inst/Interop.DSOleFile.DLL
----------------------------------------
0
Comment
Question by:NateDizzle
  • 3
  • 3
9 Comments
 
LVL 5

Expert Comment

by:tgannetts
ID: 10939568
What does the button on the form attempt to do?

Tom  
0
 

Author Comment

by:NateDizzle
ID: 10939619
it displays a file dialog / folder dialog dependent on a variable.  Then it uses the dsolefile.dll to get the document properties (title) from a file if a file was chosen.

I originally assumed that the dsolefile was the problem, but it indicates  that it has been loaded and the dll file and interop file have been transferred to the other computer.
0
 
LVL 5

Expert Comment

by:tgannetts
ID: 10939744
My first thought was that it was probably the application unable to locate the Interop.DSOleFile.DLL. Is this definitely located in the application folder on the machine it is not working properly on?

If it is, then could you add the code that you are using for the button click.

Tom
0
Active Directory Webinar

We all know we need to protect and secure our privileges, but where to start? Join Experts Exchange and ManageEngine on Tuesday, April 11, 2017 10:00 AM PDT to learn how to track and secure privileged users in Active Directory.

 

Author Comment

by:NateDizzle
ID: 10939783
As I debug this myself I have discovered that the dsolefile is the problem specifically these two lines:

Dim PropReader As New DSOleFile.PropertyReader
Dim Props As DSOleFile.DocumentProperties
0
 

Author Comment

by:NateDizzle
ID: 10940270
OKAY!

So I solved it, vb was referring to the file path of the Dsole.dll on my computer.  So i pointed it to the c:\ drive and placed the dll in that folder in the other computer.

WHY doesn't vb redirect this reference when it moves the dll with the distribution package????  This is beyond me, it installed the dll onto the other computer but doesn't change the path of the reference.  There must be something I overlooked to get VB to do this, right?
0
 
LVL 5

Accepted Solution

by:
tgannetts earned 250 total points
ID: 10947180
The problem is that at run time, the program does not remember the original location of a DLL. It instead will check the usual assembly locations eg application directory, System folder etc. Unless it finds the dll in one of these locations it will throw an exception. Remember also that the IDE will often create wrapper dlls (for example when a project uses Office.Interop), which will not necessarily be found on other computers. These will have to be copied into the GAC, or one of the default assembly locations.

Tom.  
0
 
LVL 96

Assisted Solution

by:Bob Learned
Bob Learned earned 250 total points
ID: 11123208
You have to register COM components to get them to work.  Even if you have an Inter wrapper class, the DLL still needs to be registered.  You can fake it out sometimes, but it is not very forgiving.

Bob
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

The ECB site provides FX rates for major currencies since its inception in 1999 in the form of an XML feed. The files have the following format (reducted for brevity) (CODE) There are three files available HERE (http://www.ecb.europa.eu/stats/exch…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…
In a recent question (https://www.experts-exchange.com/questions/29004105/Run-AutoHotkey-script-directly-from-Notepad.html) here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…

831 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