Thursday, May 28, 2009

DLL problem with Wise Installation System and 8.3 filenames

This is from one the action item I deal with at the workplace. The user can install our software but when he tried to use one of the functions, the Visual Basic 6.0 application shows a message box indicating “Automation error.” This is a well-known Windows DLL problem which can be fixed easily using regsvr32 MyDLL.dll command. But I have to dig into the reason why the installer can’t get it job done correctly on the customer’s machine.

From what I known, the installer is created with Wise Installation System. I don’t know the precise version the development team used. But there is a known issue floating around the internet about the installer’s incompatibility problem with systems that disabled the generation of 8.3 filename.

I tried to reproduce the problem at work. The steps started with fresh installation of Windows Server 2003 and running fsutil behavior set disable8dot3 1 command. You can also check the current value of disable8dot3 by fsutil behavior query disable8dot3.The important thing to note that you have to restart the machine once for this changes to make effect.

After that, I installed the product. And the problem is reproduced! The fix is easy. Just uninstall the software, set disable8dot3 option to 0, restart, reinstall, and everything works!

The disable8dot3 option is set to 0 on a default installation of Windows. But there is a well-known tweak to disable this 8.3 name generation to improve directory browsing performance. This would break the Wise installer from working correctly.

I can’t reproduce the issue in the first place because I don’t know I have to restart the machine :(