zoukankan      html  css  js  c++  java
  • 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"=""

    插件运行截图:

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

  • 相关阅读:
    DOS 批处理命令For循环命令详解
    怎样在电脑上下载哔哩哔哩的视频?
    华为事件启思:美国究竟有多少高科技公司?
    常用电子书下载收藏
    [置顶] 【玩转cocos2d-x之七】场景类CCScene和布景类CCLayer
    递归循环JSON
    POJ_1365_Prime_Land
    WIX在VS2012中如何制作中文安装包
    PKU Online Judge 1054:Cube (设置根节点)
    MFC——AfxParseURL用法
  • 原文地址:https://www.cnblogs.com/wangqiang3311/p/7206406.html
Copyright © 2011-2022 走看看