快捷搜索:  汽车  科技

wps底层技术:WPS二次开发逻辑及其版本选择

wps底层技术:WPS二次开发逻辑及其版本选择永中Office基于JAVA,独树一帜,在非Win平台进步明显。不过可惜,目前通用办公市场,还是客户端为主,而JAVA对于业余编程的门槛又太高了。同样是国产Office,同样有特殊资源扶持,但与WPS比起来,还是差距明显。主要原因,可能是没有1个平易近人且招小白喜欢的二次开发接口吧。通用办公要流行,COM还是绕不过的BtOfficer是Office的重度用户,也不得不关注WPS。但在转向WPS的过程中,并不那么一帆风顺,在遭遇《办公想转国产货,二开双管齐下,奈何WPS实力劝退啊》一文中的情形,曾险些被劝退。但好在广大网友积极支招,在评论里给了很多中肯的意见。那本文,就继续接着上文,谈谈WPS二次开发时,在版本选择上要注意哪些内容。一、WPS二次开发的箱底逻辑

前言

wps底层技术:WPS二次开发逻辑及其版本选择(1)

三足鼎立?

国人熟悉的通用办公软件中,MSOffice、WPSOffice和永中Office肯定能位居前三甲,尽管也有各种开源的Office,但对普罗大众还是太遥远。

WPS作为国产通用办公软件,一度成为国产软件的骄傲。最近几年在国内的发展势头良好,其优异的云端本地体验和低廉的价格,受到越来越多机构用户的青睐

作为通用办公软件的二次开发者,在丰富软件生态、为用户创造价值上,有着举足轻重的作用。WPS不仅支持VBA,在最近更是推出了自家的JS宏(以下简称"JSA")脚本语言,成为第二个可以一键录制的办公软件供应商,对业余开发者非常的友好。

BtOfficer是Office的重度用户,也不得不关注WPS。但在转向WPS的过程中,并不那么一帆风顺,在遭遇《办公想转国产货,二开双管齐下,奈何WPS实力劝退啊》一文中的情形,曾险些被劝退。但好在广大网友积极支招,在评论里给了很多中肯的意见。

那本文,就继续接着上文,谈谈WPS二次开发时,在版本选择上要注意哪些内容。

一、WPS二次开发的箱底逻辑

wps底层技术:WPS二次开发逻辑及其版本选择(2)

通用办公要流行,COM还是绕不过的

永中Office基于JAVA,独树一帜,在非Win平台进步明显。不过可惜,目前通用办公市场,还是客户端为主,而JAVA对于业余编程的门槛又太高了。同样是国产Office,同样有特殊资源扶持,但与WPS比起来,还是差距明显。主要原因,可能是没有1个平易近人且招小白喜欢的二次开发接口吧。

Office和WPS都是基于COM的那一套,虽然造起来复杂,但客户端产品体验却异常好。尤其是Office,凝聚了WinCOM技术与理论,成为COM理论的集大成者。VB拥抱COM,转向VBA之后,成为COM的专用语言。

我们看到,至今很多难以超越的老牌行业软件,比如Adobe、ArcView、ArcGIS、AutoCAD等都无一例外地支持VBA,更别提SAP、以及各种定制的ERP了。所以,WPS很早前就支持VBA,这为WPS带来了不可估量的生态力量。

JSA虽然基于JS,但用起来感觉跟VBA语法相差并不大,所谓API不过是调用WPS的Application下各对象的属性和方法罢了。所以,无论是VBA还是JSA,实际上都是基于WPS的COM接口。

也就是说,只要支持COM编程的语言,都可作为WPS的二开工具。而VBA只不过是磨砺的最久最容易的那一个,如今JSA正在迎头赶来。

二、COM接口对开发者的意义

1、COM接口是一个很严肃的产品问题

COM接口是个很复杂的东西,但使用上却不然。系统对接口有各种各样的封装,应用程序也可通过各种途径(如ProgID ClsID GUID UUID等标识符)调用这些接口。

