Registering a SIP Application with Live Communications Server

 
Microsoft Office Live Communications Server 2005 with SP1

Registering a SIP Application with Live Communications Server

The following managed code sample registers a MSFT_SIPApplicationSetting object for a SIP application that will run on Live Communications Server. This object contains the information used by WMI to identify a SIP application on the server.

The application is registered if a corresponding MSFT_SIPApplicationSetting entry with the same URI is present in the WMI repository. The URI of the application is defined in the application manifest of the SIP application. If an application is not successfully registered (a corresponding WMI entry was not created), the application will not connect to the Live Communications Server.

Script-only (MSPL) applications are installed through the Microsoft® Management Console (MMC), rather than WMI directly.

C#

using System;
using System.Management;

namespace SIPSetup 
{

    class AppRegisterObj 
    {
        // ManagementObject that contains the specific configuration for
        // the MSFT_SIPApplicationSetting instance
        private ManagementObject _appSetting;

        // Contains the unique URI as defined in the application manifest
        private string _uri;
        // Public read-only property for the URI
        public string Uri
        {
            get
            {
                return _uri;
            }
        }          
    
        // Public constructor for the AppRegisterObj class
        // Parameters:
        //  -- instanceId: System.Guid object that specifies the Instance ID of the
        //   MSFT_SIPApplicationSetting object
        //  -- uri: string value that specifies the unique URI of the object
        //  -- name: string value that specifies the friendly name of the object
        //  -- isEnabled: true if this application will run; false if it will not
        //  -- isCritical: true if application failure should shut down the Live Communications server; 
        //       false if it should not
        //  -- scriptPath: optional path to script if application is script-only; use the
        //   empty string "" if not applicable
        //  Return value: void
        public AppRegisterObj(
            Guid instanceID,
            string uri,
            string name,
            bool isEnabled,
            bool isCritical,
            string scriptPath
            ) 
        {
            // Create an instance of the System.Management.ManagementClass class configured
            // for MSFT_SIPApplicationSetting.
            ManagementClass appSettingClass = new ManagementClass(
                "root/cimv2",  // WMI repository
                "MSFT_SIPApplicationSetting", // WMI class type
                new ObjectGetOptions() // empty ObjectGetOptions object
                );

            // Set the _uri field of this object to the supplied URI.
            _uri = uri;

            // Create an instance of the MSFT_SIPApplicationSetting class using the
            // configuration supplied to appSettingClass and assign it to the
            // private _appSetting field of this AppRegisterObj instance.
            _appSetting = appSettingClass.CreateInstance();

            // Populate the properties using the parameters supplied to
            // the constructor.
            _appSetting["InstanceID"] = "{" + instanceID.ToString() + "}";
            _appSetting["URI"] = _uri;
            _appSetting["Name"] = name;
            _appSetting["Enabled"] = (isEnabled == true) ?
                "TRUE" : "FALSE";
            _appSetting["Critical"] = (isCritical == true) ?
                "TRUE" : "FALSE";
        
            // Check for the empty string; if it is not empty, a 
            // script path is used and must be assigned to the "ScriptPath"
            // property.
            if (scriptPath != "") 
            {
                _appSetting["ScriptPath"] = scriptPath;
            }
            
        }

        // Register the object with WMI.
        public void Register() 
        {
            try 
            {
                _appSetting.Put();
                Console.WriteLine("Application [{0}] was successfully registered!", _uri);
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception thrown: {0}", e.Message);
            }
        
        }

        // Unregister the object with WMI.
        public void Unregister() 
        {
            try 
            {
                _appSetting.Delete();
                Console.WriteLine("Application [{0}] was successfully unregistered!", _uri);    
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception thrown: {0}", e.Message); 
            }
        
        }

        // Object entry point
        public static void Main() 
        {
            // Create an instance of AppRegisterObj.
            AppRegisterObj myAppRegisterObj = new AppRegisterObj(
                Guid.NewGuid(),
                "http://my.domain.com/myAppName",
                "My SIP Application",
                true,
                false,
                ""
                );
            
            // Register this new instance.
            myAppRegisterObj.Register();

            // Unregister this new instance.
            myAppRegisterObj.Unregister();
                                
        }

    }

}

