How to Create a Configuration Manager Custom Action Control
In Configuration Manager, to create a custom action control, you create a Windows control by using the following two classes:
Class | Description |
---|---|
SmsOsdEditorPageControl | The custom action control. You derive from this class to implement the custom action control that is displayed in the Task Sequence Editor. |
TaskSequenceOptionControl | The options control for the custom action. You derive from this class to create the custom action options page that is displayed in the Task Sequence Editor. |
These procedures show you how to create a Configuration Manager operating system deployment control assembly by using Visual Studio 2005. When it is loaded into the Task Sequence Editor, the control displays a property page that contains a text box that is used to set a user-name action variable for the custom action.
After you have completed these steps, perform the steps in the following topics to create the custom action managed object format (MOF) file and use the custom action control.
How to Create a MOF File for a Configuration Manager Custom Action
How to Use a Configuration Manager Custom Action
Note
For information about using the custom action as part of a deployment, see About Configuration Manager Custom Action Client Applications
The Control Visual Studio Project
The following procedure creates the custom action control project.
Create the control
In Visual Studio 2010, on the File menu, point to New, and then click Project to open the New Project dialog box.
From the list of Visual C#, Windows projects, select the Windows Control Library project template, and then type
ConfigMgrTSAction
in the Name box.Click OK to create the Visual Studio project.
In Solution Explorer, right-click UserControl1.cs, click Rename, and then change the name to
ConfigMgrTSActionControl.cs
.In Solution Explorer, right-click References, and then click Add Reference.
In the Add Reference dialog box, click the Browse tab, navigate to %ProgramFiles%\Microsoft Configuration Manager\AdminUI\bin, and then select the following assemblies:
Adminui.osdcommon.dll
Adminui.tasksequenceeditor.dll
Adminui.wqlqueryengine.dll
Microsoft.configurationmanagement.exe
Microsoft.configurationmanagement.managementprovider.dll
Click OK to add the assemblies as project references.
In Solution Explorer, right-click ConfigMgrTSActionControl.cs, and then click View Code.
Add the following code to include the required namespaces:
using Microsoft.ConfigurationManagement.AdminConsole; using Microsoft.ConfigurationManagement.AdminConsole.TaskSequenceEditor;
Change the class ConfigMgrTSActionControl so that it derives from SmsOsdEditorPageControl.
In ConfigMgrTSActionControl.cs, add the following new constructor to the ConfigMgrTSActionControl class:
public ConfigMgrTSActionControl(SmsPageData data) : base(data) { InitializeComponent(); }
Add the following method to initialize the control:
public override void InitializePageControl() { base.InitializePageControl(); }
Create an Options Control
The following procedure creates the code that declares the options control for the custom action. This implementation uses the default options control.
To create an options control
At the end of ConfigMgrTSActionControl.cs add the following new class in the ConfigMgrTSAction namespace:
public class ConfigureTSActionOptions : TaskSequenceOptionControl { public ConfigureTSActionOptions() : base() { } public ConfigureTSActionOptions(SmsPageData data) : base(data) { } }
Customize the User Interface
The following procedure adds a text box and code to manage action data.
To add the user interface
In Solution Explorer, right-click ConfigMgrTSActionControl.cs, and then click View Designer.
In the Toolbox, click the Common Controls tab, and then double-click TextBox. A button named
textBox1
is added to your control on the User Control Designer.Double-click the text box. An event handler named
textBox1_TextChanged
is added to the class ConfigMgrTSActionControl. Add the following code to ensure that changes are saved to the action's property manager:SetDirtyFlag(true);
In the class ConfigMgrTSActionControl, add the following method to write the text box value to the
User
property defined in the custom action MOF. This is called when the OK or Apply button is clicked.protected override bool ApplyChanges(out Control errorControl, out bool showError) { // You can check the error here and return false. if (this.HasError(out errorControl) == true) { this.ShowMessageBox( this.GetErrorString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); errorControl = null; showError = true; return false; } this.PropertyManager["User"].StringValue = textBox1.Text; return base.ApplyChanges(out errorControl, out showError); }
In the design view for the control, double-click the control to create the method ConfigMgrTSActionControl_Load.
Add the following code to the method. This code loads the text box with an existing User value. This happens when the task sequence action is edited after it is created.
textBox1.Text = this.PropertyManager["User"].StringValue;
Resource Strings
The following procedure adds the resource strings that are used to display the custom action name in the Task Sequence Editor.
To add resource strings
In Solution Explorer, on the Project menu, click Properties.
Click the Resources tab. If the resources file does not exist, create it by selecting the message that is displayed on the Resources tab.
On the Resource Designer toolbar, point to the resource view drop-down, click the arrow, and make sure it is set to Strings (which is the default). A settings grid appears, displaying the strings that are maintained by that instance of the Resource Designer.
Click the Name column of the last row in the grid, which is marked with an asterisk (*).
In the Name column, enter
DefaultDisplay_ConfigMgrTSAction
as the string name.In the Value column, enter the string Custom Action. This is the string displayed in the list of task sequence actions.
Click the Name column of the last row in the grid, which is marked with an asterisk (*).
In the Name column, enter
ConfigMgrTSAction
as the string name.In the Value column, enter
Custom Action
. This is the string that is displayed when you add the custom action.
Deploy the Assembly
This procedure builds and copies the assembly that you have created to the Configuration Manager console assemblies folder. For important information about deploying Configuration Manager console extensions, see About Configuration Manager Administrator Console Extension Deployment.
To deploy the assembly
Build the project. Visual Studio creates the assembly as \Visual Studio 2005\Projects\ConfigMgrControl\ConfigMgrTSAction\bin\Debug\ConfigMgrTSActionControl.dll.
Copy the assembly to the folder %ProgramFiles%\Microsoft Configuration Manager\AdminUI\bin.
See Also
About Configuration Manager Console Extension
Configuration Manager Console Extension Deployment
How to Create a MOF File for a Configuration Manager Custom Action
How to Use a Configuration Manager Custom Action