While Outlook recognizes, loads, and runs extensions that conform to specifications for Microsoft Exchange Client extensions, you can improve an extension's performance and increase its functionality under Outlook by providing an Extension Configuration File (ECF). Using an ECF, Outlook knows ahead of time the contexts under which the extension needs to be loaded, what commands the extension contributes, the Outlook modules to which the extension applies, and so on. That way, Outlook can delay loading the extension until the extension is needed.
Without an ECF, an extension registers itself in the registry only. In the registry entry, the extension can specify a DLL, an entry point, a binary context map, a binary interface map, and a provider if applicable. An ECF, however, allows an extension to register itself with much more complete and detailed information than a registry entry.
Note If an ECF is loaded for an extension, registry entries for the extension are not used. Therefore, the ECF must contain a complete description of the extension.
The ECF provides information in a textual format, using the standard INI file format. There is only one ECF per extension, and only one extension per ECF. The file is laid as shown in the following table:
This section | Contains |
[General] | General extension information, such as version, name, and path. |
[Exchange Client Compatibility] | Keys specific to the Microsoft Exchange Client. |
[Session] | Sub-context information for the session. |
[Folder] | Sub-context information for the folder and registrations for command items for the explorer frame. |
[Item] | Sub-context information for the item and registrations for command items for the inspector frame. |
[Property Sheet] | Sub-context information for the property sheet. |
[Advanced Criteria] | Sub-context information for the advanced criteria. |
[Command] | Definitions of registrations for command items the extension is contributing. |
[Context Name] | Developer-defined context information. |
The format of each section of the ECF is described in the following sections.
This is a required section, and provides general information about the extension. This section can contain the keys shown in the following table:
Key Name | Required? | Description |
Display Name | Yes | String name of extension. |
Description | No | String description. |
GUID | Yes | Unique GUID identifying extension. |
Path | Yes | String containing path to DLL hosting extension. |
Entry Point | Yes | Integer of main entry point for extension within DLL. |
Client Version | Yes | Version number of client the extension was written for, such as 4.0. |
Service Provider | No | String containing the PR_SERVICE_NAME, not the display name, of the provider the extension is designed to work with. |
Misc Flags | No | List of additional properties of the extension. Valid values are NoOptimizeInterfaceMap, NoInstallDropDown, NoInstallMainMenu, DelayIdleInstall, MoreContexts, RemoteAlso, Mail3, VerbIsReply, InstallCommandsEarly, OutlookChooseFolder, NoFormsRegistry, Disabled, NoUserEdit. |
Valid values for the Misc Flags key are as follows:
This is an optional section. This section can contain the keys shown in the following table:
Key Name | Required? | Description |
Exchange Registry | No | 1 or 0. If the there is also an entry for the extension in the registry, the value is 1. |
Exchange Extension Key | No | String containing key under which the extension is registered in the registry. |
Exchange Context Map | No | Binary string representing context map (same as registry entry). |
Exchange Interface Map | No | Binary string representing interface map (same as registry entry). |
This is an optional section. This section can contain the keys shown in the following table:
Key Name | Required? | Description |
Events | No | List of events that apply to the extension for this context. Valid values are OnStartup, OnShutdown. |
This is an optional section. This section can contain the keys shown in the following table:
Key Name | Required? | Description |
Events | No | List of events that apply to the extension for this context. Valid values are OnDelivery, OnLogon, OnLogoff. |
This is an optional section. This section can contain the keys shown in the following table:
Key Name | Required? | Description |
Folder Class | No | List of MAPI folder classes this section applies to, such as IPF.Note. |
Folder Name | No | List of names of folders this section applies to, such as Calendar. |
Views | No | List of views this section applies to. Valid values are Explorer, Remote, Viewer. |
Events | No | List of events that apply to the extension for this context. Valid values are OnFolderChange, OnSelectionChange, OnViewChange, OnCommand, OnMenuDropDown, InstallCommands, AddPropSheetPages. |
Contexts | No | List of additional sections defining folder context behavior. See "[context name]," later in this document. |
Command Bars | No | List of command bars that apply to the extension, such as File, Edit, View, and so on. The extension is loaded when the user clicks one of these command bars. |
Menu Drops | No | List of menu drops that apply to the extension, such as File, Edit, View, and so on. This key is for extensions that change the number of commands on the menu. |
Outlook Commands | No | List of commands that the extension can intercept when the user clicks them, such as FileSaveAs. |
Commands | No | List of commands that the extension is contributing to this context as defined in the [Command] section. |
This is an optional section. This section can contain the keys shown in the following table:
Key Name | Required? | Description |
Message Class | No | List of message classes this context section applies to, such as IPM.Note. |
Item States | No | List of item states this context section applies to. Valid values are Read, Compose, Modal. |
Events | No | List of events that apply to the extension for this context. Valid values are OnItemChange, OnCheckNames, OnCheckNamesComplete, OnRead, OnReadComplete, OnWrite, OnWriteComplete, OnSubmit, OnSubmitComplete, OnCommand, OnMenuDropDown, InstallCommands, AddPropSheetPages. |
Contexts | No | List of additional sections defining item context behavior. See "[context name]," later in this document. |
Command Bars | No | List of command bars that apply to the extension, such as File, Edit, View, and so on. This key is for extensions that may add commands beyond what is listed in the [Command] section. The extension is loaded when the user clicks one of these command bars. |
Menu Drops | No | List of menu drops that apply to the extension, such as File, Edit, View, and so on. This key is for extensions that change the number of commands on the menu. |
Outlook Commands | No | List of commands that the extension can intercept when the user clicks them, such as FileSaveAs. |
Commands | No | List of commands that the extension is contributing to this context as defined in the [Command] section. |
This is an optional section. This section can contain the keys shown in the following table:
Key Name | Required? | Description |
Events | No | List of events that apply to the extension for this context. Valid Value is AddPropSheetPages. |
Property Sheet Dialogs | No | List of dialog boxes that the extension can contribute to. |
Property Sheet Exclusion | No | List of property sheet names to be intercepted by Outlook and prevented from being added. |
This is an optional section. This section can contain the keys shown in the following table:
Key Name | Required? | Description |
Events | No | List of events that apply to the extension for this context. Valid Value is AdvancedCriteria. |
Property Sheet Dialogs | No | List of dialog boxes that the extension can contribute to. |
Property Sheet Exclusion | No | List of property sheet names to be intercepted by Outlook and prevented from being added. |
This is an optional section. Each line in the [Command] section defines a single command which is used in either a [Folder] section, an [Item] section, or both. Following is an example of a line in the [Command] section:
FileAddPubFolder=50004;Add to Public Folder Favori&tes;FileFolder After FileFolderRenameFolder Separator New Scope;emsuix32.dll;452;;
The syntax for a line in this section is as follows:
keytag = commandID;title;position info;bitmap info
Where:
keytag is the key defined for the command, used in other parts of the ECF.
commandID is the command's ID.
title is the string title for the command. Use an ampersand (&) to denote an accelerator for the command. For example, Add to Public Folder Favori&tes. In this example "t"' is the accelerator.
position infois a sequence of words separated by spaces which tell Outlook where to put the command. It has three parts:
Flag | Effect |
Suppress | The extension adds the command, but Outlook suppresses it. |
New | Outlook, not the extension, adds the command at this location. There must be a line in the [Command] section with a matching ID indicating where the extension attempts to place the command. |
Enabled | The command is never disabled. |
Submenu | Makes the command a submenu. The ID specified in the first part of this line may be used as the menu name specified in the first word of the third part of other lines in this section. |
Popup | Makes the command a popup menu. The ID specified in the first part of this line may be used as the menu name specified in the first word of the third part of other lines in this section. |
Scope | Makes the command apply to selections in the Scope pane. Callbacks to GetSelectionItem or GetSelectionCount will return the currently selected folder instead of the selected items. |
Sep, Separator, or SeparatorBefore | Places a separator before the command. |
bitmap info is an optional series of values separated by semicolons. The semicolons must be present even if the values for the information are blank. The series of information is listed in the order shown:
DLL;ID;#Bitmaps;Index
These are developer-defined optional sections. The ECF allows general context information to be specified for [Folder] and [Item] sections, and then more detailed information for specific cases of the [Folder] and [Item] contexts by naming new sections to contain the specific information. You may wish, for example, to have one extension Help topic in all Mail type folders, but another for all other type folders. You could accomplish this with the following ECF sections:
[Folder] Events="InstallCommands" Contexts=ExplorerMail; ExplorerOther [ExplorerMail] Folder Class=IPF.Note Commands=MyMailHelpTopic [ExplorerOther] Commands=MyGenericHelpTopic
In the [Folder] section above, events handled by all [Folder] sub-contexts are defined as InstallCommands. Then, two new, more specific context sections are referenced: ExplorerMail and ExplorerOther.
The [ExplorerMail] section contains an entry for Folder Class to specify that this section applies only to folders of the class IPF.Note, and then goes on to specify a Help topic command.
The [ExplorerOther] section has no qualifying Folder Class key, so it is applicable to all folder classes (IPF.Note folders excepted, due to the previously defined section). It specifies another Help topic command.
Following is an example of a complete ECF:
[General] Display Name="CompuServe" Description="CompuServe" GUID={9B243160-3745-11cf-8582-00AA00C02BBB} Path="csmapx32.dll" Entry Point=1 Client Version=4.0 Service Provider=CISXP Misc Flags=RemoteAlso [Exchange Client Compatibility] Exchange Registry=1 Exchange Extension Key="CISXP" Exchange Context Map=01110110011010 Exchange Interface Map=1000000 [Folder] Events="InstallCommands" Commands=CSHelpTopics [Item] Events="InstallCommands" Commands=CSHelpTopics [Command] CSHelpTopics=50000;CompuSer&ve Mail Help Topics;Help After HelpHelp Enabled
The ECF is supplied by each extension at installation and is either read automatically by Outlook the next time it executes, or is loaded explicitly by the user on the General tab of the Options dialog box (Tools menu). If you create an ECF for an existing extension, the ECF overrides the INI/registry settings for that extension when Outlook reads the ECF.
Only two sections within an ECF typically need localization: [General] and [Command].
The entire contents of the Display Name and Descriptionkeys should be localized. These keys are used in the Add-in Manager dialog box to display the name and description of the add-in.
Localizing this section can be tricky. The string to be localized for each key is the second delimited value of the key. For example, the bold text in the following:
InboxAsst=50020;In&box Assistant...;Tools Before ToolsOOFAsst
This string, however, matches the string in the add-in DLL. If it is changed, it can no longer be identified by the internal command, resulting in two commands in the active session of Outlook: the localized command from the ECF (which is non-operational), and the English command contributed by the add-in (which is not overridden by the ECF).
The possible solutions for localization are:
InboxAsst=50020;In&box Assistant...;Tools Before ToolsOOFAsst Suppress
LocalizedInboxAsst=50020;In&box Ayudante...;Tools Before ToolsOOFAsst New
|