add-in won't load

  • Thread starter Thread starter Jason
  • Start date Start date
J

Jason

One of out customer installed multiple add-ins.
Our older version worked on his machine but not the newer version.
Disable or remove all other add-ins from Outlook add-in manager, re-enable
or reinstall our add-in won't work.
Reinstall Outlook won't work.
Add VSTO environmental variable does not help, not showing or logging
anything.
The loadstatus of registry key is the OK value 3 before uninstall and after
reinstall our add-in.
Other machines have no problem.

Any thoughts?
 
No way for us to know what's going on. You need to use managed code
debugging and Fusion logging to see what's going on, assuming that your
addin is failing to load. If it is loading then you need to run in debug
mode and add lots of error logging to see where things fail.

Assuming the addin just fails to load at all, see
http://blogs.msdn.com/vsod/archive/2008/04/22/Troubleshooting-com-add-in-load-failures.aspx
for information on troubleshooting addin load failures with managed code.
 
The add-in did not load at all. There is logging as the very 1st statemnt in
startup event handler. Nothing logged.

We'll try the new tips. Thanks Ken.
 
The add-in was in the Disabled Items list. After enable it, the add-in was
loaded and the menu appeared. But now email won't go out. They stay in
Outbox forever.

I remember someone had the same email problem and asked for help a while ago
but I could not retrive the mail.It was gone.
 
Usually if an addin is disabled that way it means you have unhandled
exceptions, a cardinal sin for addins. Or that you aren't using a shim to
get your own AppDomain for the addin and some other code in that same
AppDomain is crashing Outlook or has unhandled exceptions.

If it remains in Outbox are you messing with the items after they're sent,
or accessing them in Outbox, or not releasing the object references?
 
The problem of mail not going out only occurs on Outlook 2007, not 2003.

I believe it is caused by the interception of Explorer's SelectionChange
event.

//class level variable to hold event handler
private Outlook.Explorer explorer = null;

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
explorer = this.Application.ActiveExplorer();
explorer.SelectionChange += new
Outlook.ExplorerEvents_10_SelectionChangeEventHandler(ThisAddIn_SelectionChanged);
}

private void ThisAddIn_SelectionChanged()
{
// only handle appointments, nothing else
if (explorer.Selection.Count > 0 && explorer.Selection[1] is
Outlook.AppointmentItem)
{
...
}
}

Once a new mail is created, Outlook put it into Outbox folder and fires 3
SelectionChange events.

I know JavaScript DOM event bubble up and vaguely remember one article
mentioned about passing Outlook event out of event handler. How do I pass
the Explorer's SelectionChange event back to Outlook, so Outlook can handle
it as usual?
 
You don't need to do anything for passing the event back to Outlook, it's
Outlook that fires the event for you. It will also only fire the event on an
Explorer you have instantiated, so this event should not be firing in Outbox
unless you switch the Explorer to viewing the Outbox. You should not be
doing that if that's what you are doing. Leave things in Outbox alone and
don't mess with them after sending or the items will just remain in Outbox
and never get sent.
 
Yes you are right. The problem only occurs when user clicks the Outbox
folder then create a new mail. No problem if user has not highlighted the
Outbox.

Once the mail is stalled, no matter how many times you click Send and
Receive button, it will stay there forever, even after user move to other
folder or restart Outlook. You have to delete it, and create an new mail.

What can I do then? Tell user not to select Outbox, or unselect the Outbox
programmatically if user does that?


Ken Slovak - said:
You don't need to do anything for passing the event back to Outlook, it's
Outlook that fires the event for you. It will also only fire the event on
an Explorer you have instantiated, so this event should not be firing in
Outbox unless you switch the Explorer to viewing the Outbox. You should
not be doing that if that's what you are doing. Leave things in Outbox
alone and don't mess with them after sending or the items will just remain
in Outbox and never get sent.




Jason said:
The problem of mail not going out only occurs on Outlook 2007, not 2003.

I believe it is caused by the interception of Explorer's SelectionChange
event.

//class level variable to hold event handler
private Outlook.Explorer explorer = null;

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
explorer = this.Application.ActiveExplorer();
explorer.SelectionChange += new
Outlook.ExplorerEvents_10_SelectionChangeEventHandler(ThisAddIn_SelectionChanged);
}

private void ThisAddIn_SelectionChanged()
{
// only handle appointments, nothing else
if (explorer.Selection.Count > 0 && explorer.Selection[1] is
Outlook.AppointmentItem)
{
...
}
}

