IComTypeLibrary

Declaration

IComTypeLibrary: IDispatch

Overview

This interface is meant to allow you to specify the information that will be placed in the registry during the Type Library's registration process.

Properties

String Guid - Gets the GUID of the type library.

IFile File - Gets the the type library file (.tlb).

String Language - Gets or sets the type library's language.

String Version - Gets or sets the type library's version.

IFolder Directory - Gets or sets the directory that contains the Help file for the type library.

UINT Cost - Gets or sets the cost, in bytes, associated with the type library properties.

String RegistryPath - Gets or sets the registry location where the Type Library is registered. For type libraries defined through MSI TypeLib table this location is read only.
Supported values: HKEY_CLASSES_ROOT\TypeLib, HKEY_CURRENT_USER\Software\Classes\TypeLib, HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib, HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\TypeLib.

Examples

 $advinst  = new-object -comObject "AdvancedInstaller"
    $proj     = $advinst.CreateProjectS("architect")

    $clsid_id       = "{4819544F-6FAF-4553-86C3-7B58F73BA4D0}"
    $interface_GUID = "{E4C611D8-6DA8-48F7-8AD8-D6CB6D64293C}"
    $typelib_GUID   = "{37687F89-8603-4E42-A5F4-4FBAB011D5F3}"

        # add new class
    $file   = $proj.FilesComponent.AddFileS("appdir", "D:\MyApp.exe")
   

    $new_class = $proj.ComComponent.NewClass("{222AD1AD-EB4D-4859-A11E-B5EC859CC0BB}",$file)

    # edit ActiveX
    $new_class.ActiveX.IsActivXControl  = $true
    $new_class.ActiveX.IsProgrammable   = $true
    $new_class.ActiveX.IsInsertable     = $true
    $new_class.ActiveX.BitmapPath       = "$($file.FullPath)"
    $new_class.ActiveX.BitmapResourceId = 1
    $new_class.ActiveX.Default          = 4
    $new_class.ActiveX.Content          = 131473
    $new_class.ActiveX.Thumbnail        = 44456
    $new_class.ActiveX.Icon             = 778
    $new_class.ActiveX.Docprint         = 89
    $new_class.ActiveX.Extensions       = ".test,.aaa"
    $new_class.ActiveX.AddDotNetCategory()
    $new_class.ActiveX.AddSafeForInitializingCategory()
    $new_class.ActiveX.AddSafeForScriptingCategory()
    $new_class.ActiveX.AddCategory("{7DD95802-9882-11CF-9FA9-00AA006C42C4}")

    # edit AppId
    $new_class.AppId.AppId                = "{10000000-0000-0000-0000-000000000001}"
    $new_class.AppId.RemoteServerToLaunch = "server name"
    $new_class.AppId.LocalService         = "service name"
    $new_class.AppId.DllSurrogate         = "aaa"
    $new_class.AppId.ActivateAtStorage    = $true
    $new_class.AppId.RunAsInteractiveUser = $true

    $new_class.ThreadingModel = "Both"
    $progId = $proj.FileAssociations.NewProgId()
    $new_class.ProgId                   =  $progId

    $new_class.VersionIndependentProgId = "Test.ProgId.1"
    $new_class.Description              = "new description for this class"
    $new_class.Version                  = "1.2.3"
    $new_class.TypeLibraryId            = "{37687F89-8603-4E42-A5F4-4FBAB011D5F3}"
    $new_class.IconPath                 = "$currentPath\resources\resources-powershell\sample.exe"
    $new_class.DefaultInProcHandler     = "2"
    $new_class.Argument                 = "/test"
    $new_class.HasRelativePath          = $true

    # add new interface
    $new_interface = $proj.ComComponent.NewInterface("{00000000-674B-41F9-9EC2-4925BF949F12}", "TestInterface") 
    $new_interface.NumberOfMethods = 3
    $new_interface.BaseInterface = "{20000000-0000-0000-0000-000000000000}"
    $new_interface.CLSID16       = "{16000000-0000-0000-0000-000000000000}"
    $new_interface.CLSID32       = "{32000000-0000-0000-0000-000000000000}"
    $new_interface.TypeLibId     = "{50000000-0000-0000-0000-000000000000}"
    $new_interface.TypeLibVersion = "2.5"
    $new_interface.RegistryPath   = "HKEY_CURRENT_USER\Software\Classes\Interface"

    # add new type librabry
    $new_typelib             = $proj.ComComponent.NewTypeLibrary($file)
    $new_typelib.GUID        = "{23487F89-8603-4E42-A5F4-4FBAB011D5F3}"
    $new_typelib.Language    = "bg"
    $new_typelib.Version     = "1.2"
    $new_typelib.Description = "new description for typelib"
    $new_typelib.Cost        = 3


    

See also

IComComponent