JXar是一个用来打包、解包迅雷自定义格式的xar文件的一个小程序。
主要功能:
全新的2.x版本代码全部重写,支持几乎所有xar文件,包括迅雷7.1、7.2、7.9、极速版、尊享版、迅雷影音、迅雷壁纸、光影魔术手、微博桌面等。
更新日志:
JXar 2.1.0
第一次公开发布
XAR是什么文件?
Xunlei Archive,一种迅雷自定义文件格式。
layout:
本目录主要由xml文件和lua脚本构成,也可能是打包过的.xar格式的文件,其中包括对象树模板,对象模板,宿主窗口模板,动画模板的定义(这里要特别注意,定义的是模板,并非模板的实例),并描述他们的属性,方法以及事件响应。并且其中包含所有用户自定义的控件,所有的用户自定义控件由一个xml文件以及一个lua文件构成,xml文件中定义控件的属性,方法,以及事件对应的响应函数,lua脚本中是这些方法和响应函数的实现。XML文件中定义的模板和控件都是静态的配置信息,只有在通过lua脚本创建控件或者创建模板实例的时候才会去获取并解析其中的XML节点配置信息,解析的过程中会创建出来相应类型的模板或者控件实例
res:
本目录主要由资源包构成,里面可能是一个个的zip格式的资源包,也可能只是文件夹格式的资源包。
nametable.cfg:
本文件主要用来描述layout包里面定义的控件和模板的位置,便于查找。该文件由XLUECL编译工具生成。
onload.lua:
本文件是XAR中的驱动,XAR被加载时发现其中有这个文件,就会去加载并运行它,通过它来将layout目录里面定义的控件和res目录里面定义的资源展示到程序界面中。这个文件标明为可选,因为没有这个文件程序不会报错,但对于功能完整的XAR包这个是必须的
package.cfg:
本文件主要是用来描述XAR包的一些信息,包括包名,作者,版权所有者等,另外还指明nametable.cfg文件的路径,主资源包名,以及启动脚本路径,除此之外还可以指明该XAR包包含了哪个XAR包。如果指定了包含的XAR,那么加载该XAR包的时候也会去加载包含的XAR,除非包含的XAR已经被加载过。因此,该XAR包可以使用包含的XAR包中的控件,资源等信息。
package.cfg格式说明:
< package name=”xxx” />
name: xar 名字
author: xar 作者
nametablecfg 节点
path: nametable.cfg 的位置
type: 目前仅支持xml
mainres 节点
package: 资源包的名字
loadsrcipt节点
path: 脚本路径
type: 目前仅支持lua
include节点
package name表示每个依赖的包,可以多个.
nametable.cfg格式说明
这个文件是由xluecl生成的,不需要编辑
layout目录下文件格式说明:
layout目录下可以包含xml和lua文件,xml和lua都是区分大小写的
xml格式说明
1) root节点必须是xlue
2) root子节点可以是objtreetemplate, animation_def, control, hostwndtemplate, objtemplate, animationtemplate, stylelist.不允许出现其他节点
a) objtreetemplate:对象树模板,可以包含id,class, templateid(从模板即成) 三种属性,可以包含attr,obj, templateeventlist子节点,不允许出现其他节点
i. attr可以包含子节点left, top, width, height, mousewheelstrategy
其中left, top, width, height都支持位置表达式,也可以是数字
mousewheelstrategy指示当前对象树的mousewheel的分发策略,可以取值如下:
l focus 滚轮消息发往当前焦点对象,这是之前一直使用的策略,也是默认策略
l over 滚轮消息发往当前鼠标下面的合适对象,该对象必须可以接收鼠标事件,zorder最高;如果没有找到符合条件的对象,那么直接丢弃该消息,不再发往当前焦点对象
ii. obj表示一个ui 对象,可以是标准对象,也可以是自定义control,具体配置查看obj配置
b) animation_def 参考自定义动画
c) control 参考如何开发control
d) hostwndtemplate 参考 HostWnd的主要类型与使用场合,关键事件
e) objtemplate 参考control内objtemplate介绍
f) animationtemplate 参考自定义动画
g) stylelist