Multiple Add-In Express Add-Ins in an Outlook Application

Add-in Express™ Support Service
That's what is more important than anything else

Multiple Add-In Express Add-Ins in an Outlook Application
 
thiede




Posts: 40
Joined: 2016-07-05
Hello,

we are implementing an Add-In for Outlook with Add-In Express 8.4. One of our customers has another Add-In Express 8.0 based Add-In (XPhone UC Client by C4B Com For Business AG).
If the other Add-In is loaded our Add-In is removed on Read- and Compose-Tab.

Best Regards
Christopher
Posted 31 Jan, 2018 09:50:39 Top
Andrei Smolin


Add-in Express team


Posts: 18791
Joined: 2006-05-11
Hello Christopher,

Could you please reproduce the issue and send us the adxloader.log file(s) to the support email address?


Andrei Smolin
Add-in Express Team Leader
Posted 01 Feb, 2018 03:20:50 Top
thiede




Posts: 40
Joined: 2016-07-05
Hallo,

We send you our log via support mail.

The customer Add-In (XPhone ...) has no adxloader.dll.manifest. Therefore there was no log. We add a manifest for their Add-In with following text:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<loaderSettings generateLogFile="true"/>
</configuration>
Then there is a adxloader.log.

This is our manifest:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<assemblyIdentity name="OptimalSystems.Integration.OutlookAddin, PublicKeyToken=03289dc663a8bee1" imageRuntimeVersion="v4.0.30319" />
<loaderSettings generateLogFile="true" shadowCopyEnabled="false" privileges="user" minOfficeVersionSupported="14" />
</configuration>

Best Regards
Christopher
Posted 01 Feb, 2018 06:28:56 Top
Andrei Smolin


Add-in Express team


Posts: 18791
Joined: 2006-05-11
Hello Christopher,

Thank you. The log file shows both add-in are loaded correctly. I suggest that you check if calling the ReplaceGetVisibleWithVisible method in the OnRibbonBeforeLoad event helps; see the code of the method at https://www.add-in-express.com/forum/read.php?FID=5&TID=12921. You should call the method for the ADXRibbonTab components pointing to built-in Ribbon tabs; that components have a non-empty string in their the IdMso property.


Andrei Smolin
Add-in Express Team Leader
Posted 02 Feb, 2018 04:33:40 Top
Jan


Guest


Hi,

I'm a colleague of Christopher. I'd implemented your suggestion, but in general this isn't what we want to achieve.
Our customer has 2 Add-Ins. If he starts Outlook with one of them activated (either theirs or ours), all buttons are shown corrdctly. But if he activates both addins, sometimes (not every time) there is the whole 'TabNewMailMessage'missing on 'OutlookMailCompose'. Therefore I started Outlook and clicked 'New Mail' at least two times and got following result:
[img]https://files.optimal-systems.org/index.php/apps/gallery/s/oOXaEeyBaZTfmxn[/img]

I have absolutely no idea, why this happens.

Thanks alot,
Jan
Posted 02 Feb, 2018 09:54:28 Top
Andrei Smolin


Add-in Express team


Posts: 18791
Joined: 2006-05-11
Hello Jan,

Please confirm that in the OnRibbonBeforeLoad event you call the ReplaceGetVisibleWithVisible method passing it the ADXRibbonTab component describing the TabNewMailMessage tab (if such a component exists on the add-in module).


Andrei Smolin
Add-in Express Team Leader
Posted 05 Feb, 2018 05:25:07 Top
Jan


Guest


Hello Andrei,

I tested your event suggestion and got following result after unregister and register our Addin, while the XPhone Addin is installed on my development computer :

When I click 'New Mail' this is the XML provided by 'ADXRibbonBeforeLoadEventArgs.Xml':


