2010-09-13 29 views
6

您好,我一直在理解部署MS Office的主互操作程序集(PIA)的一些複雜性。我在VS 2008中使用純COM技術構建了Visual Studio COM Add-IN(不是VSTO的更多內容),它引用了2003年的主互操作程序集,但插件可能在2003,2007或現在2010辦公機器。因爲我永遠不知道客戶是否會使用2003,2007或2010年的版本,所以我不能簡單地部署一個PIA版本作爲先決條件(除非我製作了3個我不想做的安裝程序)。現在,我的理解是,按照步驟here將2003和2007 PIA添加到Visual Studio(2008)安裝程序包中顯示的先決條件列表中時,先決條件足夠聰明,可以確定客戶端上運行的是哪個Office版本你正在瞄準。因此,如果您選擇2003年主要互操作程序集和2007年主要iterop程序集作爲先決條件,那麼當它安裝在具有2003年的計算機上時,它應該足夠智能,只需添加2003 PIA(如果在這臺計算機上缺少這些)如果這是2007 Office辦公機器,那麼它只會安裝2007 PIA(而不會嘗試安裝2003 PIA)。將PIA部署到辦公室的混合版本

問題1這是一個正確的認識(即必備軟件包是該智能安裝僅需要基於Office的版本是什麼?)

問題2有沒有辦法讓2010年PIA將在VS 2008中的先決條件列表中展示,比如2003年和2007年?我不想將這個項目升級到VS 2010 b/c,現在它被認爲是一個傳統的應用程序,許多來自世界各地的客戶使用它。

問題3儘管實際的程序集引用了2003年主要的interops,但我現在沒有將這些interops與加載項一起部署到安裝位置。相反,我假設如果我可以安裝正確的PIA,那麼在安裝路徑中我不需要這樣的內容,因爲PIA將位於GAC中。然而,一種可能的方法可能是在安裝路徑中包含2003引用的程序集(在我的例子中是excel和word),而不用擔心PIA。我懷疑這可以在2003年的機器上運行,但可能不會在2007年和2010年的機器上運行b/c,即使在運行時在程序集的安裝路徑中找到引用的2003年interops,我認爲如果沒有一個Policy.11.0.Microsoft.Office.Interop.Excel/Word(等)在GAC中,那麼2007年和2010年可能不知道如何處理11.0(2003)interops(因爲我認爲Policy.11.0.Microsoft。 Office.Interop文件將2003 interop的請求重定向到2007或2010)。對此有何想法?

問題4:在Framework 2.0應用程序的Office加載項和Office 2003中有一個衆所周知的錯誤,其中加載項不會加載。 KB907417又名KB908002。如果您在3.0或3.5框架中開發(並且使3.0或3.5爲先決條件),因此該知識庫是否必需知道是否因爲此問題特定於框架2.0?或者KB仍然需要部署b/c它是Office 2003是問題而不是框架的版本?

正如你可以從我的3個問題中看出我正在試圖確定的是,我們是否可以通過VS設置實用程序構建一個單一的安裝程序。如果PIA可以用一個安裝程序完成,但上面的KB是障礙(因爲或許答案會回來,即使在3.0或3.5框架2003客戶將需要KB),那麼也許一個安裝程序的路徑只是爲了KB是全面的先決條件,並將其安裝在2007或2010年的機器上,儘管他們在技術上不需要它們。任何關於該選項的想法都會受到讚賞。最後,我知道編寫一個用於excel或word的Com插件是通常用VSTO代替純粹的託管框架代碼完成的,但目前不能將這個遺留應用程序改爲這個方向。另據報道,4。0框架現在可以用於部署加載項,而無需將任何PIA作爲先決條件,但再次,這不是現在可行的選項。

回答

0

該代碼是否使用任何Office 2007+方法或類?如果不是,你確定在所有情況下都不能使用2003 PIA嗎?後來的應用應該是向後兼容的(支持相同的API),所以你需要更新PIA的唯一原因是,如果你需要訪問2007年或以後添加的某些功能,我想。

你可能想看看Add-in Express,它承諾一個通用版本的安裝程序,並且非常易於使用。

0

正如你可以告訴我的3個問題我試圖弄清是,我們是否可以通過VS安裝實用程序

你不能建立一個單一的安裝程序。您必須創建自定義安裝程序包裝程序(setup bootstrapper)。

很多年前,我用dotNetInstaller與HTML GUI構建器,今天WiX toolset將是更好的解決方案,我認爲。

檢查如何使用Orca或.msi和.exe安裝程序流檢查Windows安裝程序日誌構建PIA .msi安裝程序。

根據註冊表檢查,文件檢查,安裝的產品檢查,Windows版本,Office版本,您可以創建條件是否應該安裝組件。

哦,我建議無需先決條件製作插件安裝程序,並使用您的自定義安裝程序引導程序有條件地安裝它們。