COM是面向对象的,其继承特性,就决定了一个重要的COM接口必须是一套稳定的东西,至少要做到接口标识符不要乱动。试想,接口之鼻祖IUnKnown,成天变来变去,让继承他的其他接口如何找得到爹?

COM的规范中,接口的扩展,通过继承可以很好地解决。接口的稳定,可以让COM组件构建起来的应用,灵活、健壮且易于扩展。所以,规范践行良好的产品,都会有非常不错的用户体验。对于二次开发的扩展,也可以降低代码的复杂性。

2、WPS变更接口,却从未征求开发者的意见,不但损人也不利己

COM的接口机制,本身就为升级扩展,提供了良好的规范。我们看到,Office发展这么多年,升级更新的速度也是同类楷模,但丝毫未扰乱编程接口的稳定。WPS作为通用办公软件,对外提供了一系列COM接口。但不知为何,WPS在2016版启动互联网运营之后,却全然不顾二开群体的利益,悄悄地将接口给改了。

以表格为例,早期的ProgID为"ET.Application",其GUID为“{45540001-5750-5300-4B49-4E47534F4654}”,而更改后的ProgID为"KET.Application",其GUID为“{45540001-5750-5300-4B49-4E47534F4655}”。这一点点小改升级,却可以导致早期二开产品,有作废的风险。

但,早期的版本尚有大量用户在使用,这就导致二开产品必须判断版本,增加处理的复杂性。难道IE附身了?这不给自家产品找抽么?

三、COM接口可以封锁吗?或许不同版本之间的差异可以告诉你答案

1、暴露COM接口,增加开发的便捷性,是在巩固加强生态护城河

BtOfficer在遭遇WPS版本之谜事件前,从未思考过这个问题。相信,很多开发者也不会思考这么无聊的问题。毕竟,COM接口暴露出来,提供给广大开发者,也是自家生态护城河的一支力量啊,谁会跟自己过意不去呢!

事实上,Office利用VBA这样的平民工具,建立起了强大的生态护城河。历史上曾有很多挑战者,无一例外的失败,其中有很大一部分原因就是VBA开发者群体所带起来的产品忠诚度。据微软估计,VBA的代码量已超过百亿行,是C/C 的数十倍之多,每天日活用户有数百万之多。

所以,同样作为通用办公软件的WPS,而且曾经与Office不分伯仲,没有理由会拒绝加强自己的生态护城河的行为。

2、JS宏的加入,或将改变点什么

JS宏加入之前,WPS没有像样的业余二开工具,不得不求助于VBA。由于VBA于Office的根底,兼容问题,一直让WPS很被动。不仅要支付VBA的授权费,还要承受骂名。

好在时代在变化,微软IE死掉了,微软也拥抱起了Chromium。WPS从移动端死里逃生,怎会没注意到。虽说不是十年磨一剑,但JS宏最终还是来了。

JS宏也搞了基于V8引擎的运行时,WPS的COM对象,也能赶起来干活了。既然如此,为何还要留着VBA,这个耻辱的标记呢?BtOfficer认为,开掉VBA,这是迟早的事!因为,JSA可以为WPS关上生态闭环的最后一道敞口。

WPS的客户端是QT、前后端有全栈能力的JS,已经走在一条更不容易被人约束的道路上了。

3、不同版本中的迹象

WPS的版本划分,其实只有两个:一是个人版,二是专业版。专业版,有很多名称,比如教育版、企业版、行政版等等。个人版,很特殊,叫个人免费版。

wps底层技术:WPS二次开发逻辑及其版本选择(3)

打开官网,最大最惹眼的,就是个人免费版

在前文吐槽中,很多网友的回复,一开始让人很困惑。有的人说好用功能全,没广告,而有的人却说广告关了也还有,功能也受限。甚至有好几位喜爱WPS的网友,攻击BtOfficer为高级黑,是在利用矛盾找流量。其实,对BtOfficer和其他二开用户来讲,广告有无不是重点,COM接口不能用才会真劝退。因为,无论是个人版也好,开发版也罢,名号总还是WPS嘛。

