WPS插件开发流程(2)


上一篇文章WPS插件开发流程(1)中,我们详细讲了如何在Visual Studio中如何创建插件、在WPS中显示插件的方法。今天我们完成剩下的部分,讲解如何导出PIA、DLL强签名、打包安装文件夹的方法。需要注意的是,开发WPS插件方法不止一种,我分享的开发流程仅供大家参考


(八)生成WPS演示所需的PIA

我参考的原文章:http://www.cnblogs.com/wangqiang3311/p/7206406.html

1. 打开WPS的安装文件夹,找到ksoapi.dll和wppapi.dll,复制到D盘下自己创建的PIA文件夹中,方便后续操作

提示:若需要生成WPS文字或WPS表格的PIA,对应的DLL分别是wpsapi.dl或etapi.dlll

2. 在开始菜单中,打开”VS 2017的开发人员命令提示符”

3. 输入cd “D:\PIA”,进入PIA文件夹中

4. 输入TlbImp ksoapi.dll (注意是tlbimp)后回车,会在PIA文件夹中生成Office.dll。输入TlbImp wppapi.dll 后回车,会在PIA文件夹中生成PowerPoint.dll

5. 这样我们就得到了Office.dll和PowerPoint.dll两个文件


(九)强签名

如果要将这两个Dll添加到GAC,还需要进行强签名(若用户是WPS专业版则不需要,为了兼容性,推荐进行强签名)。另外,如果项目中引用了第三方未签名的dll,则必须进行强签名才能引用

1.  输入sn -k test.pfx后回车,生成随机密钥对

提示:此处的test.pfx可以是任意名称,密钥文件扩展名也可以是.snk

2. 输入ildasm Office.dll /out:Office.il后回车,采用反汇编工具ildasm生成中间语言。

3. 输入ilasm /dll /res:Office.res /key:test.pfx Office.il /out:Office.dll后回车,采用汇编工具ilasm(注意不要看成ildasm重新生成dll

4. PowerPoint.dll的强签名操作按照步骤2和3类推,输入以下命令

ildasm PowerPoint.dll /out:PowerPoint.il

ilasm /dll /res:PowerPoint.res /key:test.pfx PowerPoint.il/out:PowerPoint.dll

5. 重新生成dll后提示:Operation completed successfully,说明强签名成功

提示:经过强签名后的dll会覆盖原来未签名的dll

6. 强签名后的Office.dll和PowerPoint.dll


(十)部署

1. 将项目调试由Debug改为Release

提示:第一次切换Debug为Release,需要在项目属性中重新设置:生成(为COM互操作注册)、调试(启动外部程序)

2. 点启动按钮后关闭WPP,目的是为了让VS生成Release版的项目dll

3. 在项目上右键,点”在文件资源管理器中打开文件夹”

4. 双击bin文件夹,双击打开Release文件夹,将之前强签名后的dll复制过来

5. 将步骤(六)中创建的安装和卸载注册表文件也复制过来

6. 将NETFX 4.0 Tools文件夹复制过来(该文件夹在项目源码的Release文件夹中有)

7. 在记事本中输入已下代码,另存为”安装.bat”批处理文件

@echo off

@setbaseDir="%cd%"

Echo.

Echo 【1】导入注册表

regedit/s %baseDir%\install.reg

Echo.

Echo 【2】注册类型

C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm%baseDir%\WPP_test.dll /tlb:%baseDir%\WPP_test.tlb

Echo.

Echo 【3】添加程序集到GAC

@SETGACUTIL="%baseDir%\NETFX 4.0 Tools\gacutil.exe"

%GACUTIL%-i %baseDir%\WPP_test.dll

%GACUTIL%-i %baseDir%\PowerPoint.dll

%GACUTIL%-i %baseDir%\Office.dll

pause

8. 在记事本中输入以下代码,另存为”卸载.bat”批处理文件

@echo off

@setbaseDir="%cd%"

Echo.

Echo 【1】从缓存中移除程序集

@SETGACUTIL="%baseDir%\NETFX 4.0 Tools\gacutil.exe"

rd /s /QC:\Windows\Microsoft.NET\assembly\GAC_MSIL\WPP_test

rd /s /QC:\Windows\Microsoft.NET\assembly\GAC_MSIL\PowerPoint

rd /s /QC:\Windows\Microsoft.NET\assembly\GAC_MSIL\Office

Echo.

Echo 【2】注销类型

C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm/u %baseDir%\WPP_test.dll /tlb:%baseDir%\WPP_test.tlb

Echo.

Echo 【3】清除注册表

regedit/s %baseDir%\uninstall.reg

pause

说明:

(1)%cd%是bat文件当前文件夹路径;RegAsm是程序集注册工具,需要用户先安装Microsoft .Net Framework 4.0;gacutil.exe是全局程序集缓存工具,用户电脑一般没有,所以需要我们将NETFX 4.0 Tools文件夹附带在安装包里

(2)上面的”安装.bat”和”卸载.bat”中均默认注册或移出PowerPoint.dll和Office.dll,如果用户安装了同样也是本文章方法创建的插件,可能会影响其他插件使用。为保险起见,我们可以在”卸载.bat”文件中不要移除C:\Windows\Microsoft.NET\assembly\GAC_MSIL文件夹下的PowerPoint和Office文件夹。即在上方”卸载.bat”代码中去掉下面两句:

rd /s /QC:\Windows\Microsoft.NET\assembly\GAC_MSIL\PowerPoint

rd /s /QC:\Windows\Microsoft.NET\assembly\GAC_MSIL\Office

9. 将Release文件夹整体拷贝出来,打包发给用户。用户安装时,以管理员身份运行”安装.bat”即可

10.  用户安装失败常见原因

(1) 用户未安装Microsoft .Net Framework 4.0

(2) Win7以上系统,用户未以管理员身份运行安装.bat

(3) 安装文件夹所在路径中有空格,需去掉文件夹路径中的空格

注册表未成功添加插件信息,需要用户手动双击”install.reg”添加插件信息到注册表


源码

教程完整版word和项目源码下载:

https://pan.baidu.com/s/1ufSfrzU5XKlCa9nhyp9tqQ

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页