Install Error: Could not access VBScript run time for custom action

vbscriptwindows-installerwindows-server-2008

I'm trying to install a package on a Windows 2008 server. The package is refusing to install. I have run the install with the following command line switched to get a log file:

/lxv InstallLog.txt

This is the error that I see in the file:
Error 2738.Could not access VBScript run time for custom action

I have looked around and found some people saying that this is needed:
Regsvr32 vbscript.dll

This because on a Windows Server 2008 system, the VBScript.dll is not registered for the HKeyCurrent_User only the HKeyLocal_Machine due to security issues. This doesn't quite "smell" right.

I initially tried running the install as an administrator but no luck.
I have written a small VBScript program that displays a message box and it appears to run properly.
In the file: Test.VBS I have this:

msgbox("Hello world")

When I double click on it I get a message box appearing implying that VBScript is indeed functional.
I have disabled UAC on the machine and I still get the error.

As suggested by Evan I have verified the following registration:

HKCU\SOFTWARE\Classes\CLSID\{B54F3741-5B07-11CF-A4B0-00AA004A55E8}

It does exist and looks fine.
As another test, I ran the Regsvr32 vbscript.dll from an Administrator console and tried again. Still no luck, I get the same errors as before.

Best Answer

VBScript for custom actions is bad form. You should slap around whoever made that installer package.

Have you double-checked that the following registry key doesn't exist:

HKCU\SOFTWARE\Classes\CLSID\{B54F3741-5B07-11CF-A4B0-00AA004A55E8} 

Secondly, when you ran the "REGSVR32 vbscript.dll" command, did you do so from an elevated command-prompt?

The reason that MSIEXEC won't load a VBscript.dll registered in HKEY_CURRENT_USER is that MSIEXEC is running elevated, and an unprivileged user could, potentially, register a trojan-horse VBscript.dll and use that as a mechanism to execute code in an elevated context. It's a security feature, and not a mistake.