UnInstallAddon

Description

Uninstalls an add-on file from Softimage. This must be a file in either the add-on path (siAddonPath), or the user add-on path (siUserAddonPath). Attempting to uninstall an add-on from the original installation path results in an error.

This command is the scripting equivalent of launching the Uninstall option from the File > Addon location in the main menu.

Scripting Syntax

    UnInstallAddon( FileName )

Parameters

Parameter | Type | Description
FileName [in/out] | String | The .xsiaddon file.

Examples

JScript Example

    /* ---------------------------------------------------------
       This script demonstrates how to install and uninstall
       user add-ons and factory add-ons.
    --------------------------------------------------------- */

    // Get the filename of an available add-on file, and install it, in the user add-on path.
    var myAddonFile = createAddonForDemo( siUserPath );
    Application.LogMessage( "Installing: " + myAddonFile );
    InstallAddon( myAddonFile, siUserAddonPath );

    // Now find the installed file.
    myAddonFile = XSIUtils.BuildPath( Application.InstallationPath(siUserAddonPath), "DemoAddon.xsiaddon" );
    Application.LogMessage( "Uninstalling: " + myAddonFile );
    UnInstallAddon( myAddonFile );
    killCmdForDemo(); // clean up the command that was loaded from the add-on

    // Now re-install it to the AddonPath.
    myAddonFile = createAddonForDemo( siFactoryPath );
    Application.LogMessage( "Installing: " + myAddonFile );
    InstallAddon( myAddonFile, siAddonPath );

    // Now uninstall the add-on (again).
    myAddonFile = XSIUtils.BuildPath( Application.InstallationPath(siAddonPath), "DemoAddon.xsiaddon" );
    Application.LogMessage( "Uninstalling: " + myAddonFile );
    UnInstallAddon( myAddonFile );
    killCmdForDemo(); // the plug-in is not automatically unloaded when the add-on is uninstalled

    //---------------------------------------------------------
    // Output from this script:
    //INFO : "Installing: <UserPath>\Addons\DemoAddon.xsiaddon"
    //INFO : "Uninstalling: <UserPath>\Addons\DemoAddon.xsiaddon"
    //INFO : "Installing: <FactoryPath>\Addons\DemoAddon.xsiaddon"
    //INFO : "Uninstalling: <FactoryPath>\Addons\InstalledAddons\DemoAddon.xsiaddon"

    //---------------------------------------------------------
    //  *** Helper functions ***
    //
    // Create an add-on package on the fly
    function createAddonForDemo( in_Where )
    {
       var l_AddonFile = GetAddonFileLocation( in_Where );
       var l_PluginFile = createCmdForDemo();

       var l_AddonObj = Application.CreateAddon();
       l_AddonObj.AddItem( siPluginAddonItemType, l_PluginFile );
       l_AddonObj.Save( l_AddonFile );

       // Now that it's in the .xsiaddon file, kill the source
       killCmdForDemo();

       return l_AddonFile;
    }

    // Validate the add-on file location
    function GetAddonFileLocation( in_Where )
    {
       var l_folderLocation = (in_Where == siUserPath)
           ? Application.InstallationPath( siUserAddonPath )
           : Application.InstallationPath( siAddonPath );
       var l_fso = new ActiveXObject( "Scripting.FileSystemObject" );

       // Make sure the Addons folder exists
       if (! l_fso.FolderExists(l_folderLocation) ) {
           l_fso.CreateFolder( l_folderLocation );
       }

       return XSIUtils.BuildPath( l_folderLocation, "DemoAddon.xsiaddon" );
    }

    // Create the self-installing command plug-in on disk and load it
    function createCmdForDemo()
    {
       var l_fileLocation = XSIUtils.BuildPath( Application.InstallationPath(siUserPath),
           "Application", "Plugins", "JSCmdForAddonsDemoPlugin.js" );

       var l_fso = new ActiveXObject( "Scripting.FileSystemObject" );
       var l_ts = l_fso.CreateTextFile( l_fileLocation );
       l_ts.Write( writeCmdImpl() );
       l_ts.Close();

       Application.LoadPlugin( l_fileLocation );
       return l_fileLocation;
    }

    // Supply the implementation of the self-installing command plug-in
    function writeCmdImpl()
    {
       return XSILoadPlugin.toString() + "\n\n"
           + JSCmdForAddonsDemo_Init.toString() + "\n\n"
           + JSCmdForAddonsDemo_Execute.toString();
    }

    function XSILoadPlugin( in_reg )
    {
       in_reg.Author = "InstallAddonDemo";
       in_reg.Name = "JSCmdForAddonsDemoPlugin";
       in_reg.Major = 1;
       in_reg.Minor = 0;

       in_reg.RegisterCommand("JSCmdForAddonsDemo","JSCmdForAddonsDemo");
       return true;
    }

    function JSCmdForAddonsDemo_Init( in_ctxt )
    {
       var oCmd = in_ctxt.Source;
       oCmd.Description = "'Hello World' command for demonstration";
       oCmd.ReturnValue = false;
       return true;
    }

    function JSCmdForAddonsDemo_Execute(  )
    {
       Application.LogMessage("Hello, World!", siInfo);
       return true;
    }

    // Remove the self-installing command plug-in (and delete from disk)
    function killCmdForDemo()
    {
       var p = new Enumerator( Application.Plugins );
       for ( ; !p.atEnd(); p.moveNext() ) {
           var plugin = p.item();
           if ( plugin.Name == "JSCmdForAddonsDemoPlugin" ) {
              Application.UnloadPlugin( plugin.Filename, true );
              break;
           }
       }
    }

See Also

InstallAddon | XSIApplication.InstallAddon | XSIApplication.UnInstallAddon | Addon
Plugin |  |  |

Autodesk Softimage v7.5