• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 526
  • Last Modified:

Deployment: System.IO.FileNotFoundException:

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
NateDizzle
Asked:
NateDizzle
  • 3
  • 3
2 Solutions
 
tgannettsCommented:
What does the button on the form attempt to do?

Tom  
0
 
NateDizzleAuthor Commented:
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
 
tgannettsCommented:
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
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
NateDizzleAuthor Commented:
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
 
NateDizzleAuthor Commented:
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
 
tgannettsCommented:
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
 
Bob LearnedCommented:
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

Upgrade your Question Security!

Add Premium security features to your question to ensure its privacy or anonymity. Learn more about your ability to control Question Security today.

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now