Friday, December 16, 2011

Internal Error 2738

Have you ever started to install a product, think it’s about to install, and then been greeted with:
image
This happened to me recently (today) while installing the GP2010 version of AvaTax. Specifically AvaTax 11.0.0.0.1.05.

Well, I’ve seen this error many times and have solved it by registering the vbscript.dll. To register the DLL, do the following:
For a 32-bit machine

  1. First, be sure to close the Windows installer.
  2. Click Start > All Programs > Accessories
  3. Right-click on Command Prompt and select Run as Administrator.
  4. Type cd C:\Windows\System32 and then press Enter.
  5. Type regsvr32 C:\Windows\System32\vbscript.dll and then press Enter.
  6. You will hopefully receive the following dialog:image
    Click OK
  7. Close the command prompt window.
  8. Restart your computer.
For a 64-bit machine
  1. First, be sure to close the Windows installer.
  2. Click Start > All Programs > Accessories
  3. Right-click on Command Prompt and select Run as Administrator.
  4. Type cd C:\Windows\SysWOW64 and then press Enter.
  5. Type regsvr32 C:\Windows\SysWOW64\vbscript.dll and then press Enter.
  6. You will hopefully receive the following dialog:image
    Click OK
  7. Close the command prompt window.
  8. Restart your computer.
Normally, that’s all you need to do. But what if things go wrong???

If Things Go Wrong:
If this doesn’t work, you’ll need to take more aggressive action. After searching the MSDN site and blogs, I found the solution. If you want to read the original article, go to: article on 2738 errors.  As it turns out, script-based custom action failures are behind many 2738 (and 2739) errors. If you are a programmer (are you listening Avalara?) it would be best not to use script-based custom actions in an MSI. If you do, you are opening up your users to problems.
The problem is that re-registering the DLL from a regular command prompt writes the registration to  HKEY_CURRENT_USER instead of HKEY_CURRENT_MACHINE. Starting with Vista, the Windows Installer will not load and use scripting engines if the registration is written to HKEY_CURRENT_USER. Consequently, re-registering the DLL from a normal user cmd prompt, will not help fix this type of error.
To see if you have this problem – MAKE A BACKUP OF YOUR REGISTRY-  and then check for the existence of the key below, and unregister it if it exists in HKEY_CURRENT_USER.
  • For a 32-bit machine: HKCU\SOFTWARE\Classes\CLSID\{ B54F3741-5B07-11CF-A4B0-00AA004A55E8}
  • For a 64-bit machine: HKCU\SOFTWARE\Classes\Wow6432Node\CLSID\{B54F3741-5B07-11CF-A4B0-00AA004A55E8}
To unregister the vbscript.dll from HKEY_CURRENT_USER:
  1. First, be sure to close the Windows installer, and then MAKE A BACKUP OF YOUR REGISTRY. After the backup is complete, continue the listed steps.
  2. Click Start > All Programs > Accessories
  3. Right-click on Command Prompt and select Run as Administrator.
  4. For a 32-bit machine type in the following command:
    reg delete "HKCU\SOFTWARE\Classes\CLSID\{B54F3741-5B07-11CF-A4B0-00AA004A55E8}" /f
  5. For a 64-bit machine type in the following command:
    reg delete "HKCU\SOFTWARE\Classes\Wow6432Node\CLSID\{B54F3741-5B07-11CF-A4B0-00AA004A55E8}" /f
After removing the HKCU key, my software – Avalara’s AvaTax – installed perfectly.
I hope this helps someone with this delightful dialog:
image
Until next post!
Leslie

No comments: