分享

便携软件制作进阶:WPS Office便携版制作图文教程

 昵称54832185 2018-05-18

    昨天发了怎么制作便携软件,今天再发一个实战的教程。准备便携化的软件就是我最喜欢用的国产办公软件:WPS Office。

    之所以选择WPS Office作为便携软件制作进阶的实战对象,是因为它有几个特点:1、它有多个程序入口:WPS包含文字、表格和幻灯三个部分,但却属于一个软件,相信不会有人觉得做成三套便携软件是个好主意;2、它比较复杂:当然这是相对昨天的IconWorkshop而言的,不过WPS制作成便携软件时涉及到的内容都掌握了的话,其它软件基本上问题都不大了。

    接下来讲一下要实现的目标:1、WPS的三个部分都能正常工作,这是必须滴;2、不打算关联文件类型,便携软件就不去跟安装版抢什么文件关联了;3、软件设置的更改能正常保存;4、各部件之间不会相互影响;5、没有残留,作为便携软件这也是必须滴。

    现在步入正题:

    首先,启动虚拟机,准备好工具和WPS的安装程序:


    第二步,用Regshot抓取第一个快照:


    等到第一个快照摄取完成后,保留Regshot的窗口,运行WPS的安装程序,把默认用WPS打开文件的选项去掉,并且要记得把安装路径改到“Program Files”底下,否则后面要乱套了:


    安装完成后,安装程序会自动运行一次WPS,并且关掉后,会有一个进程“wpsnotify.exe”驻留。结束它,或者等它窗口跳出来后叉掉它,再用Regshot摄取第二个快照:


    摄取完成后点击“比较”:


    比较结束后会跳出比较结果:


   偶!卖糕的!内容真多啊!基本上这里是第一道坎了,没耐性分析的还是不要试图自己做便携软件了,去下载现成的吧!这时候就想念VMWare Thinapp了~都拷出来了,分析起来省力多了。

   还是看日志吧!其实还是有技巧的,基本上关注几个地方就行:

   1、程序主目录,当然在“Program Files\Kingsoft\WPS Office”了,刚才装在这里就是这个目的,好找;

   2、Application Data,关键字一搜索,可以发现主要集中在三个地方:

        (1)“C:\Documents and Settings\Username\Local Settings\Application Data\kingsoft\wps”,对应PAL变量就是%LOCALAPPDATA%;

        (2)“C:\Documents and Settings\Username\Application Data\kingsoft\office6”,对应PAL变量%APPDATA%;

        (3)“C:\Documents and Settings\All Users\Application Data\kingsoft\office6”,对应%ALLUSERSAPPDATA%。

    3、注册表,这里考眼力和对注册表的了解了,主要集中在几块:

        (1)“HKLM\SOFTWARE\Classes\Interface”,看到“Classes”就是在注册文件类型了,应该用不上的,但是不管怎么样,先用注册表编辑器“regedit.exe”导出来,存为“Interface.reg”;

        (2)“HKU\S-1-5-21-515967899-1060284298-725345543-500\Software\Classes”,这个如果打开注册表编辑器来看的话,对应的就是“HKCU\Software\Classes”,又是在注册文件类型,也先导出来,存成“Classes.reg”;

        (3)“HKCU\Software\Kingsoft\Office”,这个是主菜了!可以看到大量的信息在里面,存成“WPSOffice.reg”;

        (4)“HKLM\Software\Kingsoft\Office”,这个虽然没看到,但是不能忘记它,很多软件都喜欢在“HKLM\Software”底下写内容的,保持关注!

    好了现在主要的东西都有了,先放在一块儿。这里我喜欢顺便把模版解压出来,然后把东西都一样样放好:主程序目录放在App下,在App下新建目录“DefaultData”,把%LOCALAPPDATA%、%APPDATA%和%ALLUSERSAPPDATA%的东西都拷过来,再建个目录“settings”,把注册表文件都拷进来,就像这样:


    接下来把整个WPSOfficePortable文件夹从虚拟机拷到宿主计算机上,然后把虚拟机恢复到什么都没装的快照状态什么?!你居然没有给虚拟机的系统做过快照?哦~你一定没仔细看过我上一个教程,里面专门提到过这一点的!那你先卸载WPS吧,注册表和文件之类的手动擦擦干净,或者你给虚拟机重装系统也行)

    系统干净后,再把整个文件夹拷回虚拟机。为什么要这样做?就是为了得到一个没安装过WPS的环境,以保证下面要做的试验的可靠性!

    现在,我们有了个从未装过WPS的系统,有了WPS的文件和注册表信息。我们来手动安装下,看看正常运行需要哪些文件和信息:

    (1)拷贝主程序:把“WPS Office”目录拷进“Program Files”;

    (2)拷贝APPDATA:检查下拷出来的三个APPDATA,可以发现%LOCALAPPDATA%底下其实是空的,而另外两个底下有东西,那就不去管它,把另外两个拷回对应位置;

    (3)恢复注册表:因为一开始就不打算要文件关联,所以只把“wpsoffice.reg”导入注册表,其它两个先不管它。

    接下来,运行下WPS.EXE,看看能不能用————很幸运,一切正常,说明这些信息和文件足够了,%LOCALAPPDATA%和另外两个注册表文件可以删掉了。

    然后是我前面心心念念的“wpsnotify.exe”,找找发现它在“wtoolex”底下,底下还有几个程序,主要是用来在线升级之类的。很显然,我不会让我的便携软件在线升级,那会把整个东西弄得乱糟糟的。所以毫不犹豫地删掉整个文件夹!再运行看看————没影响,一切正常。另外在“utility”下发现了卸载程序——!,也整个删了——运行——没影响。另外两个文件夹,一个是模版,另一个不认识,算了,饶了它们了。这样,整个便携软件的材料都齐了。

    材料齐了之后就是处理材料的问题了。程序目录我不喜欢有空格,所以把“WPS Office”改成了“WPSOffice”,另外就是中间多了层“8.1.0.3526”目录,看着碍眼,直接把下一层的提上来,于是就成了这样(这后面的步骤在不在虚拟机里做已经无所谓了):


    接下来就正式开始便携化了。

    先提取程序图标,而我们的WPS需要提取三个,都存到Appinfo底下:


    另外不要忘记把DefaultData底下的%AppData%目录都处理一下,起好名字,再把底下的文件夹提上来,详细原因参见上个教程:


    生成Appinfo.ini:

    (1)运行“PortableApps.comDevelopmentToolkit.exe”

打开WPSOfficePortable目录后,选择“Edit details”:

在挑出来的对话中,把各项信息都填好,然后点击“Save”,接下来就可以关掉了。


    这样我们就在Appinfo目录下得到了个初步的Appinfo.ini。但是因为WPS的特殊性,所以还需要编辑一下它,主要就是改动“[Control]”底下的内容:


接下来就是在App\Appinfo\Launcher目录下写Launcher.ini了,因为有三个应用程序,所以我写了三份,分别叫做“WPSPortable.ini”、“ETPortable.ini”和“WPPPortable.ini”。

在写Launcher.ini的时候,我分为两步走:

第一步,基本信息和目录,以WPS表格为例:

   [Launch]

   ProgramExecutable=WPSOffice\Office6\et.exe

   ;这里是运行的主程序

   CloseEXE=et.exe

   ;如果et.exe正在运行,就不启动

   WaitForExe1=wps.exe

   WaitForExe2=et.exe

   WaitForExe3=wpp.exe

   ;这里三条很重要,因为三个功能任何一个还在运行,WPS都不算退出了。

   DirectoryMoveOK=yes

   [Activate]

   Registry=true

   ;显然要写注册表的

   [DirectoriesMove]

   -=%LOCALAPPDATA%\kingsoft\wps

   ;这个用完就删了

   Appdata=%APPDATA%\kingsoft\office6

   AllUsersAppdata=%ALLUSERSAPPDATA%\kingsoft\office6

   ;这两个要先把原有的倒进来

   [DirectoriesCleanupIfEmpty]

   1=%LOCALAPPDATA%\kingsoft

   2=%APPDATA%\kingsoft

   3=%ALLUSERSAPPDATA%\kingsoft

   ;这三个是容易被忽视掉的,如果系统没装过金山其它软件的话,记得把kingsoft这个文件夹也清除掉。

