2011-03-23 150 views
11

我已經爲2003,2007,2010創建了Outlook加載項。加載項在2007和2010年工作正常,但未正確加載2003在任何機器上,除了我自己的開發機器。沒有代碼問題,因爲加載行爲中沒有顯示錯誤,並且它不是禁用的項目。該加載項也未顯示在COM加載項列表中。此加載項以前在2003年以前工作。Outlook 2003加載項將無法加載,但工作順序爲

這是奇怪的部分。從早期的時間點我有一個加載項的副本,因此不包含完整版本的一些功能。這個插件在2003年正確加載。因此,作爲我的測試的一部分,在虛擬機上,我安裝了早期版本(我將其稱爲測試)和當前版本不起作用(我會稱它full)。在HKCU> Software> Classes> CLSID> [[guid]]> InprocServer32的註冊表中,對於測試版本,我將「Manifest Location」和「Manifest Name」鍵更改爲完整版的值。然後我運行Outlook,完整版運行完美。

我看不出怎麼外接不會下它自己的註冊表設置,但在測試工作正常的,只有在Outlook 2003中

這裏的基本信息:

我dev的設置是:

  • 的Windows 7 64位
  • Outlook 2003中安裝
  • 運行VS2008的加載項目,但也使用VS2010作爲衛星程序集。
  • 設置安全項目包含並修改爲允許多個程序集設置CASPol。

以下預請求數都包含在安裝項目:

  • NET 2.0
  • 淨3.5SP1
  • Office 2003的PIA(也2007 & 2010 PIA的2007 & 2010分別)
  • VSTOSE運行時
  • Windows Installer 3.1

任何提示將不勝感激,因爲我已經花了近4天的時間在這個問題上!

TIA。


更新1:

按@JoaoAngelo意見,我查了註冊表設置,並有如下幾點:

HKCU>軟件>類> CLSID> {附加CLSID }> InprocServer32的

- (default) - '%CommonProgramFiles%\Microsoft Shared\VSTO\8.0\AddinLoader.dll' 
- ManifestLocation - path to the containing folder 
- ManifestName - the .dll.manifest file name 
- ThreadingModel - 'Both' 

HKCU>軟件>微軟>辦公>展望>加載項> MyAddin

- (default) - not set 
- CommandLineSafe - '1' 
- Description - a string 
- FriendlyName - add-in ID 
- LoadBehavior - '3' (this never gets set to 2, which would indicate an issue) 
- Manifest - path to the .dll.manifest of the add-in assembly 
- Path - path to the containing folder 

我還添加下後者下面,具體根據Deployment page,但沒有效果:

- ManifestLocation 
- ManifestName 

更新2:

作爲每0xA3執行評論;在HKCR> MyAddin我有一個字符串值的CLSID項:

(default) - {add-in CLSID} 

的CLSID是相同HKCU>軟件>類> CLSID並在整個註冊表中看到。

+0

在HKCR - > MyAddin下定義了什麼(即在加載項的編號下;與在HKCU> Software> Microsoft> Office> Outlook> Addins> MyAddin下使用的'MyAddin'字符串相同) – 2011-03-23 14:58:35

+0

我更新了原文(更新2)。 – SteveA 2011-03-23 16:47:30

+0

[編輯]:我看到這已更新 - 刪除評論。我明白,我的問題實際上與此不同。 – 2011-05-25 19:43:15

回答

3

我終於找到了問題,它與註冊表相關。

我原本計劃有單獨的加載項爲每個版本的Outlook,這樣我的命名空間和命名約定等分別爲:

  • [公司] .AddIns.Outlook2003
  • [公司]。 AddIns.Outlook2007
  • [公司] .AddIns.Outlook2010

不過,我設法創建加載到目標的所有3,所以我改名[公司] .AddIns.Outlook2003是[公司]。 AddIns.Client 。

我改變了HKCU> Software> Microsoft> Office> Outlook> Addins> MyAddin的註冊表設置,以引用所描述的更改,但出於某種原因,我沒有在HKCU> Software> Classes下進行更新。

只要我在VS中改變了後者的設置,它就起作用了!

作爲參考,在安裝項目下的視圖>註冊表下進行了更改。

有點討厭這個問題沒有出現在2007/2010之下,因爲它可能更容易追查。

0

如果你還沒有做它已經應設置以下環境變量來幫助您解決插件加載問題:

  • VSTO_LOGALERTS=1
  • VSTO_SUPPRESSDISPLAYALERTS=0

第一個將導致在包含插件程序集的目錄中創建的* .log文件中,第二個將在啓動目標應用程序時顯示彈出窗口,在本例中爲Outlook。

您還會說,在您的Office 2003開發包中,外接程序可以正常工作。由於Visual Studio在執行構建時會自動在插件框中註冊插件,因此應確保您在安裝程序中創建了所有必需的註冊表項。您可以查看下面的MSDN文章中所需的註冊表項部分,以驗證您在安裝創建正確的鍵:

Deploying Application-Level Add-ins

+0

感謝您的回覆。我之前嘗試過記錄警報,但他們沒有做任何事情,因爲我相信只有在加載項加載的情況下它們纔會起作用。但是,我會再次添加它們以進行仔細檢查。我還包括我自己的內部日誌記錄,但這顯然沒有用,因爲加載項沒有加載。我也仔細查看了您之前發送的鏈接,但是我再次檢查它是否正確,謝謝。但是,似乎很奇怪的是,註冊表項在2007和2010年都可以使用,但不是2003年。 – SteveA 2011-03-23 12:12:21

+0

我設置了警報,但懷疑,我沒有得到任何回報。我已經使用您發佈的部署應用程序級插件鏈接的結果更新了初始文章。 – SteveA 2011-03-23 13:06:28

0

我建議你遵循這裏所描述的故障排除步驟:

Hamed Ahmadi: My Office Addin Does Not Load!

+0

感謝您的回覆。不幸的是,我已經完成了這些步驟,並且不適用於我的情況。我也經歷了[鏈接](http://blogs.msdn.com/b/vsod/archive/2008/04/22/troubleshooting-com-add-in-load-failures.aspx),但又是非這真的適用。關於這個鏈接,我已經啓用了Fusion日誌,但沒有出現在Outlook.exe下,這也向我確認Outlook根本不加載加載項。 – SteveA 2011-03-23 12:08:22

0

確定由於某些原因,插件沒有被禁用。如果您已經安裝了機器級別(而不是用戶級別),則在任何情況下都不會顯示在Com添加列表中。也許嘗試安裝它作爲每個用戶添加(所以它顯示在列表中)並從那裏去?

+0

它未被禁用,並安裝在用戶級別。 – SteveA 2011-03-23 16:41:32

+0

@SteveA:您是否明確檢查了您的加載項是否位於禁用加載項的列表中? – 2011-03-23 17:09:54

+0

這絕對不是在殘疾物品。如果是這樣,我也希望看到LoadBehaviour註冊表設置從3更改爲2.這就是爲什麼我懷疑它只是沒有被加載的第一個地方。此外,我知道代碼是正確的,按照我原來的帖子,所以它絕對不會被禁用。 – SteveA 2011-03-24 09:18:44