- ·上一篇文章:用ASP生成XML数据文档(RSS订阅)
- ·下一篇文章:ASP+XML制作菜单管理
将asp程序制作成为安装版:xml打包和解包
首先是打包(谈不上压缩,不过经常用ftp的情况下,经常这样打包会好很多的,ftp最怕的就是零碎文件太多,况且现在的网络情况...)
 
打包代码
 
- <
%@LANGUAGE="VBSCRIPT" 
CODEPAGE="65001"%>
  - <
% 
Option 
Explicit 
%>
  - <
% 
On 
Error 
Resume 
Next 
%>
  - <
% 
Response.Charset="UTF-8" 
%>
  - <
% 
Server.ScriptTimeout=99999999 
%>
  - <
!DOCTYPE 
html 
PUBLIC 
"-//W3C//DTD 
XHTML 
1.0 
Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
  - <
html 
xmlns="http://www.w3.org/1999/xhtml">
 
  - <
head>
 
  - <
meta 
http-equiv="Content-Type" 
content="text/html
 
charset=utf-8" 
/>
 
  - <
title>
文件打包程序<
/title>
 
  - <
/head>
 
  - <
body>
 
  - <
%  - Dim 
ZipPathDir, 
ZipPathFile, 
ZipFileExt  - Dim 
startime, 
endtime  - '此为默认当前文件夹 
-  
- ZipPathDir 
= 
Left(Request.ServerVariables("PATH_TRANSLATED"), 
InStrRev(Request.ServerVariables("PATH_TRANSLATED"), 
"\"))  - '在此更改要打包文件夹的路径 
-  
- 'ZipPathDir="D:\MYWEB\WEBINFO" 
-  
- '生成的xml文件 
-  
- ZipPathFile 
= 
"update.xml"  - '不进行打包的文件扩展名 
-  
- ZipFileExt 
= 
"db
bak"  - If 
Right(ZipPathDir, 
1)<
>
"\" 
Then 
ZipPathDir 
= 
ZipPathDir&
"\"  - '开始打包 
-  
- CreateXml(ZipPathFile) 
- '遍历目录内的所有文件以及文件夹 
-  
- Sub 
LoadData(DirPath)  -  
 
 
 
Dim 
XmlDoc  -  
 
 
 
Dim 
fso 
'fso对象  -  
-  
 
 
 
Dim 
objFolder 
'文件夹对象  -  
-  
 
 
 
Dim 
objSubFolders 
'子文件夹集合  -  
-  
 
 
 
Dim 
objSubFolder 
'子文件夹对象  -  
-  
 
 
 
Dim 
objFiles 
'文件集合  -  
-  
 
 
 
Dim 
objFile 
'文件对象  -  
-  
 
 
 
Dim 
objStream  -  
 
 
 
Dim 
pathname, 
TextStream, 
pp, 
Xfolder, 
Xfpath, 
Xfile, 
Xpath, 
Xstream  -  
 
 
 
Dim 
PathNameStr  -  
 
 
 
response.Write("=========="&
DirPath&
"==========<
br>
")  -  
 
 
 
Set 
fso 
= 
server.CreateObject("scripting.filesystemobject")  -  
 
 
 
Set 
objFolder 
= 
fso.GetFolder(DirPath)'创建文件夹对象  -  
-  
 
 
 
Response.Write 
DirPath  -  
 
 
 
Response.flush  -  
 
 
 
Set 
XmlDoc 
= 
Server.CreateObject("Microsoft.XMLDOM")  -  
 
 
 
XmlDoc.load(Server.MapPath(ZipPathFile))  -  
 
 
 
XmlDoc.async 
= 
false  -  
 
 
 
'写入每个文件夹路径  -  
-  
 
 
 
Set 
Xfolder 
= 
XmlDoc.SelectSingleNode("//root").AppendChild(XmlDoc.CreateElement("folder"))  -  
 
 
 
Set 
Xfpath 
= 
Xfolder.AppendChild(XmlDoc.CreateElement("path"))  -  
 
 
 
Xfpath.text 
= 
Replace(DirPath, 
ZipPathDir, 
"")  -  
 
 
 
Set 
objFiles 
= 
objFolder.Files  -  
 
 
 
For 
Each 
objFile 
in 
objFiles  -  
 
 
 
 
 
 
 
If 
LCase(DirPath 
&
 
objFile.Name) 
<
>
 
LCase(Request.ServerVariables("PATH_TRANSLATED")) 
And 
LCase(DirPath 
&
 
objFile.Name) 
<
>
 
LCase(DirPath 
&
 
ZipPathFile) 
Then  -  
 
 
 
 
 
 
 
 
 
 
 
If 
ext(objFile.Name) 
Then  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Response.Write 
"---<
br/>
"  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
PathNameStr 
= 
DirPath 
&
 
"" 
&
 
objFile.Name  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Response.Write 
PathNameStr 
&
 
""  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Response.flush  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
'================================================  -  
-  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
'写入文件的路径及文件内容  -  
-  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Set 
Xfile 
= 
XmlDoc.SelectSingleNode("//root").AppendChild(XmlDoc.CreateElement("file"))  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Set 
Xpath 
= 
Xfile.AppendChild(XmlDoc.CreateElement("path"))  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Xpath.text 
= 
Replace(PathNameStr, 
ZipPathDir, 
"")  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
'创建文件流读入文件内容,并写入XML文件中  -  
-  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Set 
objStream 
= 
Server.CreateObject("ADODB.Stream")  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
objStream.Type 
= 
1  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
objStream.Open()  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
objStream.LoadFromFile(PathNameStr)  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
objStream.position 
= 
0  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Set 
Xstream 
= 
Xfile.AppendChild(XmlDoc.CreateElement("stream"))  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Xstream.SetAttribute 
"xmlns:dt", 
"urn:schemas-microsoft-com:datatypes"  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
'文件内容采用二制方式存放  -  
-  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Xstream.dataType 
= 
"bin.base64"  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Xstream.nodeTypedValue 
= 
objStream.Read()  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Set 
objStream 
= 
Nothing  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Set 
Xpath 
= 
Nothing  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Set 
Xstream 
= 
Nothing  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Set 
Xfile 
= 
Nothing  -  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
'================================================  -  
-  
 
 
 
 
 
 
 
 
 
 
 
End 
If  -  
 
 
 
 
 
 
 
End 
If  -  
 
 
 
Next  -  
 
 
 
Response.Write 
"<
p>
"  -  
 
 
 
XmlDoc.Save(Server.Mappath(ZipPathFile))  -  
 
 
 
Set 
Xfpath 
= 
Nothing  -  
 
 
 
Set 
Xfolder 
= 
Nothing  -  
 
 
 
Set 
XmlDoc 
= 
Nothing  -  
 
 
 
'创建的子文件夹对象  -  
-  
 
 
 
Set 
objSubFolders 
= 
objFolder.SubFolders  -  
 
 
 
'调用递归遍历子文件夹  -  
-  
 
 
 
For 
Each 
objSubFolder 
in 
objSubFolders  -  
 
 
 
 
 
 
 
pathname 
= 
DirPath 
&
 
objSubFolder.Name 
&
 
"\"  -  
 
 
 
 
 
 
 
LoadData(pathname)  -  
 
 
 
Next  -  
 
 
 
Set 
objFolder 
= 
Nothing  -  
 
 
 
Set 
objSubFolders 
= 
Nothing  -  
 
 
 
Set 
fso 
= 
Nothing  - End 
Sub  - '创建一个空的XML文件,为写入文件作准备 
-  
- Sub 
CreateXml(FilePath)  -  
 
 
 
'程序开始执行时间  -  
-  
 
 
 
startime 
= 
Timer()  -  
 
 
 
Dim 
XmlDoc, 
Root  -  
 
 
 
Set 
XmlDoc 
= 
Server.CreateObject("Microsoft.XMLDOM")  -  
 
 
 
XmlDoc.async 
= 
False  -  
 
 
 
Set 
Root 
= 
XmlDoc.createProcessingInstruction("xml", 
"version='1.0' 
encoding='UTF-8'")  -  
 
 
 
XmlDoc.appendChild(Root)  -  
 
 
 
XmlDoc.appendChild(XmlDoc.CreateElement("root"))  -  
 
 
 
XmlDoc.Save(Server.MapPath(FilePath))  -  
 
 
 
Set 
Root 
= 
Nothing  -  
 
 
 
Set 
XmlDoc 
= 
Nothing  -  
 
 
 
LoadData(ZipPathDir)  -  
 
 
 
'程序结束时间  -  
-  
 
 
 
endtime 
= 
Timer()  -  
 
 
 
response.Write("页面执行时间:" 
&
 
FormatNumber((endtime 
- 
startime), 
3) 
&
 
"秒")  - End 
Sub  - '判断文件类型是否合法 
-  
- Function 
ext(filename)  -  
 
 
 
ext 
= 
true  -  
 
 
 
Dim 
temp_ext, 
e  -  
 
 
 
temp_ext 
= 
Split(ZipFileExt, 
"
")  -  
 
 
 
For 
e 
= 
0 
To 
UBound(temp_ext)  -  
 
 
 
 
 
 
 
If 
Mid(filename, 
InstrRev(filename, 
".") 
+ 
1) 
= 
temp_ext(e) 
Then 
ext 
= 
false  -  
 
 
 
Next  - End 
Function  - %>
  - <
/body>
 
  - <
/html>
 
解
将asp程序制作成为安装版:xml打包和解包