程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 如何簡單部署用VSTO SE 2005開發的Excel,Word插件

如何簡單部署用VSTO SE 2005開發的Excel,Word插件

編輯:.NET實例教程

如何簡單部署用VSTO SE 2005開發的ExcelWord插件

本文標題之所以要加上簡單二字,是為了區別於msdn上的兩篇講述VSTO部署的經典長文。

http://msdn2.microsoft.com/en-us/library/bb332051.ASPx

http://msdn2.microsoft.com/en-us/library/bb332052.ASPx

其實VSTO插件的部署無非就是Prerequisitesgrant full trust (因為注冊表是模板幫我們處理好的,我們不需要去關心,下文有詳述)。上面的兩篇文章為了一步到位的解決好以上兩個問題,並打包.msi文件,用了一些技術。一,給Setup項目添加prerequisites,並且使用launch condition來要求用戶在安裝setup.exe前必須保證所有的prerequisites都已經安裝在目標機器上;二,利用Custom Action在安裝過程完成後,調用cASPol工具來設置程序集的權限。

第一篇文章講解了各個技術點,第二篇文章通過具體的例子來完成兩種類型項目的部署,並且提供了一個Sample,裡面包含了要用到一些工程,如SetSecurity。例子就是引用這個工程做為Custom Action來設置權限的。

與上兩者不同的是,本文拋開所有這些技術不看,僅僅打包一個最最簡單的.msi文件,把prerequisitesgrant trust的事情,留待插件安裝完再去人工做。希望如此,能給在VSTO項目部署時遇到困難的人一個直觀的印象,讓大家看到VSTO項目要運行,其實就是這麼幾個東西。然後回頭再看Microsoft提供的這兩篇文章,幸許又會有另外的收獲。

 

一.概述

如果你的VSTO SE插件在開發機器上工作良好,一旦裝到客戶機上,就不再裝載了。可能的原因無非就是一下幾種:(在此排除了軟禁用,硬禁用的情況)

1.一些prerequisites沒有裝:

a.       .Net Framework (這是所有.Net應用程序運行的必備,沒有什麼好說的。如果我們用VSTO SE開發的插件,我們應該在客戶機上裝上.Net 2.0以上的版本)

b.       Office PIAs(這是連接.NetOffice COM的橋梁,CLR通過它來操作OfficeCOM對象,沒有它,你的程序一樣不能跑)

c.       VSTO Runtime(這是所有用VSTO開發出來的軟件,運行時必備的,目前有三個主本版,第三個版本用來支持ClickOnce部署,本文中不涉及。本文只用到第二個主版本的升級版)

2. 注冊表,任何一個VSTO SE插件程序要運行,都是Office啟動的時候先從注冊表中找到插件的相關信息,主要是LoadBehaviorManifest的地址,然後根據Manifest的地址,找到manifest文件,manifest文件中記錄了dll的地址和一些配置信息 (manifest文件可以用notepad打開) ,根據manifest來裝載程序集。我們用VSTO SE新建一個插件項目的時候,Microsoft提供給我們的模板會幫我們自動添加一個Setup項目。這個項目中已經默認地幫我們把要寫入的注冊表鍵值寫好,無須我們多費心思。當然如果你把默認的Setup項目刪掉了 (我經常這麼干,因為看著礙眼,並且我一般只要Debug,不要Deploy),自己再添加一個新的Setup項目,這時候,新項目中,系統不會幫你寫好注冊表的鍵值。關於注冊表,下面是默認Setup項目的注冊表視圖的截圖:

3. 權限的設置問題,Office裝載任何VSTO SE開發出來的.Net插件時,都需要這個插件被完全信任。有兩種方法完成這個任務:

a.       Microsoft .Net Framework Wizard (圖形化界面)

b.      CASPol.exe (命令行,本文采用這種方式,原因是好表述,不要圖)

 

二.部署案例

                下面我們動手,用VSTO SE創建一個Excel 2007的插件(2003也是一樣的,只不過客戶機要裝Excel 2003Excel 2003 PIA,還有不要在同一台機器上同時安裝Office 20032007),並且將它部署到一個客戶機上。(由於手頭只有英文版VS,菜單名都是英文的,大家自己對應看看吧)

1.       打開Visual Studio 2005,新建項目,在左邊的導航板塊中,選中C#->Office->2007 Add-ins,在右邊選中Excel Add-in。取名ExcelAddIn,點OK

然後系統會在solution中默認的創建兩個項目,一個是插件項目,一個是Setup項目,如圖:

 

2.       ThisAddIn.cs文件中的ThisAddIn_Startup函數裡加一句代碼,以供回頭測試是否部署成功。修改後的代碼如下:

private void ThisAddIn_Startup(object sender, System.EventArgs e)

        {

            #region VSTO generated code    this.Application = (Excel.Application)Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy.Wrap(typeof(Excel.Application), this.Application);

            #endregion

 

            MessageBox.Show("Deploy successfully");

}

3.       Solution Expolrer裡面,右擊ExcelAddInSetup項目,點擊Build

4.       Setup項目文件夾中的debug目錄下找到ExcelAddInSetup.msi文件,拷貝到目標機器上。

5.       在目標機器上,安裝:

.Net Framework 2.0 http://www.microsoft.com/downloads/details.ASPx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en

Office 2007 PIAs: (運行完下載文件後,還要點擊得到的o2007PIA.msi才是安裝PIAs)

http://www.microsoft.com/downloads/details.ASPx?familyid=59DAEBAA-BED4-4282-A28C-B864D8BFA513&displaylang=en

VSTO Runtime2.0:

http://www.microsoft.com/downloads/details.ASPx?FamilyId=4468D8CB-B43E-4B09-82F6-8BA3F7B5E935&displaylang=en#filelist

還有目標機上要有對應的Office程序,比如這裡就需要Excel 2007

6.       雙擊剛剛拷貝到目標機器上的ExcelAddInSetup.msi,選擇安裝目錄並安裝,假設安裝到了C:\Test目錄下。安裝完,該目錄下會出現兩個文件:ExcelAddIn.dllExcelAddIn.dll.manifest,其中的.dll文件就是我們下面要設置權限的程序集

7.       回到桌面,點擊開始->運行,輸入cmd,在命令行提示下,輸入cd C:\Windows\Microsoft.Net\Framework\v2.0.50727,回車

然後輸入下面命令:

CASPol –u –ag All_Code –url “C:\Test\ExcelAddIn.dll” FullTrust –n “Test”

回車

輸入yes

回車   (請勿直接拷貝這段命令行,因為Word好像改變了字體,大家還是自己敲一下,順帶加深一下印象)

8.       打開ExcelMessageBox對話框跳出。

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved