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