Once a new mail is created, Outlook put it into Outbox folder and fires 3
SelectionChange events.

I know JavaScript DOM event bubble up and vaguely remember one article
mentioned about passing Outlook event out of event handler. How do I pass
the Explorer's SelectionChange event back to Outlook, so Outlook can
handle it as usual?
 
Now the problem of email won't go out also occurs on Outlook 2003. So it is
not 2007 specific.

After comment out the explorer.SelectionChange, emailing resumes normal.

explorer.SelectionChange +=
new
Outlook.ExplorerEvents_10_SelectionChangeEventHandle(ThisAddIn_SelectionChanged);

The reason of using explorer.SelectionChange is to catch EntryIDs of the
appointments to be deleted.

The Email problem has been fixed in Outlook 2007 by replacing
SelectionChange with BeforeItemMove event.

What is the feasible solution for 2003?

I'll start a new thread.


Jason said:
Yes you are right. The problem only occurs when user clicks the Outbox
folder then create a new mail. No problem if user has not highlighted the
Outbox.

Once the mail is stalled, no matter how many times you click Send and
Receive button, it will stay there forever, even after user move to other
folder or restart Outlook. You have to delete it, and create an new mail.

What can I do then? Tell user not to select Outbox, or unselect the Outbox
programmatically if user does that?


Ken Slovak - said:
You don't need to do anything for passing the event back to Outlook, it's
Outlook that fires the event for you. It will also only fire the event on
an Explorer you have instantiated, so this event should not be firing in
Outbox unless you switch the Explorer to viewing the Outbox. You should
not be doing that if that's what you are doing. Leave things in Outbox
alone and don't mess with them after sending or the items will just
remain in Outbox and never get sent.




Jason said:
The problem of mail not going out only occurs on Outlook 2007, not 2003.

I believe it is caused by the interception of Explorer's SelectionChange
event.

//class level variable to hold event handler
private Outlook.Explorer explorer = null;

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
explorer = this.Application.ActiveExplorer();
explorer.SelectionChange += new
Outlook.ExplorerEvents_10_SelectionChangeEventHandler(ThisAddIn_SelectionChanged);
}

private void ThisAddIn_SelectionChanged()
{
// only handle appointments, nothing else
if (explorer.Selection.Count > 0 && explorer.Selection[1] is
Outlook.AppointmentItem)
{
...
}
}

Once a new mail is created, Outlook put it into Outbox folder and fires
3 SelectionChange events.

I know JavaScript DOM event bubble up and vaguely remember one article
mentioned about passing Outlook event out of event handler. How do I
pass the Explorer's SelectionChange event back to Outlook, so Outlook
can handle it as usual?
 
Please do not start new threads for the same problem. It just confuses
things.

If items in the Outbox are messed with using code then they won't go out.
That is true of all Outlook versions. So the simple answer is don't do that.
There's no need to do it, so don't.

If the ActiveExplorer.CurrentFolder is Outbox just don't handle
SelectionChange() there. If it's not Outbox you can safely handle
SelectionChange(). Since BeforeFolderSwitch() will fire before the folder in
the Explorer is switched to Outbox you will know when that happens. So just
remove the SelectionChange() handler then and reinstate it when the folder
isn't Outbox.
 
It works! Thanks Ken. You are genius.

Ken Slovak - said:
Please do not start new threads for the same problem. It just confuses
things.

If items in the Outbox are messed with using code then they won't go out.
That is true of all Outlook versions. So the simple answer is don't do
that. There's no need to do it, so don't.

If the ActiveExplorer.CurrentFolder is Outbox just don't handle
SelectionChange() there. If it's not Outbox you can safely handle
SelectionChange(). Since BeforeFolderSwitch() will fire before the folder
in the Explorer is switched to Outbox you will know when that happens. So
just remove the SelectionChange() handler then and reinstate it when the
folder isn't Outbox.
 
The problem of Email won't go out appears in one VM for Outlook 2007. No
problem in dev machine since we replaced the ActiveExplorer.SelectionChange
with BeforeItemMove event. Now the suspect is
Application.Inspectors.NewInspector event. What we really need is the
calendar item open event (or better, the Read event to handle in place
input). Is there any way to catch the calendar item Open/Read event without
intercepting the NewInspector event? Please advise how to.
 
If you don't want to handle NewInspector() you would have to follow the
Selection of ActiveExplorer() and instantiate event handling objects for
each Selection member. Then you can handle the Open(), Close(), Read(), etc.
events for those items.
 
Back
Top