# fsys.vpatch 库模块帮助文档

## fsys 成员列表 <a id="fsys" href="#fsys">&#x23;</a>

### fsys.vpatch("字符串参数") <a id="fsys.vpatch" href="#fsys.vpatch">&#x23;</a>
创建 vpatch 对象,  
参数指定 *.pat 格式补丁文件

### fsys.vpatch() <a id="fsys.vpatch" href="#fsys.vpatch">&#x23;</a>
[返回对象:vpatchObject](#vpatchObject)

## fsys.vpatch 成员列表 <a id="fsys.vpatch" href="#fsys.vpatch">&#x23;</a>

vpatch支持库  
VPatch WebSite:http://www.tibed.net/vpatch

### fsys.vpatch._magicNumber <a id="fsys.vpatch._magicNumber" href="#fsys.vpatch._magicNumber">&#x23;</a>
`0x54415056`

### fsys.vpatch.crc32("文件路径") <a id="fsys.vpatch.crc32" href="#fsys.vpatch.crc32">&#x23;</a>
获取文件CRC32

### fsys.vpatch.genPat <a id="fsys.vpatch.genPat" href="#fsys.vpatch.genPat">&#x23;</a>
扩展库，用于生成vpatch补丁

### fsys.vpatch.md5("文件路径") <a id="fsys.vpatch.md5" href="#fsys.vpatch.md5">&#x23;</a>
获取文件MD5(大写32位)

## vpatchObject 成员列表 <a id="vpatchObject" href="#vpatchObject">&#x23;</a>

### vpatchObject.apply("旧版源文件路径","更新目标文件路径") <a id="vpatchObject.apply" href="#vpatchObject.apply">&#x23;</a>
应用补丁文件  
返回值为 _VPATCH_ 前缀的常量,如下:  

_VPATCH_SUCCESS 成功  
_VPATCH_UPTODATE 文件已经是最新,不需要更新  
_VPATCH_NOMATCH 在补丁文件中没有找到哈希匹配的文件  
_VPATCH_ERROR 发生错误  
_VPATCH_CORRUPT 补丁文件错误

### vpatchObject.beginPatch <a id="vpatchObject.beginPatch" href="#vpatchObject.beginPatch">&#x23;</a>

```aardio
vpatchObject.beginPatch = function(blockSize,stepSize){
	/*开始应用补丁,blockSize为补丁块总数*/
}
```

### vpatchObject.close() <a id="vpatchObject.close" href="#vpatchObject.close">&#x23;</a>
关闭补丁文件

### vpatchObject.eachPatch() <a id="vpatchObject.eachPatch" href="#vpatchObject.eachPatch">&#x23;</a>

```aardio
for( ind,md5Mode,chksum,dstChksum,blocks,size in vpatchObject.eachPatch() ){ 
	io.print( ind,md5Mode,chksum,dstChksum,blocks,size );
}
```

### vpatchObject.endPatch <a id="vpatchObject.endPatch" href="#vpatchObject.endPatch">&#x23;</a>

```aardio
vpatchObject.endPatch = function(md5,crc32,dwLowDateTime,dwHighDateTime){ 
	var tmFile = fsys.time();
	tmFile.dwLowDateTime = dwLowDateTime;
	tmFile.dwHighDateTime = dwHighDateTime;

	if( #md5 ){
		..io.print("目标文件MD5",md5)
	}
}
```

### vpatchObject.stepPatch <a id="vpatchObject.stepPatch" href="#vpatchObject.stepPatch">&#x23;</a>

```aardio
vpatchObject.stepPatch = function(){
	/*应用一个补丁块*/	
}
```

### vpatchObject.valid() <a id="vpatchObject.valid" href="#vpatchObject.valid">&#x23;</a>
该补丁是否有效补丁文件

### 自动完成常量
_VPATCH_CORRUPT=2  
_VPATCH_ERROR=1  
_VPATCH_FILE_ERR_DEST=7  
_VPATCH_FILE_ERR_PATCH=5  
_VPATCH_FILE_ERR_SOURCE=6  
_VPATCH_NOMATCH=3  
_VPATCH_SUCCESS=0  
_VPATCH_UPTODATE=4  
