Xml_Install.asp
上传用户:saigedz
上传日期:2019-10-14
资源大小:997k
文件大小:12k
源码类别:

中间件编程

开发平台:

HTML/CSS

  1. <%@ CODEPAGE=65001 %>
  2. <%
  3. '///////////////////////////////////////////////////////////////////////////////
  4. '// 插件应用:    1.8 Pre Terminator 及以上版本, 其它版本的Z-blog未知
  5. '// 插件制作:    haphic(http://haphic.com/)
  6. '// 备    注:    主题管理插件
  7. '// 最后修改:   2008-6-28
  8. '// 最后版本:    1.2
  9. '///////////////////////////////////////////////////////////////////////////////
  10. %>
  11. <% Option Explicit %>
  12. <% On Error Resume Next %>
  13. <% Response.Charset="UTF-8" %>
  14. <% Response.Buffer=True %>
  15. <% Server.ScriptTimeout=99999999 %>
  16. <!-- #include file="../../c_option.asp" -->
  17. <!-- #include file="../../function/c_function.asp" -->
  18. <!-- #include file="../../function/c_system_lib.asp" -->
  19. <!-- #include file="../../function/c_system_base.asp" -->
  20. <!-- #include file="../../function/c_system_plugin.asp" -->
  21. <!-- #include file="c_sapper.asp" -->
  22. <!-- #include file="../p_config.asp" -->
  23. <%
  24. Call System_Initialize()
  25. '检查非法链接
  26. Call CheckReference("")
  27. '检查权限
  28. If BlogUser.Level>1 Then Call ShowError(6)
  29. If CheckPluginState("ThemeSapper")=False Then Call ShowError(48)
  30. BlogTitle = "从服务器安装主题"
  31. %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  32. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%=ZC_BLOG_LANGUAGE%>" lang="<%=ZC_BLOG_LANGUAGE%>">
  33. <head>
  34. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  35. <meta http-equiv="Content-Language" content="<%=ZC_BLOG_LANGUAGE%>" />
  36. <meta name="robots" content="noindex,nofollow"/>
  37. <link rel="stylesheet" rev="stylesheet" href="../../CSS/admin.css" type="text/css" media="screen" />
  38. <link rel="stylesheet" rev="stylesheet" href="images/style.css" type="text/css" media="screen" />
  39. <title><%=BlogTitle%></title>
  40. </head>
  41. <body>
  42. <div id="divMain">
  43. <div class="Header">Theme Sapper-主题安装 - 在线安装您选择的主题.</div>
  44. <%Call SapperMenu("0")%>
  45. <div id="divMain2">
  46. <div>
  47. <%
  48. Dim Install_Error
  49. Install_Error=0
  50. Dim Install_Url,Install_ID,Install_Pack,Install_Path,Install_Data
  51. Install_Url=Request.QueryString("url")
  52. Install_ID=Mid(Install_Url, InStrRev(Install_Url, "theme=")+6)
  53. If Install_Url="" Then
  54. Response.Write "<p><font color=""red""> × 主题的下载地址为空.</font></p>"
  55. Install_Error=Install_Error+1
  56. Else
  57. '验证所要安装的主题是否存在
  58. Action=Request.QueryString("act")
  59. If Action<>"confirm" Then
  60. Response.Write "<p id=""loading"">正在验证更新, 请稍候...  如果长时间停止响应, 请 <a href=""javascript:window.location.reload();"" title=""点此重试"">[点此重试]</a></p>"
  61. Response.Flush
  62. Set objXmlVerChk=New ThemeSapper_CheckVersionViaXML
  63. objXmlVerChk.XmlDataWeb=(getHTTPPage(Resource_URL & Install_ID & "/verchk.xml"))
  64. objXmlVerChk.XmlDataLocal=(LoadFromFile(BlogPath & "/THEMES/" & Install_ID & "/Theme.xml","utf-8"))
  65. If Action="update" Then
  66. If (LCase(objXmlVerChk.Item_ID_Web)=LCase(Install_ID)) Then
  67. Response.Write "<p class=""status-box"">您将对这个主题 <b>("& objXmlVerChk.Item_Name_Web &")</b> 进行修复或升级, 如果继续安装会将其<b>完全覆盖</b>.<br/> 请在继续前确认您对主题中自定义的部分进行了备份.<br/><br/>"
  68. Response.Write "您当前插件版本为: <b>"& objXmlVerChk.Item_Version_Local &"</b>. 发布日期为: <b>"& objXmlVerChk.Item_PubDate_Local &"</b>. 最后修改日期为: <b>"& objXmlVerChk.Item_Modified_Local &"</b>.<br/>"
  69. Response.Write "将要安装的版本为: <b>"& objXmlVerChk.Item_Version_Web &"</b>. 发布日期为: <b>"& objXmlVerChk.Item_PubDate_Web &"</b>. 最后修改日期为: <b>"& objXmlVerChk.Item_Modified_Web &"</b><br/><br/>"
  70. If objXmlVerChk.Item_Url_Web<>Empty Then
  71. Response.Write "<a href="""& objXmlVerChk.Item_Url_Web &""" target=""_blank"" title=""查看主题的发布页面"">点此查看主题的发布信息!</a><br/><br/>"
  72. End If
  73. Response.Write objXmlVerChk.OutputResults & "<br/><br/>"
  74. Response.Write "<a href=""Xml_Install.asp?act=confirm&amp;url="& Server.URLEncode(Install_Url) &""" title=""继续安装"">[继续安装]</a> 或 <a href=""javascript:history.back(1);"" title=""返回上一页面"">[取消安装]</a><p>"
  75. Else
  76. Response.Write "<p class=""status-box"">对不起, 这个主题 <b>("& objXmlVerChk.Item_Name_Local &")</b> 不支持在线安装或升级, 请返回上一页. <br/><br/><a href=""javascript:history.back(1);"" title=""返回上一页面"">[返回上一页]</a><p>"
  77. End If
  78. Install_Error=Install_Error+1
  79. Else
  80. If (LCase(objXmlVerChk.Item_ID_Local)=LCase(Install_ID)) Then
  81. Response.Write "<p class=""status-box"">您已安装过这个主题 <b>("& objXmlVerChk.Item_Name_Local &")</b>, 主题文件已存在于你的博客内, 如果继续安装会将其<b>完全覆盖</b>, 这可能会导致您对该主题的个性化修改丢失, 是否继续安装?<br/><br/>"
  82. Response.Write "您当前插件版本为: <b>"& objXmlVerChk.Item_Version_Local &"</b>. 发布日期为: <b>"& objXmlVerChk.Item_PubDate_Local &"</b>. 最后修改日期为: <b>"& objXmlVerChk.Item_Modified_Local &"</b>.<br/>"
  83. Response.Write "将要安装的版本为: <b>"& objXmlVerChk.Item_Version_Web &"</b>. 发布日期为: <b>"& objXmlVerChk.Item_PubDate_Web &"</b>. 最后修改日期为: <b>"& objXmlVerChk.Item_Modified_Web &"</b><br/><br/>"
  84. If objXmlVerChk.Item_Url_Web<>Empty Then
  85. Response.Write "<a href="""& objXmlVerChk.Item_Url_Web &""" target=""_blank"" title=""查看主题的发布页面"">点此查看主题的发布信息!</a><br/><br/>"
  86. End If
  87. Response.Write objXmlVerChk.OutputResults & "<br/><br/>"
  88. Response.Write "您还可以跳过安装步骤, 直接查看已安装的主题, 并在该页面中选择应用它. <b>(推荐)</b><br/><br/>"
  89. Response.Write "<a href=""Xml_Install.asp?act=confirm&amp;url="& Server.URLEncode(Install_Url) &""" title=""继续安装"">[继续安装]</a> 或 <a href=""javascript:history.back(1);"" title=""返回上一页面"">[取消安装]</a> 或 <span class=""notice""><a href=""ThemeDetail.asp?theme=" & Server.URLEncode(Install_ID) & """ title=""直接查看已安装过的("& Install_ID &")主题"">[直接查看已安装过的 """& Install_ID &""" 主题]</a></span><p>"
  90. Install_Error=Install_Error+1
  91. End If
  92. End If
  93. Set objXmlVerChk=Nothing
  94. Response.Write "<script language=""JavaScript"" type=""text/javascript"">document.getElementById('loading').style.display = 'none';</script>"
  95. If Install_Error<>0 Then Response.End
  96. End If
  97. Response.Write "<p id=""loading"">正在安装主题, 请稍候...  如果长时间停止响应, 请 <a href=""javascript:window.location.reload();"" title=""点此重试"">[点此重试]</a></p>"
  98. Response.Flush
  99. '下载安装主题
  100. Response.Write "<p class=""status-box"">正在下载 ZTI 主题安装包文件... <img id=""status"" align=""absmiddle"" src=""images/loading.gif"" /><p>"
  101. Response.Flush
  102. Install_Data = getHTTPPage(Install_Url)
  103. Install_Pack = BlogPath & "THEMES/Install.zti"
  104. Install_Path = BlogPath & "THEMES/"
  105. If Install_Data = False Then
  106. Response.Write "<p><font color=""red""> × ZTI 文件下载失败.</font></p>"
  107. Install_Error=Install_Error+1
  108. Else
  109. Response.Write "<p><font color=""green""> √ ZTI 文件下载完成.</font></p>"
  110. End If
  111. Response.Write "<script language=""JavaScript"" type=""text/javascript"">document.getElementById('status').style.display = 'none';</script>"
  112. Response.Flush
  113. Call SaveToFile(Install_Pack,Install_Data,"utf-8",False)
  114. Response.Write "<p><font color=""green""> √ ZTI 文件 ""THEMES/Install.zti"" 已被保存到您的空间内.</font></p>"
  115. Response.Flush
  116. Response.Write "<p class=""status-box"">ZTI 文件 ""THEMES/Install.zti"" 正在解包安装...<p>"
  117. Response.Flush
  118. Dim objXmlVerChkFile
  119. Dim objNodeList
  120. Dim objFSO
  121. Dim objStream
  122. Dim i,j
  123. Set objXmlVerChkFile = Server.CreateObject("Microsoft.XMLDOM")
  124. objXmlVerChkFile.async = False
  125. objXmlVerChkFile.ValidateOnParse=False
  126. objXmlVerChkFile.load(Install_Pack)
  127. If objXmlVerChkFile.readyState<>4 Then
  128. Response.Write "<p><font color=""red""> × ZTI 文件未准备就绪, 无法解包.</font></p>"
  129. Install_Error=Install_Error+1
  130. Else
  131. If objXmlVerChkFile.parseError.errorCode <> 0 Then
  132. Response.Write "<p><font color=""red""> × ZTI 文件有错误, 无法解包.</font></p>"
  133. Install_Error=Install_Error+1
  134. Else
  135. Dim Pack_ver,Pack_Type,Pack_For,Pack_ID,Pack_Name
  136. Pack_Ver = objXmlVerChkFile.documentElement.SelectSingleNode("//root").getAttributeNode("version").value
  137. Pack_Type = objXmlVerChkFile.documentElement.selectSingleNode("//root").getAttributeNode("type").value
  138. Pack_For = objXmlVerChkFile.documentElement.selectSingleNode("//root").getAttributeNode("for").value
  139. Pack_ID = objXmlVerChkFile.documentElement.selectSingleNode("id").text
  140. Pack_Name = objXmlVerChkFile.documentElement.selectSingleNode("name").text
  141. If (CDbl(Pack_Ver) > CDbl(XML_Pack_Ver)) Then
  142. Response.Write "<p><font color=""red""> × ZTI 文件的 XML 版本为 "& Pack_Ver &", 而你的解包器版本为 "& XML_Pack_Ver &", 请升级您的 ThemeSapper, 安装被中止.</font></p>"
  143. Install_Error=Install_Error+1
  144. ElseIf (LCase(Pack_Type) <> LCase(XML_Pack_Type)) Then
  145. Response.Write "<p><font color=""red""> × 不是 ZTI 文件, 而可能是 "& Pack_Type &", 安装被中止.</font></p>"
  146. Install_Error=Install_Error+1
  147. ElseIf (LCase(Pack_For) <> LCase(XML_Pack_Version)) Then
  148. Response.Write "<p><font color=""red""> × ZTI 文件版本不符合, 该版本可能是 "& Pack_For &", 安装被中止.</font></p>"
  149. Install_Error=Install_Error+1
  150. Else
  151. Response.Write "<blockquote><font color=""Teal"">"
  152. Set objNodeList = objXmlVerChkFile.documentElement.selectNodes("//folder/path")
  153. Set objFSO = CreateObject("Scripting.FileSystemObject")
  154. j=objNodeList.length-1
  155. For i=0 To j
  156. If objFSO.FolderExists(Install_Path & objNodeList(i).text)=False Then
  157. objFSO.CreateFolder(Install_Path & objNodeList(i).text)
  158. End If
  159. Response.Write "创建目录" & objNodeList(i).text & "<br/>"
  160. Response.Flush
  161. Next
  162. Set objFSO = Nothing
  163. Set objNodeList = Nothing
  164. Set objNodeList = objXmlVerChkFile.documentElement.selectNodes("//file/path")
  165. j=objNodeList.length-1
  166. For i=0 To j
  167. Set objStream = CreateObject("ADODB.Stream")
  168. With objStream
  169. .Type = 1
  170. .Open
  171. .Write objNodeList(i).nextSibling.nodeTypedvalue
  172. .SaveToFile Install_Path & objNodeList(i).text,2
  173. Response.Write "释放文件" & objNodeList(i).text & "<br/>"
  174. Response.Flush
  175. .Close
  176. End With
  177. Set objStream = Nothing
  178. Next
  179. Set objNodeList = Nothing
  180. Response.Write "</font></blockquote>"
  181. End If
  182. End If
  183. End If
  184. Set objXmlVerChkFile = Nothing
  185. If Err.Number<>0 Then Install_Error=Install_Error+1
  186. Err.Clear
  187. Response.Write "<p>"
  188. Install_Error = Install_Error + DeleteFile(BlogPath & "THEMES/" & "Install.zti")
  189. Response.Write "</p>"
  190. If Install_Error = 0 Then 
  191. Response.Write "<p>"
  192. Install_Error = Install_Error + DeleteFile(BlogPath & "THEMES/" & Pack_ID & "/verchk.xml")
  193. Response.Write "</p>"
  194. End If
  195. Response.Flush
  196. End If
  197. If Install_Error = 0 Then
  198. Response.Write "<p class=""status-box""> √ 主题安装完成. 如果您的浏览器没能自动跳转, 请 <a href=""ThemeDetail.asp?theme=" & Server.URLEncode(Pack_ID) & "&amp;themename=" & Server.URLEncode(Pack_Name) & """>[点击这里]</a>.</p>"
  199. Response.Write "<script>setTimeout(""self.location.href='ThemeDetail.asp?theme=" & Server.URLEncode(Pack_ID) & "&themename=" & Server.URLEncode(Pack_Name) & "'"",3000);</script>"
  200. Else
  201. Response.Write "<p class=""status-box""><font color=""red""> × 主题安装失败. "
  202. Response.Write "<a href=""javascript:window.location.reload();"" title=""返回上一个页面""><span>[点此重试]</span></a> 或 <a href=""Xml_List.asp"" title=""返回资源列表页""><span>[点此返回资源列表页]</span></a></font></p>"
  203. End If
  204. Response.Write "<script language=""JavaScript"" type=""text/javascript"">document.getElementById('loading').style.display = 'none';</script>"
  205. %>
  206. </div>
  207. </div>
  208. </div>
  209. </body>
  210. </html>
  211. <%
  212. Call System_Terminate()
  213. If Err.Number<>0 Then
  214. Call ShowError(0)
  215. End If
  216. %>