2009-02-16 38 views
4

我已經創建了一個Word加載項組件,以及一個Visual Studio安裝項目來安裝該組件。.NET Word 2003加載項可以安裝在GAC之外嗎?

在安裝了Office 2003的乾淨機器上,似乎無法獲取要在Word中加載的加載項組件。

使用Google搜索表明這是因爲程序集不可信。我給使用命令行工具組裝完全信任:

caspol -af AssemblyName.dll 

這沒什麼區別和compenent仍然沒有在Word中加載。 caspol打印出一條消息「因爲所有GAC組件總是得到充分信任,充分信任列表是沒有 不再有意義。你應該安裝在安全 策略中使用的GAC任何組件,以確保他們是值得信賴的」

更改安裝程序以將該程序集放入GAC允許它在Word中正確加載。但是該組件在將來可能不得不使用常見程序集,在我們的其他.NET應用程序之間共享,並且將這些庫添加到GAC中將是不可取的。

有誰知道如何設置安全性以允許在GAC外安裝組件時加載組件?

回答

3

您可以手動運行以下命令來設置安全性,讓這個詞從GAC之外運行的組件。這創建了一個完全信任的新組織,這是組裝運行的基礎。

caspol.exe -u -addgroup All_Code -url "\*" FullTrust -n AssemblyName.dll 

微軟必須在以下網站link to MSDN一個安裝程序,這將讓你有這個命令的自定義操作的示例自定義操作。

1

我不認爲將插件程序集放入GAC是強制性的。我認爲你只是缺少部署中的一個步驟。

MS Word等辦公應用程序通過讀取某些註冊表項來加載它們的加載項。您很可能不會在部署過程中創建這些條目。

要了解所有此註冊表業務的詳細信息,請參閱this文章。另請參閱this文章

+0

謝謝 - 很好的建議。我已經加倍檢查了所有的註冊表設置,他們看起來正確 – 2009-02-17 11:17:19

2

您絕對不必將組件安裝到GAC,也無需在加載項組件中定義任何安全策略。

您是否在Office 2003中使用.NET 2.0? Office 2003和Office XP都有加載.NET 2.0插件的問題。他們使用.NET 1.1框架加載(如果存在於機器上,很可能)。因此,您需要使用Shared Add-in Support Update for the Microsoft .NET Framework 2.0 (KB908002)修補Office安裝。

你應該明確地將這個補丁包含到安裝程序的先決條件中。

answer to this questions中查找更多詳細信息。

當然,您必須在目標系統上安裝正確版本的PIA(幾乎忘記了這一點,錯誤或缺失PIA是插件無法加載的主要問題之一)。

更新:KB908002需要PC上的VS 2005,以便將共享插件支持更新添加到安裝項目的先決條件對話框中。下面的解決方法必須在這種情況下使用:

如果您正在使用Visual Studio 2008,那麼你必須遵循下述workaround得到KB908002附加先決條件對話框中列出:

  1. 下載並在安裝了Visual Studio 2005的計算機上安裝修補程序。
  2. 導航到C:\ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ BootStrapper \ Packages,找到KB908002文件夾。
  3. 登錄到具有Visual Studio 2008的安裝和機器KB908002文件夾複製到C:\ Program Files文件\微軟的SDK \的Windows \ v6.0A \引導程序\軟件包
  4. 現在,如果你去預Visual Studio 2008機器上的必備項列表,您將看到列出的修復程序。

另一種選擇,你不需要VS 2005都將是:

  1. 下載修補程序到臨時文件夾。
  2. 打開命令提示符,導航到修復所在,並推出以下命令從自解壓安裝文件解壓縮文件的文件夾:

    vs2005-kb908002-enu-x86.exe /C /T:C:\KB908002\ 
    cd \KB908002 
    

    現在的文件夾C:\ KB908002會包含三個文件,vs2005-kb908002-enu-x86.exe/C/T:C:\ tmp \ KB908002 \ tmp,setup.exe和bootstrapper.msi

  3. 我們感興趣的是bootstapper.msi的內容,所以我們提取這個文件的內容:

    msiexec /a bootstrapper.msi /qb TARGETDIR=C:\KB908002\tmp\ 
    cd tmp 
    
  4. 最後,我們複製我們提取到Windows SDK的引導程序文件夾現在

    xcopy /E "C:\KB908002\tmp\SDK\BootStrapper\Packages" "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages" 
    
  5. 包文件夾,如果你去的先決條件在Visual Studio 2008列表中,您將看到列出的修復。

+0

感謝您的反饋divo。我們正在使用Visual Studio 2008構建插件並定位.NET 2.0平臺,因此KB補丁不適用於我們的情況。我們已經安裝了正確的PIA,並且在GAC中它的加載正確 - 所以我認爲所有必需的組件都在 – 2009-02-17 10:04:21

相關問題