0
votes

I have a windows script file that doesn't work anymore.

The script look like this

<job>
    <reference object="Some.Component.1" />
    <script language="VBScript">

x = CreateObject("Some.Component.1")
MsgBox TypeName(x)

    </script>
</job>

When I run the script with cscript or wscript I get the error

Windows Script Host: Cannot find the type library for this reference : Some.Component.1

The error code is 0x80040068 which means "Invalid index". (I tried to removed the .1 index but it didn't work)

The strange thing is that if I remove the line <reference object="Some.Component.1"/>, the CreateObject line works and the object is created.

I know the script worked about a year ago. The "Some.Component" library has been updated but since CreateObject works I have no idea what is wrong with it.

I have tested the script on Server 2008 R2 (64bit), Server 2003 (32bit) and Windows 7 (64bit) with the same error.

Some.Component is 32 bit. For the 64bit machines I used cscript, wscript in the SysWow64 folder.

(I need the <reference../> to access enums within the component)

1
Could it be the version number has changed? You can specify it at the end of the ProgID (as you have done) or as an explicit attribute <reference [object="progID"|guid="typelibGUID"] [version="version"] /> see here.user69820
Version is still 1.0. Tried specifying it explicit but it didn't work.adrianm

1 Answers

1
votes

The type library is not registered. This is a different and separate thing from the object being registered. Usually the control will do both.

I suggest you first try unregistering and re-registering the DLL.

regsvr32.exe /u c:\path\to\control.dll
regsvr32.exe c:\path\to\control.dll

If that doesn't work, try using RegTLib.exe to register the type library (*.tlb) directly.

regtlib.exe c:\path\to\control.dll

OR

regtlib.exe c:\path\to\control.tlb

Note that the type library may be a separate file or may be embedded in the DLL.

For more on regTLib.exe see here: