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 SDKsWindowsv10.0AinNETFX 4.6.1 Toolsgacutil.exe"
%GACUTIL% -i D:myworkword.dll
 
如果用户安装的是wps 2016的专业版,那么上面的步骤全部可以省略。注意:要安装.net framwork,我们是用c#开发的插件。
接下来要做的事情是
 1、注册我们自己写的com组件
 2、把插件信息写入注册表
我写了个批处理文件:

@echo off

echo import reg

@set baseDir="D:myworkWordAddInTest2010WpsWordAddinWpsWordAddininstallin"

regedit /s D:myworkWordAddInTest2010WpsWordAddinWpsWordAddininstallinmyreg.reg

C:WindowsMicrosoft.NETFrameworkv4.0.30319RegAsm %baseDir%DebugWpsWordAddin.dll /tlb:%baseDir%DebugWpsWordAddin.tlb
@SET GACUTIL="%baseDir%NETFX 4.0 Toolsgacutil.exe"
Echo Install the dll into GAC
%GACUTIL% -i %baseDir%DebugWpsWordAddin.dll
%GACUTIL% -i %baseDir%DebugWord.dll
%GACUTIL% -i %baseDir%DebugOffice.dll

pause

 
myreg.reg文件:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERSOFTWAREMicrosoftOfficeWordAddinsWpsWordAddin.WPSWord2016]
"FriendlyName"="WpsWordAddin"
"Description"="wps word示例"
"LoadBehavior"=dword:00000003
"CommandLineSafe"=dword:00000001
[HKEY_CURRENT_USERSoftwareKingsoftOfficeWPSAddinsWL]
"WpsWordAddin.WPSWord2016"=""

插件运行截图:

    点击测试,会在文档中写入文字和插入图片。

原文地址:https://www.cnblogs.com/wangqiang3311/p/7206406.html