Had a quick scare today when a customer called complaining that “The Word Program” was crashing; we had delivered an application that used web services and word interop to do some nifty web screen scraping and Word mail merging just a few months earlier. Something was up. After further conversations, we got the customer to send a screen shot of the error message and learned that the application was not able to load the Microsoft.Office.Interop.Word assembly -- although the application has been running fine for months now. Other details came to light like they had recently upgraded their workstations and were now on a Windows 2003 network, but nothing that really stuck out -- unless they had removed the dll! They assured us the dependency was right where the installer placed it.
We scratched our heads.
We decided I should Remote Desktop to the machine to see this for myself, while a few others confirmed that the installer dependencies included the interop assembly etc. As soon as I saw the start menu, I knew what the problem was. Call off the hounds! In an attempt to create a shortcut to our tool on their start menu, they had copied the real exe to the start/programs directory -- it wasn't a shortcut, but a duplicate of the exe. The problem is, the other assembly dependencies were not copied and .Net couldn't find the office.interop assembly from this start/programs location. I could've GAC'd the dependencies, but for this it was best to create a real shortcut to the exe file in it's home directory and delete the copy on the start/programs file.
Much ado about nothing, but when a customer has problems we all have problems!