Search code examples
c#outlookvstooutlook-addin

What is the best way to store some data in VSTO addin?


I have developed one outlook add-in, that has to be On or Off.

to do that i have declared one static variable as shown below,

ThisAddIn.cs

public static bool isAddInOn = false;

RibbonButton.cs

    private void btnRibbon_Click(object sender, RibbonControlEventArgs e)
    {
        if (ThisAddIn.isAddInOn )
        {

            ThisAddIn.isAddInOn = false; 
            btnRibbon.Label = "Disabled";

        }
        else
        {

            ThisAddIn.isAddInOn = true;
            btnRibbon.Label = "Enabled";


        }
    }

It is working. But the static variable reset again when i close outlook and open it again. That means when i open outlook by default my add-in is in disabled state.

I just want to store that value at some place. so i can check that value when outlook reopened.

Scenario:

1) open outlook

2) Enable add-in by clicking on its logo (that is in ribbon)

3) now close the outlook

4) when i open outlook again it must enabled

so how can i achieve this ?


Solution

  • Settings can be stored as a hidden (associated) item in a folder, such as the Inbox or the Calendar folder. For example, Outlook stores the list of categories as a hidden item in the Calendar folder. POP3 message ids are stored in a hidden item in the Inbox. The advantage of the hidden items is the roaming capability - Exchange mailbox user can see the data from any computer.

    You can see the hidden items in OutlookSpy (I am its author) - click IMAPIFolder button, go to the "Associated Contents" tab.

    Programmatically, such items can be accessed using MAPIFolder.GetStorage in the Outlook Object Model.