<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="ribbonLoaded_Callback" loadImage="getImages_Callback">
  <ribbon startFromScratch="false">
    <tabs>
      <tab getVisible="getVisible_Callback" idMso="TabNewMailMessage">
        <group getKeytip="getKeytip_Callback" getLabel="getLabel_Callback" getScreentip="getScreenTip_Callback" getSupertip="getSuperTip_Callback" getVisible="getVisible_Callback" id="adxRibbonGroup_response_a0f04172d2ff4b4d80b3f79050b781c7" insertBeforeMso="GroupClipboard">
          <button getDescription="getDescription_Callback" getEnabled="getEnabled_Callback" getImage="getImage_Callback" getKeytip="getKeytip_Callback" getLabel="getLabel_Callback" getScreentip="getScreenTip_Callback" getShowImage="getShowImage_Callback" getShowLabel="getShowLabel_Callback" getSize="getSize_Callback" getSupertip="getSuperTip_Callback" getVisible="getVisible_Callback" id="adxRibbonButton_response_d97450f6db704298b0e05894f7b8b662" onAction="onActionCommon_Callback" />
          <dynamicMenu getContent="getContent_Callback" getDescription="getDescription_Callback" getEnabled="getEnabled_Callback" getKeytip="getKeytip_Callback" getLabel="getLabel_Callback" getScreentip="getScreenTip_Callback" getShowImage="getShowImage_Callback" getShowLabel="getShowLabel_Callback" getSize="getSize_Callback" getSupertip="getSuperTip_Callback" getVisible="getVisible_Callback" id="adxRibbonMenu_response_3016061f17da4bd1a29d51b0d39777ff" invalidateContentOnDrop="true" />
          <dynamicMenu getContent="getContent_Callback" getDescription="getDescription_Callback" getEnabled="getEnabled_Callback" getKeytip="getKeytip_Callback" getLabel="getLabel_Callback" getScreentip="getScreenTip_Callback" getShowImage="getShowImage_Callback" getShowLabel="getShowLabel_Callback" getSize="getSize_Callback" getSupertip="getSuperTip_Callback" getVisible="getVisible_Callback" id="adxRibbonMenu_response_218d0f59faf04080a5af969c9fb33a4d" invalidateContentOnDrop="true" />
          <dialogBoxLauncher>
            <button getEnabled="getEnabled_Callback" getKeytip="getKeytip_Callback" getScreentip="getScreenTip_Callback" getSupertip="getSuperTip_Callback" getVisible="getVisible_Callback" id="adxRibbonDialogBoxLauncher_response_4466ee73078943d8bbf3327cdf52f6eb" onAction="onActionCommon_Callback" />
          </dialogBoxLauncher>
        </group>
        <group getKeytip="getKeytip_Callback" getLabel="getLabel_Callback" getScreentip="getScreenTip_Callback" getSupertip="getSuperTip_Callback" getVisible="getVisible_Callback" id="adxRibbonGroup_response_1455a69ad19b48d9b6e90fe979881843" insertBeforeMso="GroupClipboard">
          <button getDescription="getDescription_Callback" getEnabled="getEnabled_Callback" getImage="getImage_Callback" getKeytip="getKeytip_Callback" getLabel="getLabel_Callback" getScreentip="getScreenTip_Callback" getShowImage="getShowImage_Callback" getShowLabel="getShowLabel_Callback" getSize="getSize_Callback" getSupertip="getSuperTip_Callback" getVisible="getVisible_Callback" id="adxRibbonButton_response_086f75becf9c455aa20752213299b42b" onAction="onActionCommon_Callback" />
          <dialogBoxLauncher>
            <button getEnabled="getEnabled_Callback" getKeytip="getKeytip_Callback" getScreentip="getScreenTip_Callback" getSupertip="getSuperTip_Callback" getVisible="getVisible_Callback" id="adxRibbonDialogBoxLauncher_response_6e4281d64a2449e690859417010b9e2e" onAction="onActionCommon_Callback" />
          </dialogBoxLauncher>
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>


So I replaced as suggested the tab visible callbacl with 'true' and got

{...}
<tabs>
      <tab visible="true" idMso="TabNewMailMessage">
        <group {...}id="adxRibbonGroup_response_a0f04172d2ff4b4d80b3f79050b781c7" insertBeforeMso="GroupClipboard" {...}>
{...}


If this replacement is used, it currently seems to work on my machine. If I comment out the replacement, I can reproduce the issue.

But if this solution is a good idea? Is it fair to hardcode the visibility to true?
And why get we this error without replacing the get_Visible callback.

Is there any mistake in our or the other companys implementation?

Thanks alot,
Jan
Posted 05 Feb, 2018 10:03:14 Top
Andrei Smolin


Add-in Express team


Posts: 18791
Joined: 2006-05-11
Jan,

Using this approach is a workaround: we don't know why using getVisible() may cause the tab to disappear. We tested different ideas with no result.


Andrei Smolin
Add-in Express Team Leader
Posted 05 Feb, 2018 10:11:00 Top
Jan


Guest


Hi Andrei,

thanks for your fast reply. Is there something we can do, to help you get rid of this issue?

Best regards,
Jan
Posted 05 Feb, 2018 10:31:47 Top
Andrei Smolin


Add-in Express team


Posts: 18791
Joined: 2006-05-11
Jan,

This issue, it lasts for years. We simply don't know a recipe for reproducing it. Do you?


Andrei Smolin
Add-in Express Team Leader
Posted 06 Feb, 2018 06:09:17 Top