如果说,对于同一个对象,却有截然不同的结论,那么多半是这个对象的问题。这让BtOfficer想起了VB6的SP6补丁(可详阅《VB的SP6更新到2021版了,却安装不上?快来看这里》),同名也不见得就是同一个东西,更何况WPS有改接口的传统。

果然,官网上那个最靓的图暗藏玄机。直到安装完成前,没有任何明显的标识,指明所安装的就是个人免费版。如果不是开发者用户功能受限,反复折腾,估计一般用户也就认定这就是WPS了。在前文的评论中,甚至有人说企业版是企业用的,个人用不了。更别提,各种屁颠屁颠地跟随广告提示,去打卡免费领会员或4块8块的限时优惠会员了。

不过,还是有经验老道的网友提醒,专业版不仅没广告,功能还更全(目测是WPS不敢得罪自己的财神爷)。可是哪儿有专业版啊?官网上,下载下来的,就是免费个人版啊。难道,专业版是WPS销售在地推?

不过,好像也不对,JSA这种生态武器,投入都那么少,怎么可能铺那么多人去跑现场。所以,BtOfficer再次去搜罗官网,果然发现了1个小秘密。

wps底层技术:WPS二次开发逻辑及其版本选择(4)

至少过2道防御,才会找到专业版

第一道防御:最大、最靓眼的那个,已经足够迷惑人了。第二道防御:如果吃过前面的亏,没被劝退的,在所有产品下,会不会再次被Windows给截胡?第三道防御:专业版的叫法众多,企业版PC端,会不会让一些很傻很天真的人认为,那是企业用户的菜?

这不是在劝退,是在干嘛?分明就是引导个人用户使用免费个人版嘛。请问,WPS有没有考虑那些愿意花钱,不愿意使用免费版用户的意见呢?那么问题就来了,WPS为何要花这个巧妙的小心思,千方百计要引导大家用个人版呢?从生意的角度来看,唯一可以解释的是,都是在全力为JSA的出道准备。

个人用户免费,但WPS官方保留了绝对的解释权,用来测试没有任何法律上的风险。

4、专业版一上,疑难杂症全无

wps底层技术:WPS二次开发逻辑及其版本选择(5)

大家所谓从未有广告,大概就是这个了吧

上图所示的企业版PC端,就是所谓专业版啦。下载后安装,查看协议,已经没有个人版中的广告条款。无论是在线还是离线,运行起来也明显比个人版顺滑了好多。看来,一分钱一分货,诚不欺我也!

接着,就是测试接口,无论OfficeVBA、还是VB6、以及WPS本身,都可以顺利使用。而这些,几天前用付费会员的个人版还不行。这说明了什么?说明了,WPS的确在实验关闭COM接口,而仅允许自家的JSA使用。

四、WPS二次开发,还是专业版靠谱

wps底层技术:WPS二次开发逻辑及其版本选择(6)

靠谱,免费哪行!

一来,有前面猜想的原因。就BtOfficer自己测试的情况来看,个人版中部分COM接口被封闭。包括,顶级Application对象接口被封死,VBE对象的接口被封死。这就意味着,第三方工具不能脱离WPS环境,要想用,得JSA优先。而这些,在专业版中,目前还不存在。

二来,企业机构客户是高价值用户,不仅是WPS的财神爷和保护者,也是二次开发的目标客户。个人用户的权益敏感度低,付费意愿低,深层次需求少。而机构客户权益敏感性强,一般都有专业法务审核服务条款(会打印出来审核),不利于自己的,一般会排除。毕竟目前WPS还没强大到,店大欺客的地步。正是因为这样,背后WPS也不敢耍小心思。基于专业版,二开用户可以搭车,降低不必要的开销。

三来、个人版很多功能必须联网,而专业版则没有这个要求。很多专业版,还不具备升级功能,可以锁定开发环境,不惧后续版本中可能存在的接口管制。

欢迎关注BtOfficer,更多精彩,让上班摸鱼两不误。文中若有疏漏,欢迎评论指正!

猜您喜欢: