Skip to content

Commit e1a4660

Browse files
[All Hosts] (publish) Clarify VSTO COM equivalents feature (#5271)
* [All Hosts] (publish) Clarify VSTO COM equivalents feature * add include and other fixes * correction * Apply suggestions from code review Co-authored-by: Sam Ramon <[email protected]> --------- Co-authored-by: Sam Ramon <[email protected]>
1 parent 451caa9 commit e1a4660

8 files changed

+55
-46
lines changed

docs/develop/make-office-add-in-compatible-with-existing-com-add-in.md

Lines changed: 46 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,46 @@
11
---
2-
title: Make your Office Add-in compatible with an existing COM add-in
3-
description: Enable compatibility between your Office Add-in and equivalent COM add-in.
4-
ms.date: 02/12/2025
2+
title: Make your Office Add-in compatible with an existing COM or VSTO add-in
3+
description: Enable compatibility between your Office Add-in and equivalent COM or VSTO add-in.
4+
ms.date: 07/12/2025
55
ms.localizationpriority: medium
66
---
77

8-
# Make your Office Add-in compatible with an existing COM add-in
8+
# Make your Office Add-in compatible with an existing COM or VSTO add-in
99

10-
If you have an existing COM add-in, you can build equivalent functionality in your Office Add-in, thereby enabling your solution to run on other platforms such as Office on the web or Mac. In some cases, your Office Add-in may not be able to provide all of the functionality that's available in the corresponding COM add-in. In these situations, your COM add-in may provide a better user experience on Windows than the corresponding Office Add-in can provide.
10+
If you have an existing COM add-in or VSTO add-in, you can build equivalent functionality in your Office Add-in, thereby enabling your solution to run on other platforms such as Office on the web or Mac. In some cases, your Office Add-in may not be able to provide all of the functionality that's available in the corresponding COM or VSTO add-in. In these situations, your COM or VSTO add-in may provide a better user experience on Windows than the corresponding Office Add-in can provide.
11+
12+
> [!NOTE]
13+
> Because COM and VSTO add-ins can only be installed on Windows, this article refers to COM and VSTO add-ins collectively as "Windows-only" add-ins.
1114
1215
[!INCLUDE [new-outlook-vsto-com-support](../includes/new-outlook-vsto-com-support.md)]
1316

14-
You can configure your Office Add-in so that when the equivalent COM add-in is already installed on a user's computer, Office on Windows runs the COM add-in instead of the Office Add-in. The COM add-in is called "equivalent" because Office will seamlessly transition between the COM add-in and the Office Add-in according to which one is installed on a user's computer.
17+
You can configure your Office Add-in so that when the equivalent Windows-only add-in is already installed on a user's computer, Office on Windows runs the Windows-only add-in instead of the Office Add-in. The Windows-only add-in is called "equivalent" because Office will seamlessly transition between the Windows-only add-in and the Office Add-in according to which one is installed on a user's computer.
1518

1619
[!INCLUDE [Support note for equivalent add-ins feature](../includes/equivalent-add-in-support-note.md)]
1720

18-
## Specify an equivalent COM add-in
21+
## Specify an equivalent Windows-only add-in
1922

20-
### Obtain the ProgId of a COM add-in
23+
### Obtain the ID of the Windows-only add-in
2124

22-
Before you can specify an equivalent COM add-in, you must first identify its `ProgId`. To obtain the `ProgId` of a COM add-in:
25+
Before you can specify an equivalent Windows-only add-in, you must first identify its name with these steps:
2326

24-
1. Open Windows Registry Editor on the computer where the COM add-in is installed.
27+
1. Open Windows Registry Editor on any computer where the Windows-only add-in is installed.
2528
1. Go to **HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\\*<Office application\>*\Addins** or **HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\\*<Office application\>*\Addins**, where *\<Office application\>* is Excel, Outlook, PowerPoint, or Word. For example, **HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Excel\Addins**.
26-
1. Copy the name of the registry key associated with the COM add-in you need. Note that the names are case-sensitive.
29+
1. Copy the name of the registry key associated with the Windows-only add-in you need. Note that the names are case-sensitive.
2730

2831
### Configure the manifest
2932

3033
> [!IMPORTANT]
3134
> Applies to Excel, Outlook, PowerPoint, and Word.
3235
33-
To enable compatibility between your Office Add-in and COM add-in, identify the equivalent COM add-in in the [manifest](add-in-manifests.md) of your Office Add-in. Then, Office on Windows will use the COM add-in instead of the Office Add-in, if they're both installed. The configuration depends on the type of manifest that is being used.
36+
To enable compatibility between your Office Add-in and the Windows-only add-in, identify the equivalent Windows-only add-in in the [manifest](add-in-manifests.md) of your Office Add-in using the name that you obtained in the section [Obtain the ID of the Windows-only add-in](#obtain-the-id-of-the-windows-only-add-in). Then, Office on Windows will use the Windows-only add-in instead of the Office Add-in, if they're both installed. The configuration depends on the type of manifest that is being used.
3437

3538
# [Unified manifest for Microsoft 365](#tab/jsonmanifest)
3639

37-
The following example shows the portion of the manifest that specifies a COM add-in as an equivalent add-in. The value of the [`"alternates.prefer.comAddin.progId"`](/microsoft-365/extensibility/schema/extension-alternate-versions-array-prefer-com-addin#progid) property identifies the COM add-in.
40+
The following example shows the portion of the manifest that specifies a Windows-only add-in as an equivalent add-in. The value of the [`"alternates.prefer.comAddin.progId"`](/microsoft-365/extensibility/schema/extension-alternate-versions-array-prefer-com-addin#progid) property identifies the Windows-only add-in.
41+
42+
> [!NOTE]
43+
> Although the property is called "comAddin", it actually refers to any Windows-only add-in, regardless of whether the add-in is COM or VSTO. Similarly, the term "progId" is usually associated with only COM add-ins, but in the manifest it refers to the name of the Windows-only add-in.
3844
3945
```json
4046
"extensions" [
@@ -43,7 +49,7 @@ The following example shows the portion of the manifest that specifies a COM add
4349
{
4450
"prefer": {
4551
"comAddin": {
46-
"progId": "ContosoCOMAddin"
52+
"progId": "ContosoAddin"
4753
}
4854
}
4955
}
@@ -53,14 +59,20 @@ The following example shows the portion of the manifest that specifies a COM add
5359

5460
# [Add-in only manifest](#tab/xmlmanifest)
5561

56-
The following example shows the portion of the manifest that specifies a COM add-in as an equivalent add-in. The value of the `ProgId` element identifies the COM add-in and the [EquivalentAddins](/javascript/api/manifest/equivalentaddins) element must be positioned immediately before the closing `VersionOverrides` tag.
62+
The following example shows the portion of the manifest that specifies a Windows-only add-in as an equivalent add-in. The value of the `ProgId` element identifies the Windows-only add-in and the [EquivalentAddins](/javascript/api/manifest/equivalentaddins) element must be positioned immediately before the closing `VersionOverrides` tag.
63+
64+
> [!NOTE]
65+
> Although the term "ProgId" is usually associated with only COM add-ins, in the manifest it refers to the name of the Windows-only add-in, regardless of whether the add-in is COM or VSTO.
66+
67+
> [!IMPORTANT]
68+
> Use "COM" as the value of the `<Type>` element for both COM and VSTO add-ins.
5769
5870
```xml
5971
<VersionOverrides>
6072
...
6173
<EquivalentAddins>
6274
<EquivalentAddin>
63-
<ProgId>ContosoCOMAddin</ProgId>
75+
<ProgId>ContosoAddin</ProgId>
6476
<Type>COM</Type>
6577
</EquivalentAddin>
6678
</EquivalentAddins>
@@ -71,77 +83,74 @@ The following example shows the portion of the manifest that specifies a COM add
7183

7284
> [!TIP]
7385
>
74-
> - For information about COM add-in and XLL UDF compatibility, see [Make your custom functions compatible with XLL user-defined functions](../excel/make-custom-functions-compatible-with-xll-udf.md). Not applicable for Outlook.
75-
> - If you're unable to specify the **\<EquivalentAddins\>** element in the manifest of your Outlook web add-in, you must configure Group Policy instead. This only applies to Outlook. For guidance, see [Configure the Group Policy setting for Outlook add-ins](#configure-the-group-policy-setting-for-outlook-add-ins).
86+
> - For information about XLL UDF compatibility with an Excel add-in that contains custom functions, see [Make your custom functions compatible with XLL user-defined functions](../excel/make-custom-functions-compatible-with-xll-udf.md).
87+
> - For Outlook only, an admin of a computer can specify an equivalent Windows-only add-in by using a Group Policy. For guidance, see [Configure the Group Policy setting for Outlook add-ins](#configure-the-group-policy-setting-for-outlook-add-ins).
7688
77-
### Configure the Group Policy setting for Outlook add-ins
89+
## Configure the Group Policy setting for Outlook add-ins
7890

79-
For Outlook web add-ins, if you're unable to update the add-in's manifest to specify the **\<EquivalentAddins\>** element, you must identify the equivalent COM add-in in the **Deactivate Outlook web add-ins whose equivalent COM or VSTO add-in is installed** Group Policy setting instead. This setting must be configured on the user's machine. Then, classic Outlook on Windows will use the COM add-in instead of the web add-in if they're both installed.
80-
81-
> [!NOTE]
82-
> Configuring the Group Policy setting isn't necessary if the add-in's manifest already contains an **\<EquivalentAddins\>** section.
91+
A user with administrator powers on their computer can configure a Windows-only add-in to be the equivalent of an *Outlook* add-in by using the **Deactivate Outlook web add-ins whose equivalent COM or VSTO add-in is installed** Group Policy setting on the computer. This can be achieved even when the manifest of the Outlook add-in doesn't have the equivalent add-in markup. Then, classic Outlook on Windows uses the Windows-only add-in instead of the Outlook add-in if they're both installed. The following are the steps to configure the policy.
8392

8493
1. Download the latest [Administrative Templates tool](https://www.microsoft.com/download/details.aspx?id=49030), paying attention to the tool's **Install Instructions**.
8594
1. Open the Local Group Policy Editor (**gpedit.msc**).
8695
1. Navigate to **User Configuration** > **Administrative Templates** > **Microsoft Outlook 2016** > **Miscellaneous**.
8796
1. Select the setting **Deactivate Outlook web add-ins whose equivalent COM or VSTO add-in is installed**.
8897
1. Open the link to edit the policy setting.
8998
1. In the dialog **Outlook web add-ins to deactivate**:
90-
1. Set **Value name** to the `Id` found in the web add-in's manifest. **Important**: Do *not* add curly braces `{}` around the entry.
91-
1. Set **Value** to the `ProgId` of the equivalent COM add-in.
99+
1. Set **Value name** to the ID of the Outlook add-in's manifest. In the add-in only manifest, use the value of the `<ID>` element. In the unified manifest, use the value of the `id` property in the root of the manifest. Do *not* add curly braces `{}` around the entry.
100+
1. Set **Value** to the name of the equivalent Windows-only add-in. See the section [Obtain the ID of the Windows-only add-in](#obtain-the-id-of-the-windows-only-add-in).
92101
1. Select **OK** to put the update into effect.
93102

94103
![The "Outlook web add-ins to deactivate" dialog.](../images/outlook-deactivate-gpo-dialog.png)
95104

96105
## Equivalent behavior for users
97106

98-
When an [equivalent COM add-in is specified](#specify-an-equivalent-com-add-in), Office on Windows will not display your Office Add-in's user interface (UI) if the equivalent COM add-in is installed. Office only hides the ribbon buttons of the Office Add-in and doesn't prevent installation. Therefore, your Office Add-in will still appear in the following locations within the UI.
107+
When an equivalent Windows-only add-in is specified, Office on Windows won't display your Office Add-in's user interface (UI) if the equivalent Windows-only add-in is installed. But Office only hides the ribbon buttons of the Office Add-in and doesn't prevent installation. Therefore, your Office Add-in will still appear in the following locations within the UI.
99108

100109
- Under **My add-ins**.
101110
- As an entry on the ribbon manager (Excel, Word, and PowerPoint only).
102111

103112
> [!NOTE]
104-
> Specifying an equivalent COM add-in in the manifest has no effect on other platforms, like Office on the web or on Mac.
113+
> Specifying an equivalent Windows-only add-in in the manifest has no effect on other platforms, like Office on the web or on Mac.
105114
106115
The following scenarios describe what happens depending on how the user acquires the Office Add-in.
107116

108117
### AppSource acquisition of an Office Add-in
109118

110-
If a user acquires the Office Add-in from AppSource and the equivalent COM add-in is already installed, then Office will:
119+
If a user acquires the Office Add-in from AppSource and the equivalent Windows-only add-in is already installed, then Office will:
111120

112121
1. Install the Office Add-in.
113122
2. Hide the Office Add-in UI on the ribbon.
114-
3. Display a call-out for the user that points out the COM add-in ribbon button.
123+
3. Display a call-out for the user that points out the Windows-only add-in ribbon button.
115124

116125
### Centralized deployment of Office Add-in
117126

118-
If an admin deploys the Office Add-in to their tenant using centralized deployment, and the equivalent COM add-in is already installed, the user must restart Office before they'll see any changes. After Office restarts, it will:
127+
If an admin deploys the Office Add-in to their tenant using centralized deployment, and the equivalent Windows-only add-in is already installed, the user must restart Office before they'll see any changes. After Office restarts, it will:
119128

120129
1. Install the Office Add-in.
121130
2. Hide the Office Add-in UI on the ribbon.
122-
3. Display a call-out for the user that points out the COM add-in ribbon button.
131+
3. Display a call-out for the user that points out the Windows-only add-in ribbon button.
123132

124133
### Document shared with embedded Office Add-in
125134

126-
If a user has the COM add-in installed, and then gets a shared document with the embedded Office Add-in, then when they open the document, Office will:
135+
If a user has the Windows-only add-in installed, and then gets a shared document with the embedded Office Add-in, then when they open the document, Office will:
127136

128137
1. Prompt the user to trust the Office Add-in.
129138
2. If trusted, the Office Add-in will install.
130139
3. Hide the Office Add-in UI on the ribbon.
131140

132-
## Other COM add-in behavior
141+
## Other Windows-only add-in behavior
133142

134143
### Excel, PowerPoint, Word
135144

136-
If a user uninstalls the equivalent COM add-in, then Office on Windows restores the Office Add-in UI.
145+
If a user uninstalls the equivalent Windows-only add-in, then Office on Windows restores the Office Add-in UI.
137146

138-
After you specify an equivalent COM add-in for your Office Add-in, Office stops processing updates for your Office Add-in. To acquire the latest updates for the Office Add-in, the user must first uninstall the COM add-in.
147+
After you specify an equivalent Windows-only add-in for your Office Add-in, Office stops processing updates for your Office Add-in. To acquire the latest updates for the Office Add-in, the user must first uninstall the Windows-only add-in.
139148

140149
### Outlook
141150

142-
The COM add-in must be connected when Outlook is started in order for the corresponding web add-in to be disabled.
151+
The Windows-only add-in must be connected when Outlook is started in order for the corresponding Outlook add-in to be disabled.
143152

144-
If the COM add-in is then disconnected during a subsequent Outlook session, the web add-in will likely remain disabled until Outlook is restarted.
153+
If the Windows-only add-in is then disconnected during a subsequent Outlook session, the Outlook add-in will likely remain disabled until Outlook is restarted.
145154

146155
## See also
147156

docs/develop/xml-manifest-overview.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -690,6 +690,6 @@ For information about validating a manifest against the [XML Schema Definition (
690690
- [Specify Office applications and API requirements](specify-office-hosts-and-api-requirements.md)
691691
- [Localization for Office Add-ins](localization.md)
692692
- [Schema reference for XML Office Add-ins manifests](/openspecs/office_file_formats/ms-owemxml/c6a06390-34b8-4b42-82eb-b28be12494a8)
693-
- [Identify an equivalent COM add-in](make-office-add-in-compatible-with-existing-com-add-in.md)
693+
- [Make your Office Add-in compatible with an existing COM or VSTO add-in](make-office-add-in-compatible-with-existing-com-add-in.md)
694694
- [Requesting permissions for API use in add-ins](requesting-permissions-for-api-use-in-content-and-task-pane-add-ins.md)
695695
- [Validate an Office Add-in's manifest](../testing/troubleshoot-manifest.md)

docs/excel/make-custom-functions-compatible-with-xll-udf.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ The manifest configuration depends on what type of manifest the add-in uses.
2424

2525
# [Unified manifest for Microsoft 365](#tab/jsonmanifest)
2626

27-
The following example shows how to specify both a COM add-in and an XLL add-in as equivalents in a unified manifest. Often you specify both. For completeness, this example shows both equivalents in context. They're identified by their [`"alternates.prefer.comAddin.progId"`](/microsoft-365/extensibility/schema/extension-alternate-versions-array-prefer-com-addin#progid) and `"alternates.prefer.xllCustomFunctions.filename"` respectively. For more information on COM add-in compatibility, see [Make your Office Add-in compatible with an existing COM add-in](../develop/make-office-add-in-compatible-with-existing-com-add-in.md).
27+
The following example shows how to specify both a COM add-in and an XLL add-in as equivalents in a unified manifest. Often you specify both. For completeness, this example shows both equivalents in context. They're identified by their [`"alternates.prefer.comAddin.progId"`](/microsoft-365/extensibility/schema/extension-alternate-versions-array-prefer-com-addin#progid) and `"alternates.prefer.xllCustomFunctions.filename"` respectively. For more information on COM add-in compatibility, see [Make your Office Add-in compatible with an existing COM or VSTO add-in](../develop/make-office-add-in-compatible-with-existing-com-add-in.md).
2828

2929
```json
3030
"extensions" [
@@ -46,7 +46,7 @@ The following example shows how to specify both a COM add-in and an XLL add-in a
4646

4747
# [Add-in only manifest](#tab/xmlmanifest)
4848

49-
The following example shows how to specify both a COM add-in and an XLL add-in as equivalents in an Excel JavaScript API add-in only manifest file. Often you specify both. For completeness, this example shows both equivalents in context. They're identified by their `ProgId` and `FileName` respectively. The `EquivalentAddins` element must be positioned immediately before the closing `VersionOverrides` tag. For more information on COM add-in compatibility, see [Make your Office Add-in compatible with an existing COM add-in](../develop/make-office-add-in-compatible-with-existing-com-add-in.md).
49+
The following example shows how to specify both a COM add-in and an XLL add-in as equivalents in an Excel JavaScript API add-in only manifest file. Often you specify both. For completeness, this example shows both equivalents in context. They're identified by their `ProgId` and `FileName` respectively. The `EquivalentAddins` element must be positioned immediately before the closing `VersionOverrides` tag. For more information on COM add-in compatibility, see [Make your Office Add-in compatible with an existing COM or VSTO add-in](../develop/make-office-add-in-compatible-with-existing-com-add-in.md).
5050

5151
```xml
5252
<VersionOverrides>
@@ -90,5 +90,5 @@ The following table compares features across XLL user-defined functions, XLL com
9090

9191
## See also
9292

93-
- [Make your Office Add-in compatible with an existing COM add-in](../develop/make-office-add-in-compatible-with-existing-com-add-in.md)
93+
- [Make your Office Add-in compatible with an existing COM or VSTO add-in](../develop/make-office-add-in-compatible-with-existing-com-add-in.md)
9494
- [Excel custom functions tutorial](../tutorials/excel-tutorial-create-custom-functions.md)

0 commit comments

Comments
 (0)