上一篇,我們完成了具體的開發工作,但是最終必須得部署到客戶機器上。所以,部署方面,我花費了一些時間去研究,現在總結下。上一篇中,我為什么建議開發人員安裝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步即可簽名:
sn -k wpsAddIn.snk
簽了名后,通過下面批處理方式添加到GAC中:
@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
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"=""

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