none
Outlook 2013 (Office 15) 32-bit and address book provider compatibility RRS feed

  • Question

  • Hi,

    I developed an Outlook Add-In and accompanying Address Book Provider a few years ago.

    A client moved their enterprise to a cloud service with Office 2013. I updated the Add-In to work with the changes in Outlook.

    Somewhere in the process the Address Book Provider stopped working.

    I am trying to find out why I can't load the address book provider anymore.

    I am trying to load the Sample Address Book Provider or the WINDS Address Book Provider as a starting point.

    I also have downloaded the latest MFCMAPI.

    I have copied the DLL and PDB file into the Outlook folder.

    I have updated the entries in MAPISVC.Inf to refer to the DLL file. e.g. the file is ABWDS32.DLL but I refer to it as ABWDS.DLL

    I can't seem to get the Address Book to load in MFCMAPI or in Outlook.

    I notice that the 32-bit version of Outlook now installs in the C:\Program Files\ folder on a 64-bit machine, not C:\Program Files (x86)\ as in past versions.

    Does this affect the way that MAPISVC.INF works and where it looks for the DLL files?

    I thought that maybe I had altered my project so that it was doing something silly and so Outlook was unable to load it anymore. But now I can't get the sample project to load I am wondering if I am missing some crucial piece of information.

    Thanks

    Kim Groves


    Regards, (Mr) Kim Groves


    • Edited by digicate Monday, April 4, 2016 12:44 PM Typo : Outlook 2015 / Outlook 2013
    Wednesday, March 2, 2016 10:09 AM

Answers

  • I found the problem.

    I added MergeWithMAPISVC from the Wrap PST project.

    This line :

    { _T("S_ABP"), _T("PR_RESOURCE_TYPE"), 0L, _T("MAPI_STORE_PROVIDER")},

    Should be :

    { _T("S_ABP"), _T("PR_RESOURCE_TYPE"), 0L, _T("MAPI_AB_PROVIDER")},

    Because I am working with an Address Book provider not a Message Store provider.



    Regards, (Mr) Kim Groves



    • Edited by digicate Monday, April 4, 2016 12:25 PM Replacing complaint with solution
    • Marked as answer by digicate Monday, April 4, 2016 12:26 PM
    Monday, April 4, 2016 9:28 AM

