简单生活

Simple life , it's as easy as 1,2,3...

Z-Blog自带数据库插件升级解决方案

首先,这篇文章是写给Z-Blog插件开发人员作为参考的,仅仅提供一种思路。

新版Z-Blog中的PluginS插件已经支持检测插件版本了,给插件的安装和升级带来了很多方便。但是插件升级的同时可能造成插件数据库已经配置文件的覆盖,也就是说,升级后你可能只拥有一个初始化的插件。

这里提供一个方案,由插件自己解决这个问题,下面是相册插件windsphoto的include.asp部分代码,发出来说明一下,供参考。

include.asp部分代码
  1. '定义数据库路径
  2. Const WP_DATA_PATH="data/20086282253180.mdb"
  3.  
  4. '注册插件  
  5. Call RegisterPlugin("WindsPhoto","ActivePlugin_WindsPhoto")  
  6.   
  7. '安装插件  
  8. Function InstallPlugin_WindsPhoto()  
  9.     On Error Resume Next
  10.     Call SetBlogHint_Custom("‼ 提示:[WindsPhoto]已启用,现在进入初始化系统设置."
  11.     Call WindsPhoto_Rebackup_Include()
  12.     Call WindsPhoto_Database_Rename()         
  13.     Err.Clear  
  14. End Function  
  15.   
  16. '首次安装数据库改名....  
  17. Function WindsPhoto_Database_Rename()  
  18. Dim fso, f, s, pathnew, ranNum  
  19.   randomize  
  20.   ranNum=int((99-10+1)*rnd+99)   
  21.   pathnew=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum& ".mdb"      
  22.     Set fso = CreateObject("Scripting.FileSystemObject")  
  23.     if fso.fileexists(BlogPath & "/plugin/windsphoto/data/winds.mdb") then  
  24.     Set f = fso.GetFile(BlogPath & "plugin/windsphoto/"& WP_DATA_PATH)  
  25.     f.name=pathnew  
  26.     Set f = Nothing  
  27.     Dim strContent,strWP_DATA_PATH  
  28.     strContent=LoadFromFile(BlogPath & "/PLUGIN/WindsPhoto/include.asp","utf-8")  
  29.     strWP_DATA_PATH="data/" & pathnew  
  30.     Call SaveValueForSetting(strContent,True,"String","WP_DATA_PATH",strWP_DATA_PATH)  
  31.     Call SaveToFile(BlogPath & "/PLUGIN/WindsPhoto/include.asp",strContent,"utf-8",False)  
  32.     end if  
  33. End Function  
  34.   
  35. '还原备份设置  
  36. Function WindsPhoto_Rebackup_Include()  
  37. Dim strContent,fso  
  38.   Set fso=server.createobject("scripting.filesystemobject")  
  39.   if fso.fileexists(BlogPath & "/plugin/windsphoto/include.asp.bak") then  
  40.   strContent=LoadFromFile(BlogPath & "/plugin/windsphoto/include.asp.bak","utf-8")  
  41.   Call SaveToFile(BlogPath & "/plugin/windsphoto/include.asp",strContent,"utf-8",True
  42. '删除初始数据库
  43.   Call DelSiteFile("/plugin/windsphoto/data/winds.mdb")
  44. '跳转到插件设置
  45.   Response.Redirect "../plugin/windsphoto/admin_setting.asp" 
  46.   End if  
  47.   Set fso=nothing
  48. End Function  

两个函数,说明一下。WindsPhoto_Rebackup_Include() ,用来还原备份的配置文件include.asp.bak,这个文件可以在设置页面自动备份。同样,如果存在则还原,然后删除包里的初始数据库winds.mdb,后面一句跳转到设置页面也许就是多余的。

WindsPhoto_Database_Rename(),用来重命名初始数据库,先检查是否存在winds.mdb,如果存在,则利用当前时间+随机数重命名该文件,并保存到配置文件中。因为时间的唯一性,这样可以防止原来的数据库被覆盖的。

另外由于数据库的自动重命名,所以需要把数据库路径以变量的形式保存在配置文件include.asp中。

因为mdb格式的数据库文件比较大,所有采取这种方式。如果是XML做数据库,直接用还原配置文件的方法就可以了。

PS:我不是职业的程序员,对程序的驾驭能力很差,一切与计算机相关的纯属自学,如果有什么不妥的地方还请多多指教。

« 只是偶遇,并非邂逅Firefox壁纸打包下载 »
    Gravatar头像
  • quote 2.怀化房地产网
  • 2010-4-24 14:56:02 回复
  • 感谢博主的分享,说的很有道理,学习了。。。www.hhfdcw.net
    Gravatar头像
  • quote 3.流浪汉
  • 2010-5-17 1:25:11 回复
  • 佩服搞代码的人,真的很牛,也为我们解决了很多难题!
    Gravatar头像
  • quote 4.北大青鸟
  • 2010-6-1 16:12:16 回复
  • 做代码的人真的很辛苦的,每天要加快脑袋的运转速度。很年轻就有的像老头子了。支持下

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关注我

最新评论及回复

赞助商链接

Powered By Z-Blog 1.8 Walle Build 91204
Copyright © 2007-2011 Wilf.cn. Some Rights Reserved