逐步解說:在 .NET Framework 4 的單一 ClickOnce 安裝程式中部署多個 Office 方案
更新:2010 年 9 月
您可以在單一套件中部署多個 Office 方案,簡化安裝和升級程序。 在發行之後及安裝之前,您都必須修改和重新簽署應用程式和部署資訊清單。
**適用於:**本主題中的資訊適用於 Microsoft Office 2010 和 2007 Microsoft Office system 的文件層級專案和應用程式層級專案。 如需詳細資訊,請參閱依 Office 應用程式和專案類型提供的功能。
這個逐步解說將說明下列工作:
建立兩個用來部署的 Office 方案,並建立一個 Office 方案做為安裝程式專案。
修改安裝程式專案的應用程式資訊清單,以安裝這兩個 Office 方案。
重新簽署應用程式和部署資訊清單。
注意事項 |
---|
您的電腦可能會在下列說明中,以不同名稱或位置顯示某些 Visual Studio 使用者介面項目。 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱 Visual Studio 設定。 |
必要條件
您需要下列元件才能完成此逐步解說:
-
包含 Microsoft Office 開發者工具的 Visual Studio 2010 版本。 如需詳細資訊,請參閱[設定電腦以開發 Office 方案](bb398242\(v=vs.100\).md)。
Word 2007 或 Word 2010。
Outlook 2007 或 Outlook 2010。
Excel 2007 或 Excel 2010。
測試用電腦。
建立多個 Office 方案
一開始先建立三個 Office 專案,其中一個做為安裝程式, 其他兩個將會部署至使用者電腦。
若要建立和開發 Word、Outlook 和 Excel 專案
建立適用於 .NET Framework 4 的 Word 文件層級專案。 將專案命名為 ContosoInstaller,然後儲存在 %USERPROFILE%\Documents\Visual Studio 2010\Projects 目錄中。
ContosoInstaller 專案將用來做為安裝程式。 如需詳細資訊,請參閱 HOW TO:在 Visual Studio 中建立 Office 專案。
在 ContosoInstaller 方案中,新增名為 ContosoOutlookAddIn 的 Outlook 應用程式層級專案,再將您的程式碼加入至這個 Outlook 專案。
在 ContosoInstaller 方案中,新增名為 ContosoExcelWorkbook 的 Excel 文件層級專案,再將您的程式碼加入至這個 Excel 專案。
發行 Office 方案
使用 [發行精靈] 或 [專案設計工具] 的 [專案頁],將這兩個 Office 方案發行至開發電腦。
若要建發行 Word、Outlook 和 Excel 專案
將 ContosoInstaller 專案發行至 c:\publish 資料夾。 如需詳細資訊,請參閱 HOW TO:使用 ClickOnce 部署 Office 方案。
將 ContosoOutlookAddIn 專案發行至 c:\publish 資料夾。
將 ContosoExcelWorkbook 專案發行至 c:\publish 資料夾。
修改應用程式資訊清單
使用 Visual Studio 的 XML 編輯器將安裝相依性、檔案、進入點和組件加入至應用程式資訊清單。 應用程式資訊清單的內容類似於物料清單,它會列出箱子的整個內容;應用程式資訊清單會列出所有相依性及必備的組件,以及應用程式所需要的檔案。 Office 方案的應用程式資訊清單也會列出 Office 應用程式應該針對應用程式層級增益集和文件層級自訂載入的組件。
加入安裝相依性
修改應用程式資訊清單以安裝 ContosoOutlookAddin 和 ContosoExcelWorkbook 組件,並移除 ContosoInstaller 組件的參考。
若要將安裝相依性加入至應用程式資訊清單
將 ContosoOutlookAddIn_1_0_0_0 和 ContosoExcelWorkbook_1_0_0_0 目錄的內容從 c:\publish\Application Files 資料夾移至 ContosoInstaller_1_0_0_0 目錄。
使用 XML 編輯器開啟 ContosoInstaller.dll.manifest、ContosoOutlookAddIn.dll.manifest 和 ContosoExcelWorkbook.dll.manifest 檔案。
從 ContosoOutlookAddIn.dll.manifest 檔案,複製包含 ContosoOutlookAddIn.dll 在內的所有安裝和檔案相依性。 也就是,複製所有以 <dependentAssembly dependencyType="install" 或 <file name="app.config"> 開頭的相依性。 您要找的程式碼看起來如下,其中只有 <dsig:DigestValue> 項目可能會不同:
<dependency> <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Microsoft.Office.Tools.Common.v4.0.Utilities.dll" size="30816"> <assemblyIdentity name="Microsoft.Office.Tools.Common.v4.0.Utilities" version="10.0.0.0" publicKeyToken="B03F5F7F11D50A3A" language="neutral" processorArchitecture="msil" /> <hash> <dsig:Transforms> <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> </dsig:Transforms> <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <dsig:DigestValue>Ki0…</dsig:DigestValue> </hash> </dependentAssembly> </dependency> <dependency> <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Microsoft.Office.Tools.Outlook.v4.0.Utilities.dll" size="47200"> <assemblyIdentity name="Microsoft.Office.Tools.Outlook.v4.0.Utilities" version="10.0.0.0" publicKeyToken="B03F5F7F11D50A3A" language="neutral" processorArchitecture="msil" /> <hash> <dsig:Transforms> <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> </dsig:Transforms> <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <dsig:DigestValue>050...</dsig:DigestValue> </hash> </dependentAssembly> </dependency> <dependency> <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="ContosoOutlookAddIn.dll" size="10240"> <assemblyIdentity name="ContosoOutlookAddIn" version="1.0.0.0" language="neutral" processorArchitecture="msil" /> <hash> <dsig:Transforms> <dsig:Transform Algorithm= "urn:schemas-microsoft-com:HashTransforms.Identity" /> </dsig:Transforms> <dsig:DigestMethod Algorithm= "http://www.w3.org/2000/09/xmldsig#sha1" /> <dsig:DigestValue>i4e</dsig:DigestValue> </hash> </dependentAssembly> </dependency> <file name="ContosoOutlookAddIn.dll.config" size="77"> <hash> <dsig:Transforms> <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> </dsig:Transforms> <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <dsig:DigestValue>w7W...</dsig:DigestValue> </hash> </file>
在 ContosoInstaller.dll.manifest 檔案的相依性區段結尾處貼上 ContosoOutlookAddIn.dll 安裝相依性。
從 ContosoExcelWorkbook.dll.manifest 檔案複製所有安裝和檔案相依性,包括 ContosoExcelWorkbook.dll 和 Microsoft.Office.Tools.Common.v4.0.Utilities.dll。 也就是,複製所有以 <dependentAssembly dependencyType="install" 或 <file name="app.config"> 開頭的相依性。 您要找的程式碼看起來如下,其中只有 <dsig:DigestValue> 項目可能會不同:
<dependency> <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="ContosoExcelWorkbook.dll" size="12800"> <assemblyIdentity name="ContosoExcelWorkbook" version="1.0.0.0" language="neutral" processorArchitecture="msil" /> <hash> <dsig:Transforms> <dsig:Transform Algorithm= "urn:schemas-microsoft-com:HashTransforms.Identity" /> </dsig:Transforms> <dsig:DigestMethod Algorithm= "http://www.w3.org/2000/09/xmldsig#sha1" /> <dsig:DigestValue>i4e</dsig:DigestValue> </hash> </dependentAssembly> </dependency> <dependency> <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Microsoft.Office.Tools.Common.v4.0.Utilities.dll" size="30816"> <assemblyIdentity name="Microsoft.Office.Tools.Common.v4.0.Utilities" version="10.0.0.0" publicKeyToken="B03F5F7F11D50A3A" language="neutral" processorArchitecture="msil" /> <hash> <dsig:Transforms> <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> </dsig:Transforms> <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <dsig:DigestValue>Ki0A9wOpes1YX5NaAvjmUeFSh0g=</dsig:DigestValue> </hash> </dependentAssembly> </dependency> <dependency> <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Microsoft.Office.Tools.Excel.v4.0.Utilities.dll" size="235104"> <assemblyIdentity name="Microsoft.Office.Tools.Excel.v4.0.Utilities" version="10.0.0.0" publicKeyToken="B03F5F7F11D50A3A" language="neutral" processorArchitecture="msil" /> <hash> <dsig:Transforms> <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> </dsig:Transforms> <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <dsig:DigestValue>Te/...</dsig:DigestValue> </hash> </dependentAssembly> </dependency> <file name=" ContosoExcelWorkbook.dll.config" size="77"> <hash> <dsig:Transforms> <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> </dsig:Transforms> <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <dsig:DigestValue>w7W...</dsig:DigestValue> </hash> </file>
在 ContosoInstaller.dll.manifest 檔案的相依性區段結尾處貼上安裝相依性。
在 ContosoInstaller.dll.manifest 檔案中,移除 ContosoInstaller.dll 和 Microsoft.Office.Tools.Word.v4.0.Utilities.dll 安裝相依性。 同時也移除任何重複的相依性。 例如,您可能複製了多個 Microsoft.Office.Tools.Common.v4.0.Utilities.dll 的安裝相依性。
注意事項 如果您是在部署 Word 文件層級的方案,則在最後的資訊清單中保留 Microsoft.Office.Tools.Word.v4.0.Utilities.dll。
加入進入點
修改應用程式資訊清單,以便將 ContosoOutlookAddin 和 ContosoExcelWorkbook 組件載入至 <vstav3> 命名空間。
若要將 vstav3 命名空間中的進入點加入至應用程式資訊清單
在 ContosoInstaller.dll.manifest 檔案中,移除介於 <vstav3:entryPointsCollection> 和 </vstav3:entryPointsCollection> 項目之間的文字。
從 ContosoOutlookAddIn.dll.manifest 檔案複製介於 <vstav3:entryPointsCollection> 和 </vstav3:entryPointsCollection> 項目之間的文字。 您要找的程式碼看起來如下:
<vstav3:entryPoints> <vstav3:entryPoint class="ContosoOutlookAddIn.ThisAddIn"> <assemblyIdentity name="ContosoOutlookAddIn" version="1.0.0.0" language="neutral" processorArchitecture="msil" /> </vstav3:entryPoint> </vstav3:entryPoints>
注意事項 如果 Outlook 應用程式層級增益集使用表單區域,則 Outlook 輸入點必須列在 <vstav3:entryPoints> 區段中的最後一個。
在 ContosoInstaller.dll.manifest 檔案的 <vstav3:entryPointsCollection> 項目之後貼上剛才複製的程式碼。
在 <vstav3:entryPoints> 項目中加入 id 屬性,以區分這個進入點與其他進入點。
<vstav3:entryPoints id="ContosoOutlook">
從 ContosoExcelWorkbook.dll.manifest 檔案複製介於 <vstav3:entryPointsCollection> 和 </vstav3:entryPointsCollection> 項目之間的文字。 您要找的程式碼看起來如下:
<vstav3:entryPoints> <vstav3:entryPoint class="ContosoExcelWorkbook.ThisWorkbook"> <assemblyIdentity name="ContosoExcelWorkbook" version="1.0.0.0" language="neutral" processorArchitecture="msil" /> </vstav3:entryPoint> <vstav3:entryPoint class="ContosoExcelWorkbook.Sheet1"> <assemblyIdentity name="ContosoExcelWorkbook" version="1.0.0.0" language="neutral" processorArchitecture="msil" /> </vstav3:entryPoint> <vstav3:entryPoint class="ContosoExcelWorkbook.Sheet2"> <assemblyIdentity name="ContosoExcelWorkbook" version="1.0.0.0" language="neutral" processorArchitecture="msil" /> </vstav3:entryPoint> <vstav3:entryPoint class="ContosoExcelWorkbook.Sheet3"> <assemblyIdentity name="ContosoExcelWorkbook" version="1.0.0.0" language="neutral" processorArchitecture="msil" /> </vstav3:entryPoint> </vstav3:entryPoints>
在 ContosoInstaller.dll.manifest 檔案的 <vstav3:entryPointsCollection> 項目之後貼上剛才複製的程式碼。
在 <vstav3:entryPoints> 項目中加入 id 屬性,以區分這個進入點與其他進入點。
<vstav3:entryPoints id="ContosoExcel">
加入組件
修改應用程式資訊清單,以便將 ContosoOutlookAddin 和 ContosoExcelWorkbook 組件載入至 <vstov4> 命名空間。
若要將組件加入至應用程式資訊清單中的 vstov4 命名空間
在 ContosoInstaller.dll.manifest 檔案中,移除介於 <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> 和 </vstov4:customizations> 項目之間的文字。
從 ContosoOutlookAddIn.dll.manifest 檔案複製介於 <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> 和 </vstov4:customizations> 項目之間的文字。 您要找的程式碼看起來如下:
<vstov4:customization> <vstov4:appAddIn application="Outlook" loadBehavior="3" keyName="ContosoOutlookAddIn"> <vstov4:friendlyName> ContosoOutlookAddIn </vstov4:friendlyName> <vstov4:description> ContosoOutlookAddIn - Outlook add-in created with Visual Studio Tools for Office </vstov4:description> </vstov4:appAddIn> </vstov4:customization>
在 ContosoInstaller.dll.manifest 檔案的 <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> 項目之後貼上剛才複製的程式碼。
在 <vstav3:customization> 項目中加入 id 屬性,以區分這個自訂內容與其他自訂內容。 這個 id 與先前步驟中加入至 <vstav3:entryPoints> 項目的 id 相同。
<vstov4:customization id="ContosoOutlook">
從 ContosoExcelWorkbook.dll.manifest 檔案複製介於 <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> 和 </vstov4:customizations> 項目之間的文字。 您要找的程式碼看起來如下,其中只有 <solutionId> 項目可能會不同:
<vstov4:customization> <vstov4:document solutionId="73e" /> </vstov4:customization>
在 ContosoInstaller.dll.manifest 檔案的 <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> 項目之後貼上剛才複製的程式碼。
在 <vstov4:customizations xmlns:vstov4="urn:schemas-microsoft-com:vsto.v4"> 項目中加入 id 屬性,以區分這個自訂內容與其他自訂內容。 這個 id 與先前步驟中加入至 <vstav3:entryPoints> 項目的 id 相同。
<vstov4:customization id="ContosoExcel">
修改文件層級專案
對於多專案部署中的所有文件層級專案,您必須將 ID 附加至 _AssemblyLocation 自訂文件屬性。 本節示範如何更新 ContosoExcelWorkbook.xlsx 檔案中的 _AssemblyLocation 屬性,這個步驟必須對所有文件層級專案重複執行。
若要在 Excel 或 Word 2010 中修改 _AssemblyLocation
在 Excel 中,按一下 [檔案] 索引標籤。
按一下 [資訊]。
按一下 [屬性] 下拉箭號,然後按一下 [進階屬性]。
按一下 [Custom] 索引標籤。
按一下 [屬性] 窗格中的 [_AssemblyLocation]。
編輯 [值] 文字方塊中的文字以移除 |vstolocal (如果此文字存在) 並加入 |id=ContosoInstaller。
按一下 [確定]。
若要在 Excel 或 Word 2007 中修改 _AssemblyLocation
在 Excel 中,按一下 [Microsoft Office 按鈕]。
指向 [準備],然後按一下 [屬性]。
按一下 [文件屬性] 下拉箭號,然後按一下 [進階屬性]。
按一下 [Custom] 索引標籤。
按一下 [屬性] 窗格中的 [_AssemblyLocation]。
編輯 [值] 文字方塊中的文字以移除 |vstolocal (如果此文字存在) 並加入 |id=ContosoInstaller。
按一下 [確定]。
重新簽署資訊清單
使用憑證簽署應用程式和部署資訊清單, 以確保檔案未遭修改。
若要重新簽署應用程式和部署資訊清單
將 %USERPROFILE%\Documents\Visual Studio 2010\Projects\ContosoInstaller\ContosoInstaller 方案目錄中的 ContosoInstaller_TemporaryKey.pfx 憑證檔複製到 c:\publish\Application Files\ContosoInstaller_1_0_0_0目錄。
開啟 Visual Studio 命令提示字元。
切換到 c:\publish\Application Files\ContosoInstaller_1_0_0_0 目錄。
使用下列命令簽署修改後的應用程式資訊清單:
mage -sign ContosoInstaller.dll.manifest -certfile ContosoInstaller_TemporaryKey.pfx
「ContosoInstaller.dll.manifest 簽署成功」訊息隨即顯示。
切換到 c:\publish 目錄。
使用下列命令更新及簽署修部署資訊清單:
mage -update ContosoInstaller.vsto -appmanifest "Application Files\ContosoInstaller_1_0_0_0\ContosoInstaller.dll.manifest" -certfile "Application Files\ContosoInstaller_1_0_0_0\ContosoInstaller_TemporaryKey.pfx"
「ContosoInstaller.vsto 簽署成功」訊息隨即顯示。
將 ContosoInstaller.vsto 檔案複製到 c:\publish\Application Files\ContosoInstaller_1_0_0_0 目錄。
測試多重專案部署
下列程序可確保資訊清單會安裝 Outlook 增益集和 Excel 活頁簿。
若要測試多重專案部署
將 c:\publish 目錄複製到測試用電腦。
執行安裝程式以安裝多重專案部署。
[Microsoft Office 自訂安裝程式] 隨即顯示。
按一下 [安裝]。
[Microsoft Office 自訂安裝程式] 對話方塊隨即顯示下列訊息:「已成功安裝 Microsoft Office 自訂。」
開啟 Outlook 以確認增益集可運作。
開啟 Excel 活頁簿檔案以確認文件層級自訂可運作。
確認多重專案部署在已安裝之應用程式的清單中具有單一進入點。
在 Windows XP 中的 [新增/移除程式] 或 Windows Vista 中的 [程式和功能] 會顯示 [ContosoInstaller]。
清除發行目錄
下列程序可從發行目錄移除所有不需要的檔案。
若要清除發行目錄
從 c:\publish\Application Files\ContosoInstaller_1_0_0_0 目錄移除下列檔案:
ContosoExcelWorkbook.dll.manifest
ContosoExcelWorkbook.vsto
ContosoInstaller.dll.deploy
ContosoInstaller.docx
ContosoInstaller_TemporaryKey.pfx
ContosoOutlookAddIn.dll.manifest
ContosoOutlookAddIn.vsto
從 c:\publish 目錄移除下列檔案:
ContosoExcelWorkbook.vsto
ContosoInstaller.docx
ContosoOutlookAddIn.vsto
請參閱
工作
概念
其他資源
變更記錄
日期 |
記錄 |
原因 |
---|---|---|
2010 年 9 月 |
將 %USERPROFILE%\Documents\Visual Studio 10\Projects 變更為 %USERPROFILE%\Documents\Visual Studio 2010\Projects。 |
內容 Bug 修正。 |