All replies

  • Nothing really changed in that respect - you do need to update the right mapisvc.inf file of course.

    Also make sure that you load the MAPI dll dynamically. Since you are always loaded by Outlook, it is Ok to use GetModuleHanle("olmapi32.dll").


    Dmitry Streblechenko (MVP)
    http://www.dimastr.com/redemption
    Redemption - what the Outlook
    Object Model should have been
    Version 5.5 is now available!

    Wednesday, March 2, 2016 5:04 PM
  • I have copied the FGetComponentPath code into my project from the Outlook 2010 samples Wrapped PST project.

    The project has post-build steps to copy the dll file and then use RunDll32 to call the exported MergeWithMAPISVC function. I confirmed that the necessary entries are added to the MAPISVC.INF file.

    The Address Book is still not appearing in Outlook and I can't add the Address Book to the profile in the Account Settings - Address Books - New.

    Was there any reason not to add MergeWithMAPISVC to the Outlook 2010 Sample Address Book project? Just that the technique is demonstrated in the other projects?

    Is there any way that Outlook might be refusing to load the Address Book due to a black list of certain dll files?

    I did a search of my registry, I found an entry for MFCMAPI which has the key AddInExclusionList and the DLL files for the Address Book are listed there. Is this relevant?



    Regards, (Mr) Kim Groves

    Thursday, March 3, 2016 11:56 AM
  • So Outlook doesn't even show your provider when you go to the "Adders Books" and click New | Other? At that point dll is not even loaded, so there must be something wrong with your entries in the MAPISVC.INF file.

    Can you post the relevant entries?


    Dmitry Streblechenko (MVP)
    http://www.dimastr.com/redemption
    Redemption - what the Outlook
    Object Model should have been
    Version 5.5 is now available!

    Thursday, March 3, 2016 1:53 PM
  • [Services]
    SABP=Sample Contacts
    [SABP]
    PR_DISPLAY_NAME=Sample Contacts
    PR_SERVICE_DLL_NAME=C:\Company\sabp.dll
    PR_SERVICE_ENTRY_NAME=ServiceEntry
    PR_RESOURCE_FLAGS=SERVICE_SINGLE_COPY | SERVICE_NO_PRIMARY_IDENTITY
    Providers=S_ABP
    PR_SERVICE_SUPPORT_FILES=C:\Company\sabp.dll
    PR_SERVICE_DELETE_FILES=C:\Company\sabp.dll
    WIZARD_ENTRY_NAME=WizardEntry
    [S_ABP]
    PR_RESOURCE_TYPE=MAPI_STORE_PROVIDER
    PR_PROVIDER_DLL_NAME=C:\Company\sabp.dll
    PR_DISPLAY_NAME=Sample Contacts
    PR_PROVIDER_DISPLAY=Sample Contacts

    This is the sample address book provider. Our address book provider is based off this code. If I can get the sample to load in Outlook I should able to apply that to ours. Our provider loads the address book entries from a database instead of a flat file.

    I tried adding the path in the MAPISVC.INF entries but still no go.

    The file is stored in c:\company\sabp32.dll.

    I kept the path simple for testing because I know that it has to be 8.3 format.

    In the past I have been installing the dll into the same folder as the outlook executable. Is this valid for click to run?

    I tried running procmon too.

    I had to filter down the results to try and find the relevant entries.

    I can see that Outlook is attempting to read the paths specified in the MAPISVC.INF.

    The installer and DLL may possibly work on the client system but it would be good to be able to use and test the DLL myself for peace of mind.

    Kim


    Regards, (Mr) Kim Groves

    Friday, March 4, 2016 1:14 AM
  • Does Process Monitor show that Outlook tries to load the sabp32.dll file?

    Dmitry Streblechenko (MVP)
    http://www.dimastr.com/redemption
    Redemption - what the Outlook
    Object Model should have been
    Version 5.5 is now available!

    Friday, March 4, 2016 1:38 AM
  • On this machine, ProcMon records the following :

    "Time of Day","Process Name","PID","Operation","Path","Result","Detail"
    "4:18:25.8914518 PM","outlook.exe","21252","CreateFile","C:\AddrBook\SABP32.dll","SUCCESS","Desired Access: Read Attributes, Dis, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened"
    "4:18:25.8914941 PM","outlook.exe","21252","QueryBasicInformationFile","C:\AddrBook\SABP32.dll","SUCCESS","CreationTime: 4/03/2016 11:01:51 AM, LastAccessTime: 4/03/2016 11:01:51 AM, LastWriteTime: 4/03/2016 4:17:41 PM, ChangeTime: 4/03/2016 4:17:41 PM, FileAttributes: A"
    "4:18:25.8915146 PM","outlook.exe","21252","CloseFile","C:\AddrBook\SABP32.dll","SUCCESS",""
    "4:18:25.8916891 PM","outlook.exe","21252","CreateFile","C:\AddrBook\SABP32.dll","SUCCESS","Desired Access: Read Attributes, Dis, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened"
    "4:18:25.8917259 PM","outlook.exe","21252","QueryBasicInformationFile","C:\AddrBook\SABP32.dll","SUCCESS","CreationTime: 4/03/2016 11:01:51 AM, LastAccessTime: 4/03/2016 11:01:51 AM, LastWriteTime: 4/03/2016 4:17:41 PM, ChangeTime: 4/03/2016 4:17:41 PM, FileAttributes: A"
    "4:18:25.8917460 PM","outlook.exe","21252","CloseFile","C:\AddrBook\SABP32.dll","SUCCESS",""
    "4:18:55.2082771 PM","outlook.exe","21252","CreateFile","C:\AddrBook\SABP32.dll","SUCCESS","Desired Access: Read Attributes, Dis, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened"
    "4:18:55.2083237 PM","outlook.exe","21252","QueryBasicInformationFile","C:\AddrBook\SABP32.dll","SUCCESS","CreationTime: 4/03/2016 11:01:51 AM, LastAccessTime: 4/03/2016 11:01:51 AM, LastWriteTime: 4/03/2016 4:17:41 PM, ChangeTime: 4/03/2016 4:17:41 PM, FileAttributes: A"
    "4:18:55.2083485 PM","outlook.exe","21252","CloseFile","C:\AddrBook\SABP32.dll","SUCCESS",""
    "4:18:55.2085418 PM","outlook.exe","21252","CreateFile","C:\AddrBook\SABP32.dll","SUCCESS","Desired Access: Read Attributes, Dis, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened"
    "4:18:55.2085837 PM","outlook.exe","21252","QueryBasicInformationFile","C:\AddrBook\SABP32.dll","SUCCESS","CreationTime: 4/03/2016 11:01:51 AM, LastAccessTime: 4/03/2016 11:01:51 AM, LastWriteTime: 4/03/2016 4:17:41 PM, ChangeTime: 4/03/2016 4:17:41 PM, FileAttributes: A"
    "4:18:55.2086077 PM","outlook.exe","21252","CloseFile","C:\AddrBook\SABP32.dll","SUCCESS",""

    I have used a filter, Path Contains SABP32.DLL to get these entries.

    I have a backup development machine. I have run the installer on this machine.

    The Address Book is working on this machine. I can configure it through the Account Settings. When I open the Address Book in Outlook, I get back a list of names and addresses as expected.

    Running ProcMon on this machine, instead of the Create/Query/Close operations, there is a single operation for Load Image.

    I am going to see if I can load the updated project onto this machine to finish the job that I need to do.

    I would like to know what I am doing wrong if possible on my primary machine in case I cause the same problem on the backup machine.

    Thanks!


    Regards, (Mr) Kim Groves

    Friday, March 4, 2016 6:30 AM
  • Hi digicate,

    I'm trying to involve some senior engineers into this issue and it will take some time. Your patience will be greatly appreciated.

    Regards

    Starain


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    Tuesday, March 8, 2016 2:42 AM
    Moderator
  • I found the problem.

    I added MergeWithMAPISVC from the Wrap PST project.

    This line :

    { _T("S_ABP"), _T("PR_RESOURCE_TYPE"), 0L, _T("MAPI_STORE_PROVIDER")},

    Should be :

    { _T("S_ABP"), _T("PR_RESOURCE_TYPE"), 0L, _T("MAPI_AB_PROVIDER")},

    Because I am working with an Address Book provider not a Message Store provider.



    Regards, (Mr) Kim Groves



    • Edited by digicate Monday, April 4, 2016 12:25 PM Replacing complaint with solution
    • Marked as answer by digicate Monday, April 4, 2016 12:26 PM
    Monday, April 4, 2016 9:28 AM
  • Just another note, before I added MergeWithMAPISVC, the other problem was that after upgrading to Outlook 2013 I wasn't using the correct path for MAPISVC.INF. This explains why I could not see the address book provider in Outlook.

    The path for Outlook 2013 looks like this : C:\Program Files\Microsoft Office 15\root\vfs\ProgramFilesCommonX86\SYSTEM\MSMAPI

    Using the MergeWithMAPISVC code will find the correct path automatically.


    Regards, (Mr) Kim Groves

    Monday, April 4, 2016 12:33 PM