到这里又遇到问题了,命令行参数是拆分到数组里的,如果不指定命令参数时,则数组保持为“空数组”。而对“空数组”的任何操作(包括用UBound函数测长度)都会引发错误,这个问题困扰了我很久。怎么才能将这种情况区分出来呢?没办法,最终还是只能借助API函数:SafeArrayGetDim,其实这个函数的真正作用是:取得 OLE 或 Variant 数组元素的数组维度,不过,勉强解决问题吧。
从命令行参数得到XML配置文件地址后,接着是解析XML文件获取更新信息与文件列表。当然,在解析XML配置信息之前,得先定好XML配置文件的格式,如下面的代码:
<?xml version="1.0" encoding="gb2312" ?> <force>0</force> <publishDate>20090902 19:51:32</publishDate> <version>1.0.0.0</version> <remark /> <run /> </publish> <configUrl url="Update.xml" /> <configPath path="D:/Current/VBUpdate/Publisher/" /> <baseUrl url="http://localhost/update/" /> <localPath url="D:/Current/VBUpdate/Publisher/" /> <remotePath url="D:/Current/VBUpdate/Publisher/" /> </paths> <file name="Publisher.exe" main="1" version="1.0.0.0" /> <file name="../Update/Update.exe" version="1.0.0.0" /> <file name="../Update/olelib.tlb" version="20040201 22:54:16" /> <file name="../Update/SetSys.ico" version="20090813 10:38:54" /> </files> </update> |
其中,publish结点描述的上所发布程序的基本信息,包括以下子结点:
序号 |
结点名称 |
用途 |
可能值 |
备注 |
1 |
force |
指明是否强制更新。 |
0(可取消更新)或1(强制更新)。 |
非0值均解析为1(强制更新)。 |
2 |
publishDate |
表示发布时间。 |
发布当时时间。 |
|
3 |
version |
主程序版本号。 |
主程序文件版本号。 |
通过比较这个版本号决定是否需要更新。 |
4 |
remark |
发布说明。 |
历次发布的修订内容。 |
每次的修订内容占一行,新的在上面。 |
5 |
|