## XSIApplication.LoadPlugin

### Description

Loads a self-installable plug-in file. Files with the following extensions are considered valid: .dll,.so,.vbs, .pys,.ps,.js. This method returns a Plugin object representing the newly loaded plug-in.
If the plugin is already loaded, the existing plug-in is returned.

### C# Syntax

    Plugin XSIApplication.LoadPlugin( String in_pluginName );

### Scripting Syntax

    oReturn = XSIApplication.LoadPlugin( Path );

### Return Value

Plugin

### Parameters

Parameter | Type | Description
--- | --- | ---
Path | String | The full file path of the plug-in to load.

### Examples

#### JScript Example

    //--------------------------------------------------------------------
    //      This example shows how to define and load a plug-in in Softimage
    //
    // README: Copy and paste the example into the script editor
    // and run (F5).
    //--------------------------------------------------------------------
    function ExLoadPluginDemo(filename)
    {
            // manually load the plugin
            var oPlugin = Application.LoadPlugin( filename );
            // Display the plug-in information
            Application.LogMessage( "Name: "                + oPlugin.Name );
            Application.LogMessage( "Author: "              + oPlugin.Author );
            Application.LogMessage( "Major: "               + oPlugin.Major );
            Application.LogMessage( "Minor: "               + oPlugin.Minor );
            Application.LogMessage( "Language: "    + oPlugin.Language );
            Application.LogMessage( "Filename: "    + oPlugin.Filename );
            Application.LogMessage( "URL: "                 + oPlugin.URL );
            Application.LogMessage( "Email: "               + oPlugin.Email );
            Application.LogMessage( "Help: "                + oPlugin.Help );
            Application.LogMessage( "OriginPath: "  + oPlugin.OriginPath );
            Application.LogMessage( "Categories: "  + oPlugin.Categories.toArray().join(",") );
            Application.LogMessage( "Loaded: "              + oPlugin.Loaded );
            // The above script logs the following results:
            //INFO : Name: XSIApplication.LoadPlugin Example
            //INFO : Author: Softimage Co.
            //INFO : Major: 1
            //INFO : Minor: 0
            //INFO : Language: JScript
            //INFO : Filename: [userpath]\Addons\XSISDKDocExamples\Application\Plugins\ExXSIApplicationLoadPlugin.js
            //INFO : URL: www.softimage.com
            //INFO : Email: xsi@softimage.com
            //INFO : Help: [factorypath]\Addons\XSISDKDocExamples\Application\Plugins\doc\ExXSIApplicationLoadPlugin.html
            //INFO : OriginPath: [userpath]\Addons\XSISDKDocExamples\Application\Plugins\
            //INFO : Categories: Demo
            //INFO : Loaded: True
    }
    function  XSILoadPlugin( in_reg )
    {
            in_reg.Name = "XSIApplication.LoadPlugin Example";
            in_reg.Author = "Softimage Co.";
            in_reg.Major = 1;
            in_reg.Minor = 0;
            in_reg.URL = "www.softimage.com";
            in_reg.Email = "xsi@softimage.com";
            in_reg.Categories = "Demo";
            // generate help files
            GeneratePluginHelpFile(in_reg);
            return true;
    }
    function GeneratePluginHelpFile( in_reg )
    {
            var fso = XSIFactory.CreateActiveXObject("Scripting.FileSystemObject");
            var pluginfolder = fso.GetParentFolderName( in_reg.filename );
            var helpfolder = fso.BuildPath( pluginfolder, "Doc" );
            if ( ! fso.FolderExists(helpfolder ) )
            {
                    fso.CreateFolder(helpfolder);
            }
            var helpfilename = fso.GetBaseName(in_reg.filename);
            var helpfile = fso.BuildPath( helpfolder, helpfilename + ".html" );
            var file = fso.CreateTextFile ( helpfile );
            file .WriteLine( "<html>" );
            file .WriteLine( "<head>" );
            file .WriteLine( "\t<title>" + in_reg.name + "Help</title>" );
            file .WriteLine( "</head>");
            file .WriteLine( "<body>");
            file .WriteLine( "\t<p>description of "+in_reg.name+" plugin</p>" );
            file .WriteLine( "</body>" );
            file .WriteLine( "</html>" );
            file.close();
    }
    //--------------------------------------------------------------------
    // Code to bootstrap example into system
    //--------------------------------------------------------------------
    function ExampleSourceCode()
    {
            return "// XSISDK Doc Example\n" +
                    GeneratePluginHelpFile.toString() + "\n" +
                    XSILoadPlugin.toString();
    }
    // if we are running from script editor save code to
    // examples addon folder in the user's directory.
    if (GetUserPref("ScriptingSessionActive"))
    {
            var ex_name             = "ExXSIApplicationLoadPlugin";
            var ex_subfolder        = "Plugins";
            var ex_folder           = "XSISDKDocExamples";
            var ex_langsuffix       = ".js";
            CreateAddonDirectories( InstallationPath(siUserPath), ex_folder );
            var fso = XSIFactory.CreateActiveXObject("Scripting.FileSystemObject");
            var filename = XSIUtils.BuildPath(
                    InstallationPath(siUserAddonPath),
                    ex_folder,
                    "Application",
                    ex_subfolder,
                    ex_name+ex_langsuffix );
            if (!fso.FileExists(filename))
            {
                    var f = fso.CreateTextFile ( filename );
                    f.write( ExampleSourceCode() );
                    f.close();
            }
            ExLoadPluginDemo( filename );
    }

### See Also

XSIApplication.UnloadPlugin XSIApplication.Plugins