## 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 | 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