第二步,注册表信息,还是以ET为例:

   打开之前保存的WPSOFFICE.REG,可以看到有几处地方是包含有路径信息的。那我们就不能简单地直接导入这些信息,而是要根据运行时的不同来写入这些信息。


先把这些信息写进Launcher.ini(这里是ETPortable.ini):

   [RegistryKeys]

   WPSOfficePortable=HKCU\Software\Kingsoft\Office

   ;这里请注意等号“=”前面的名称,要把“DefaultData\Settings”底下的注册表文件改成这个名字

   ;也就是把“WPSOffice.reg”改名为“WPSOfficePortable.reg”

   WPSPortable=HKLM\Software\Kingsoft\Office

   ;这个是为HKLM做的准备,如果程序修改了这里,就保存到“WPSPortable.reg”中

   [RegistryValueWrite]

   HKCU\Software\Kingsoft\Office\6.0\common\InstallRoot=REG_SZ:%PAL:AppDir%\WPSOffice

   HKCU\Software\Kingsoft\Office\6.0\common\spelldictionaries\1\dictpath=REG_SZ:%PAL:DataDir%\Kingsoft

      \office6\CUSTOM.DIC

   HKCU\Software\Kingsoft\Office\6.0\wps\Application Settings\UserTemplatePath=REG_SZ:%PAL:DataDir%\Kin

      gsoft\Office6\templates

   HKCU\Software\Kingsoft\Office\6.0\wps\Application Settings\DefaultTemplateFile=REG_SZ:%PAL:DataDir%\Kin

      gsoft\Office6\templates\Normal.wpt

   ;这几个就是原来注册表中涉及到路径的项目,“%PAL:APPDIR%”这些都是PAL的变量,上篇教程提供的网址里可以查到

   [RegistryCleanupIfEmpty]

   1=HKCU\Software\Kingsoft

   2=HKLM\Software\Kingsoft

   ;这里和上面的APPDATA一样,不要遗忘了如果系统没装过kingsoft的软件的话,要把尾巴清理掉

WPSPortable.ini和WPPPortable.ini的写法参照ETPortable.ini,就只有“ProgramExecutable”和“CloseEXE”不一样,其他部分都完全一样,生成三个Launcher.ini:


    Launcher.ini都准备好了以后,就可以编译封包了。只不过这里有点小麻烦,那就是需要编译三次,而且每次编译的时候,都需要改动Appinfo。还是以ET为例:

   (1)修改Appinfo.ini中的AppID:将AppID改成你要生成的配置项,这里把AppID=WPSOfficePortable.ini改成AppID=ETPortable.ini:


    (2)修改Appicon.ico:看过我上个教程的人,在之前的一个步骤一定有疑问:为什么我这次没有把图标保存为Appicon.ico?原因就在这里了。因为要编译三次,而每次要编译哪个,才把哪个的名字该成Appicon.ico。比如说,编译ET的时候,就把电子表格的图标重命名为Appicon.ico:


    (3)编译、封包:Appinfo.ini和Appicon.ico都准备好了以后,就可以运行PortableApps.comLauncherGenerator来进行编译封包了。这里和一般的编译封包没有差别,成功后会生成ETPortable.exe。

    重复以上三个步骤,就可以把另外两个程序也编译封包。至此,整个WPS Office的便携化已经完成了。为了更完美,我又把Appinfo中的AppID改回了WPSOfficePortable,因为运行程序和编译程序的时候,这个ID的作用是不一样的。

    讲到最后的运行就顺便再提一点:PAL编译的便携软件在运行的时候,需要从Appinfo.ini中读取AppID作为自己的标识,另外就是会去App\Appinfo\Launcher下面读取和自己文件名相同的ini文件,例如:我把编译好的“ETPortable.exe”重命名成“WPS表格.exe”,那我就要把Launcher底下的“ETPortable.ini”也改名成“WPS表格.ini”,否则就无法运行,而内容则不用改动。

    到这里,WPS Office便携版的制作就大功告成啦!心情好的话,在干净的虚拟机里用Regshot再摄取下运行前后的快照对比下吧!除了Windows的一些日志变化以外,应该没有其它系统变化啦!(如果有漏网之鱼再去Launcher.ini里改好了,不用重新编译的哦!o(∩_∩)o )


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多