VB.NET

Imports System
Imports System.Management

Class AppRegisterObj

    '  ManagementObject that contains the specific configuration for
    '  the MSFT_SIPApplicationSetting instance
   Private AppSetting As ManagementObject
    '  Contains the unique URI as defined in the application manifest  
   Public Uri As String
    '  Public constructor for the AppRegisterObj class
    '  Parameters:
    '   -- instanceId: System.Guid object that specifies the Instance ID of the
    '    MSFT_SIPApplicationSetting object
    '   -- uri: string value that specifies the unique URI of the object
    '   -- name: string value that specifies the friendly name of the object
    '   -- isEnabled: true if this application will run; false if it will not
    '   -- isCritical: true if application failure should shut down Live Communications server; 
    '        false if not
    '   -- scriptPath: optional path to script if application is script-only; use the
    '                  empty string "" if not applicable
    '   Return value: void    
   Public Sub New(instanceID As System.Guid, uri As String, name As String, isEnabled As Boolean,
      isCritical As Boolean, scriptPath As String)
        '  Create an instance of the System.Management.ManagementClass class configured
        '  for MSFT_SIPApplicationSetting.
      Dim appSettingClass As New ManagementClass("root/cimv2", "MSFT_SIPApplicationSetting", 
         New ObjectGetOptions())
        '  Set the _uri field of this object to the supplied URI.
      Uri = uri
        '  Create an instance of the MSFT_SIPApplicationSetting class using the
        '  configuration supplied to appSettingClass and assign it to the
        '  private _appSetting field of this AppRegisterObj instance.
      AppSetting = appSettingClass.CreateInstance()
        '  Populate the properties using the parameters supplied to
    '  the constructor.
      AppSetting("InstanceID") = "{" + instanceID.ToString() + "}" ' Curly braces necessary
      AppSetting("URI") = Uri
      AppSetting("Name") = name
      
      If isEnabled = True
         AppSetting("Enabled") = "TRUE"
      Else
         AppSetting("Enabled") = "FALSE"
      End If
      
      If isCritical = True
         AppSetting("Critical") = "TRUE"
      Else
         AppSetting("Critical") = "FALSE"
      End If
        '  Check for the empty string; if it is not empty, a 
        '  script path is used and must be assigned to the "ScriptPath"
        '  property.
      If scriptPath <> "" Then
         AppSetting("ScriptPath") = scriptPath
      End If

   End Sub ' New
    
   ' Register the object with WMI.
   Public Sub Register()

      Try
         AppSetting.Put()
         Console.WriteLine("Application [{0}] was successfully registered!", Uri)
      Catch e As Exception
         Console.WriteLine("Exception thrown: {0}", e.Message)
      End Try

   End Sub 'Register
    
   ' Unregister the object with WMI.
   Public Sub Unregister()

      Try
         AppSetting.Delete()
         Console.WriteLine("Application [{0}] was successfully unregistered!", Uri)
      Catch e As Exception
         Console.WriteLine("Exception thrown: {0}", e.Message)
      End Try

   End Sub 'Unregister
    
   
   Public Shared Sub Main()

      ' Create an instance of AppRegisterObj with the supplied parameters.
      Dim myAppRegisterObj As New AppRegisterObj(Guid.NewGuid(), "http: ' my.domain.com/myAppName",
        "My SIP Application", True, False, "")
      
      ' Register the new object.
      myAppRegisterObj.Register()
      
      ' Unregister the new object.
      myAppRegisterObj.Unregister()

   End Sub 'Main 

End Class 'AppRegisterObj

For an unmanaged code sample using C++ and COM, see Registering a SIP Application (Unmanaged Code).

  
  What did you think of this topic?
  © 2008 Microsoft Corporation. All rights reserved.