c#開發wps插件(3)部署


      上一篇,我們完成了具體的開發工作,但是最終必須得部署到客戶機器上。所以,部署方面,我花費了一些時間去研究,現在總結下。上一篇中,我為什么建議開發人員安裝wps專業版呢?因為裝了專業版,方便我們開發,安裝過程中會順便把 office PIA安裝到GAC中。否則,我們還得手動安裝PIA,這個過程極其繁瑣。

      啥是PIA?說白了,就是office 或者wps提供給開發者的接口,學名叫互操作集。也就是說c#代碼與office組件之間的交互。互操作集通過api,公布了word對象模型,供我們代碼使用。

     如果說客戶機器上沒有PIA,怎么安裝呢?首先我們開發人員得自己生成PIA,然后部署到客戶機器上,那么當前任務就是如何生成PIA?

   打開vs 命令行:

    

  執行TlbImp命令:

其實這一步是從com中導出到公共語言運行庫程序集,它們保持了相同的方法定義。注意:etapi.dll 是wps的Excel組件,wpsapi.dll 是wps的word組件,會生成word.dll,根據自己需要導出,還有一個ksoapi.dll 是wps office組件,會生成office.dll。

導出后,接下來需要添加到GAC中。

什么是GAC?從程序的角度理解,那就是共享的程序集池。當然微軟開發的很多dll,它的共享程度是最高的,所以把那些dll直接安裝到GAC中了。我們剛才生成的word.dll要加入GAC,還必須得滿足一個條件:強簽名。這個導出的word.dll沒有簽名,怎么辦呢?想辦法簽名吧。

  經過以下3步即可簽名:

1、第一步:生成隨機密鑰對
sn -k wpsAddIn.snk
2.首先采用反匯編工具ildasm生成中間語言。
    ildasm word.dll /out:word.il
   生成的結果包括myTest.il文件和myTest.res文件
3.采用匯編工具ilasm重新生成我們自己的dll文件
   ilasm /dll /res:word.res /key:wpsAddIn.snk word.il /out:word1.dll

簽了名后,通過下面批處理方式添加到GAC中:

@SET GACUTIL="C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\gacutil.exe"
%GACUTIL% -i D:\mywork\word.dll
 
如果用戶安裝的是wps 2016的專業版,那么上面的步驟全部可以省略。 注意:要安裝.net framwork,我們是用c#開發的插件。
接下來要做的事情是
 1、注冊我們自己寫的com組件
 2、把插件信息寫入注冊表
我寫了個批處理文件:

@echo off

echo import reg

@set baseDir="D:\mywork\WordAddInTest2010\WpsWordAddin\WpsWordAddin\install\bin"

regedit /s D:\mywork\WordAddInTest2010\WpsWordAddin\WpsWordAddin\install\bin\myreg.reg

C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm %baseDir%\Debug\WpsWordAddin.dll /tlb:%baseDir%\Debug\WpsWordAddin.tlb
@SET GACUTIL="%baseDir%\NETFX 4.0 Tools\gacutil.exe"
Echo Install the dll into GAC
%GACUTIL% -i %baseDir%\Debug\WpsWordAddin.dll
%GACUTIL% -i %baseDir%\Debug\Word.dll
%GACUTIL% -i %baseDir%\Debug\Office.dll

pause

 
myreg.reg文件:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\Word\Addins\WpsWordAddin.WPSWord2016]
"FriendlyName"="WpsWordAddin"
"Description"="wps word示例"
"LoadBehavior"=dword:00000003
"CommandLineSafe"=dword:00000001
[HKEY_CURRENT_USER\Software\Kingsoft\Office\WPS\AddinsWL]
"WpsWordAddin.WPSWord2016"=""

插件運行截圖:

    點擊測試,會在文檔中寫入文字和插入圖片。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM