w_updown.srw 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807
  1. $PBExportHeader$w_updown.srw
  2. forward
  3. global type w_updown from window
  4. end type
  5. type cb_1 from uo_imflatbutton within w_updown
  6. end type
  7. type lb_1 from listbox within w_updown
  8. end type
  9. type dw_1 from datawindow within w_updown
  10. end type
  11. type cb_8 from uo_imflatbutton within w_updown
  12. end type
  13. type st_5 from statictext within w_updown
  14. end type
  15. type st_1 from statictext within w_updown
  16. end type
  17. type gb_2 from groupbox within w_updown
  18. end type
  19. end forward
  20. global type w_updown from window
  21. integer width = 1993
  22. integer height = 900
  23. boolean titlebar = true
  24. string title = "企精灵历史更新恢复"
  25. boolean controlmenu = true
  26. windowtype windowtype = response!
  27. long backcolor = 67108864
  28. string icon = "AppIcon!"
  29. boolean center = true
  30. cb_1 cb_1
  31. lb_1 lb_1
  32. dw_1 dw_1
  33. cb_8 cb_8
  34. st_5 st_5
  35. st_1 st_1
  36. gb_2 gb_2
  37. end type
  38. global w_updown w_updown
  39. type prototypes
  40. //function boolean UnZipTo(string strZipFileName,string strDirectoryPath,boolean IsKeepPaths,string strPassword) Library 'wfZip18_DLL.dll' alias for "UnZipTo;Ansi";
  41. FUNCTION ULong GetModuleFileName(Long hinstModule, Ref String lpszPath, ULong cchPath) LIBRARY "kernel32.dll" ALIAS FOR "GetModuleFileNameA;Ansi";
  42. end prototypes
  43. type variables
  44. nvo_ftp n_ftp
  45. uo_atudexe uo_autoupdateexe
  46. s_descrpfile ss_descrpfile[1 to 100]
  47. String is_servername,is_username,is_password
  48. string app_parth_q
  49. string tmpzipupdatexefilename='upload.tmp'
  50. s_update s_L1_zx,s_L1_wd,s_QJL_zx,s_QJL_wd //L1,企精灵 最新和稳定
  51. Integer ii_port
  52. integer xx=1
  53. end variables
  54. forward prototypes
  55. public function integer read_xml (string arg_filepath, ref string arg_msg)
  56. public function integer ftp_connect ()
  57. public function integer wf_updown (string arg_filename, ref string arg_msg)
  58. public function integer up_software ()
  59. public function integer up_datebase (string arg_filepath, string arg_version, ref string arg_msg, integer arg_client_bak)
  60. public function integer wf_download (string arg_version, ref string arg_msg)
  61. end prototypes
  62. public function integer read_xml (string arg_filepath, ref string arg_msg);Int rslt = 1
  63. IF Not FileExists(arg_filepath) THEN
  64. rslt = 0
  65. arg_msg = '文件' + arg_filepath + '不存在'
  66. GOTO ext
  67. END IF
  68. //功能:读取文本节点 到数组里
  69. //参数 as_xml 需要解析的xml ,as_xmlreturn[] 返回的数组
  70. String st,st1
  71. PBDOM_BUILDER pbdom_builder_new
  72. PBDOM_DOCUMENT pbdom_doc
  73. Int i,j
  74. pbdom_builder_new = Create PBDOM_BUILDER
  75. //解析xml,生成Document
  76. pbdom_doc = pbdom_builder_new.buildfromfile(arg_filepath)
  77. //PBDOM元素
  78. PBDOM_ELEMENT pbdom_elem,pbdom_elem_product
  79. pbdom_elem_product = Create PBDOM_ELEMENT
  80. pbdom_elem = Create PBDOM_ELEMENT
  81. pbdom_elem = pbdom_doc.GetRootElement()
  82. //messagebox("ii",pbdom_elem.getName()) //取得最外层节点名称
  83. //messagebox("i11i",pbdom_elem.hasChildElements())//element的所有子元素个数
  84. //得到跟节点下的所有row子节点
  85. PBDOM_ELEMENT pbdom_elems_product[]
  86. PBDOM_ELEMENT pbdom_elems_L1_Release[]
  87. PBDOM_ELEMENT pbdom_elems_QJL_Release[]
  88. PBDOM_ELEMENT pbdom_elems_L1_updatetime[]
  89. PBDOM_ELEMENT pbdom_elems_QJL_updatetime[]
  90. PBDOM_ELEMENT pbdom_elems_L1_dscrp[]
  91. PBDOM_ELEMENT pbdom_elems_QJL_dscrp[]
  92. PBDOM_ELEMENT pbdom_elems_L1_rar[]
  93. PBDOM_ELEMENT pbdom_elems_QJL_rar[]
  94. pbdom_elem.GetChildElements("Product",pbdom_elems_product[])
  95. FOR i = 1 To UpperBound(pbdom_elems_product)
  96. st = pbdom_elems_product[i].GetAttributeValue("Name")
  97. // MessageBox("",st)
  98. IF st = "L1-ERP" THEN
  99. pbdom_elems_product[i].GetChildElements("Release",pbdom_elems_L1_Release[])
  100. FOR j = 1 To UpperBound(pbdom_elems_L1_Release)
  101. st1 = pbdom_elems_L1_Release[j].GetAttributeValue("stable")
  102. IF st1 = "true" THEN //L1-ERP最新版
  103. s_L1_zx.Name = "L1-ERP最新版"
  104. s_L1_zx.version = pbdom_elems_L1_Release[j].GetAttributeValue("Version")
  105. pbdom_elems_L1_Release[j].GetChildElements("updatetime",pbdom_elems_L1_updatetime[])
  106. s_L1_zx.updatetime = pbdom_elems_L1_updatetime[1].GetText()
  107. pbdom_elems_L1_Release[j].GetChildElements("dscrp",pbdom_elems_L1_dscrp[])
  108. s_L1_zx.dscrp = pbdom_elems_L1_dscrp[1].GetText()
  109. pbdom_elems_L1_Release[j].GetChildElements("rar",pbdom_elems_L1_rar[])
  110. s_L1_zx.rar = pbdom_elems_L1_rar[1].GetText()
  111. END IF
  112. IF st1 = "false" THEN //L1-ERP稳定版
  113. s_L1_wd.Name = "L1-ERP稳定版"
  114. s_L1_wd.version = pbdom_elems_L1_Release[j].GetAttributeValue("Version")
  115. pbdom_elems_L1_Release[j].GetChildElements("updatetime",pbdom_elems_L1_updatetime[])
  116. s_L1_wd.updatetime = pbdom_elems_L1_updatetime[1].GetText()
  117. pbdom_elems_L1_Release[j].GetChildElements("dscrp",pbdom_elems_L1_dscrp[])
  118. s_L1_wd.dscrp = pbdom_elems_L1_dscrp[1].GetText()
  119. pbdom_elems_L1_Release[j].GetChildElements("rar",pbdom_elems_L1_rar[])
  120. s_L1_wd.rar = pbdom_elems_L1_rar[1].GetText()
  121. END IF
  122. NEXT
  123. END IF
  124. IF st = "企精灵" THEN
  125. pbdom_elems_product[i].GetChildElements("Release",pbdom_elems_QJL_Release[])
  126. FOR j = 1 To UpperBound(pbdom_elems_QJL_Release)
  127. st1 = pbdom_elems_QJL_Release[j].GetAttributeValue("stable")
  128. IF st1 = "true" THEN //企精灵最新版
  129. s_QJL_zx.Name = "企精灵最新版"
  130. s_QJL_zx.version = pbdom_elems_QJL_Release[j].GetAttributeValue("Version")
  131. pbdom_elems_QJL_Release[j].GetChildElements("updatetime",pbdom_elems_QJL_updatetime[])
  132. s_QJL_zx.updatetime = pbdom_elems_QJL_updatetime[1].GetText()
  133. pbdom_elems_QJL_Release[j].GetChildElements("dscrp",pbdom_elems_QJL_dscrp[])
  134. s_QJL_zx.dscrp = pbdom_elems_QJL_dscrp[1].GetText()
  135. pbdom_elems_QJL_Release[j].GetChildElements("rar",pbdom_elems_QJL_rar[])
  136. s_QJL_zx.rar = pbdom_elems_QJL_rar[1].GetText()
  137. END IF
  138. IF st1 = "false" THEN //企精灵稳定版
  139. s_QJL_wd.Name = "企精灵稳定版"
  140. s_QJL_wd.version = pbdom_elems_QJL_Release[j].GetAttributeValue("Version")
  141. pbdom_elems_QJL_Release[j].GetChildElements("updatetime",pbdom_elems_QJL_updatetime[])
  142. s_QJL_wd.updatetime = pbdom_elems_QJL_updatetime[1].GetText()
  143. pbdom_elems_QJL_Release[j].GetChildElements("dscrp",pbdom_elems_QJL_dscrp[])
  144. s_QJL_wd.dscrp = pbdom_elems_QJL_dscrp[1].GetText()
  145. pbdom_elems_QJL_Release[j].GetChildElements("rar",pbdom_elems_QJL_rar[])
  146. s_QJL_wd.rar = pbdom_elems_QJL_rar[1].GetText()
  147. END IF
  148. NEXT
  149. END IF
  150. NEXT
  151. //
  152. //MessageBox("1",s_L1_zx.Name )
  153. //MessageBox("2",s_L1_zx.version )
  154. //MessageBox("3",s_L1_zx.updatetime )
  155. //MessageBox("4",s_L1_zx.dscrp )
  156. //MessageBox("5",s_L1_zx.rar )
  157. //
  158. //
  159. //MessageBox("1",s_L1_wd.Name )
  160. //MessageBox("2",s_L1_wd.version )
  161. //MessageBox("3",s_L1_wd.updatetime )
  162. //MessageBox("4",s_L1_wd.dscrp )
  163. //MessageBox("5",s_L1_wd.rar )
  164. //
  165. //
  166. //MessageBox("1",s_QJL_zx.Name )
  167. //MessageBox("2",s_QJL_zx.version )
  168. //MessageBox("3",s_QJL_zx.updatetime )
  169. //MessageBox("4",s_QJL_zx.dscrp )
  170. //MessageBox("5",s_QJL_zx.rar )
  171. //
  172. //
  173. //MessageBox("1",s_QJL_wd.Name )
  174. //MessageBox("2",s_QJL_wd.version )
  175. //MessageBox("3",s_QJL_wd.updatetime )
  176. //MessageBox("4",s_QJL_wd.dscrp )
  177. //MessageBox("5",s_QJL_wd.rar )
  178. ext:
  179. RETURN rslt
  180. end function
  181. public function integer ftp_connect ();int rts
  182. Long ll_connect,i_index
  183. String ls_filename,ls_info,ls_filemask,ls_temp
  184. Long ll_row
  185. is_servername = "dufff6.oicp.net"
  186. //dufff6.oicp.net
  187. is_username = ""
  188. is_password = ""
  189. ii_port = 21
  190. ll_connect = n_ftp.uf_ftpconnect(is_servername,is_username,is_password,ii_port)
  191. IF ll_connect = 0 THEN
  192. RETURN 1
  193. END IF
  194. st_1.Text = "正在连接到Ftp服务器:"+is_servername+",请稍候..."
  195. ls_filename = n_ftp.uf_ftpgetcurrentdir()
  196. FOR i_index = 1 To 100
  197. ss_descrpfile[i_index].Filename = ""
  198. ss_descrpfile[i_index].filesize = 0
  199. ss_descrpfile[i_index].filetime = DateTime("1900-01-01 00:00:00")
  200. NEXT
  201. ls_filename = n_ftp.uf_remotefilelist('')
  202. DO WHILE ls_filename <> "?"
  203. ll_row = ll_row + 1
  204. ls_temp = n_ftp.uf_cutstring(ls_filename,'?',1)
  205. ss_descrpfile[ll_row ].Filename = ls_temp
  206. ss_descrpfile[ll_row ].filesize = Long(n_ftp.uf_cutstring(ls_filename,'?',2))
  207. ls_temp = n_ftp.uf_cutstring(ls_filename,'?',3)
  208. ss_descrpfile[ll_row ].filetime = DateTime(Date(Left(ls_temp,10)),Time(Mid(ls_temp,12)))
  209. ls_filename = n_ftp.uf_remotefilelist('')
  210. Yield()
  211. LOOP
  212. st_1.Text = '已成功连接到远程更新服务器'
  213. return rts
  214. end function
  215. public function integer wf_updown (string arg_filename, ref string arg_msg);int rts=1
  216. Long ll_row,ll_insert,ll_count,ll_select
  217. String ls_filename,ls_dir,ls_localdir,ls_temp
  218. ls_filename =arg_filename//"updatelong.xml" //ss_descrpfile[2].filename
  219. ls_dir = n_ftp.uf_ftpgetcurrentdir()//这个判断“/”
  220. IF Len(ls_dir) = 1 THEN
  221. ls_temp = ls_dir +ls_filename
  222. ELSE
  223. ls_temp = ls_dir + '/' +ls_filename
  224. END IF
  225. ls_filename=app_parth_q +"\updatexetmp\autoupdate\" + ls_filename
  226. IF FileExists(ls_filename) THEN
  227. filedelete(ls_filename)
  228. END IF
  229. IF n_ftp.uf_ftpgetfile(ls_temp,ls_filename) THEN
  230. rts=1
  231. ELSE
  232. arg_msg="下载文件" + arg_filename +"出错"
  233. rts=0
  234. END IF
  235. RETURN rts
  236. end function
  237. public function integer up_software ();String arg_msg,dtt_filename,ls_msg
  238. Long rts = 1,ls_i,rts1 = 1
  239. Int needreg,needrun
  240. String Filename,dscrp,Filepath
  241. string ls_md5
  242. Filepath = n_ftp.uf_getcurrentdir() + "\"
  243. Open(w_sys_wait_jdt) //初始化进度条
  244. w_sys_wait_jdt.Show()
  245. w_sys_wait_jdt.wf_accepttol(lb_1.TotalItems())
  246. w_sys_wait_jdt.wf_inc(0)
  247. w_sys_wait_jdt.st_msg.Text = "正在上传更新程序文件列表..."
  248. FOR ls_i = 1 To lb_1.TotalItems()
  249. Filename = Filepath +lb_1.Text(ls_i)
  250. // ls_md5=string(md5.getMd5(Filename))
  251. rts = uo_autoupdateexe.f_uploadexe(sqlca,Filename,&
  252. "[默认]",0,0,dscrp,arg_msg)
  253. IF rts = 0 THEN
  254. ls_msg = ls_msg + '上传操作失败> '+Filename + '~r~n'
  255. rts1 = 0
  256. ELSE
  257. ls_msg = ls_msg + '上传操作成功! '+ Filename + '~r~n'
  258. rts1 = 1
  259. END IF
  260. NEXT
  261. Close(w_sys_wait_jdt)
  262. //OpenWithParm(w_message_err,ls_msg)
  263. IF rts1 = 0 THEN
  264. MessageBox("失败","更新失败,请稍候再试或联系软件提供商")
  265. st_1.Text = '更新系统失败'
  266. DELETE From sys_autoudexe;
  267. COMMIT;
  268. ELSE
  269. MessageBox("成功","更新成功,请重新登录软件")
  270. st_1.Text = '更新系统成功'
  271. END IF
  272. RETURN rts1
  273. end function
  274. public function integer up_datebase (string arg_filepath, string arg_version, ref string arg_msg, integer arg_client_bak);Int rts = 1
  275. Int row,li_FileNum
  276. Long ll_billid
  277. DateTime server_dt
  278. SELECT count(*) Into :row From sys_update_download Where version = :arg_version;
  279. IF sqlca.SQLCode <> 0 THEN
  280. arg_msg = "查询操作失败,更新版本"
  281. rts = 0
  282. RETURN rts
  283. END IF
  284. IF row >= 1 THEN
  285. RETURN rts
  286. END IF
  287. ll_billid = f_sys_scidentity(0,"sys_update_download","id",arg_msg,True,sqlca)
  288. SELECT Top 1 getdate() Into :server_dt From u_user Using sqlca;
  289. IF sqlca.SQLCode <> 0 THEN
  290. rts = 0
  291. arg_msg = "查询操作失败,日期 "
  292. GOTO ext
  293. END IF
  294. INSERT INTO sys_update_download
  295. ( id,
  296. version,
  297. down_status,
  298. opdate,
  299. opemp,
  300. client_bak
  301. )
  302. VALUES ( :ll_billid,
  303. :arg_version,
  304. 2,
  305. :server_dt,
  306. :publ_operator,
  307. :arg_client_bak )
  308. Using sqlca;
  309. IF sqlca.SQLCode <> 0 THEN
  310. rts = 0
  311. arg_msg = '插入新数据传送记录失败>'+sqlca.SQLErrText
  312. ROLLBACK Using sqlca;
  313. GOTO ext
  314. END IF
  315. COMMIT Using sqlca;
  316. //读入数据
  317. long flen,loops,ls_i,bytes_read,new_pos
  318. blob b_dtdata_p,tot_b
  319. flen = FileLength(arg_filepath)
  320. li_FileNum = FileOpen(arg_filepath, StreamMode!, Read!, LockRead!)
  321. if li_FileNum=-1 then
  322. rts=0
  323. arg_msg='打开文件'+arg_filepath+'操作失败!'
  324. fileclose(li_FileNum)
  325. goto ext
  326. end if
  327. IF flen > 32765 THEN
  328. IF Mod(flen, 32765) = 0 THEN
  329. loops = flen/32765
  330. ELSE
  331. loops = (flen/32765) + 1
  332. END IF
  333. ELSE
  334. loops = 1
  335. END IF
  336. new_pos = 1
  337. FOR ls_i = 1 to loops
  338. bytes_read = FileRead(li_FileNum, b_dtdata_p)
  339. if bytes_read=0 then
  340. rts=0
  341. arg_msg='读取文件'+arg_filepath+'操作失败!'
  342. fileclose(li_FileNum)
  343. goto ext
  344. end if
  345. tot_b = tot_b + b_dtdata_p
  346. NEXT
  347. fileclose(li_FileNum)
  348. /////////////////////////
  349. //用updateblob
  350. Updateblob sys_update_download set filedata =:tot_b where (version = :arg_version) using sqlca;
  351. if sqlca.sqlcode<>0 then
  352. arg_msg='保存文件包失败>'+sqlca.sqlerrtext
  353. rollback;
  354. delete sys_update_download
  355. where version = :arg_version using sqlca;
  356. if sqlca.sqlcode<>0 then
  357. rollback using sqlca;
  358. else
  359. commit using sqlca;
  360. end if
  361. rts=0
  362. goto ext
  363. else
  364. commit using sqlca;
  365. end if
  366. ////////////////
  367. ext:
  368. RETURN rts
  369. end function
  370. public function integer wf_download (string arg_version, ref string arg_msg);Int rts = 1
  371. Long fend,fend_t
  372. String cur_path,tmpfilepathname,Filepath1
  373. Blob b_dtdata, b_dtdata_p
  374. Int li_FileNum,ls_i,ls_jh
  375. arg_msg = ''
  376. SetNull(b_dtdata)
  377. tmpfilepathname = app_parth_q+'\updatexetmp\autoupdate\'+'upload.tmp'
  378. Filepath1 = app_parth_q +"\updatexetmp\autoupdate"
  379. IF FileExists(tmpfilepathname) THEN FileDelete(tmpfilepathname)
  380. //提取数据包
  381. SelectBlob filedata
  382. Into :b_dtdata
  383. From sys_update_download
  384. Where sys_update_download.version = :arg_version
  385. Using sqlca ;
  386. IF sqlca.SQLCode <> 0 THEN
  387. rts = 0
  388. arg_msg = '提取数据包操作失败>'+sqlca.SQLErrText
  389. GOTO ext
  390. END IF
  391. IF Len(b_dtdata) < 1 Or IsNull(b_dtdata) THEN
  392. rts = 1
  393. arg_msg = '空数据包!'
  394. GOTO ext
  395. END IF
  396. // //写临时文件
  397. fend = Len(b_dtdata)
  398. IF fend <= 32765 THEN
  399. fend_t = 1
  400. ELSE
  401. fend_t = fend/32765
  402. IF Mod(fend,32765) <> 0 THEN
  403. fend_t = fend_t+1
  404. END IF
  405. END IF
  406. li_FileNum = FileOpen( tmpfilepathname,StreamMode!, Write!, LockWrite!)
  407. IF li_FileNum <= 0 THEN
  408. arg_msg = "打开文件"+tmpfilepathname+"失败"
  409. rts = 0
  410. FileClose(li_FileNum)
  411. GOTO ext
  412. END IF
  413. FOR ls_i = 1 To fend_t
  414. b_dtdata_p = BlobMid(b_dtdata,1+(ls_i - 1 )*32765,32765)
  415. ls_jh = FileWrite(li_FileNum, b_dtdata_p)
  416. IF ls_jh <= 0 THEN
  417. arg_msg = "写文件"+tmpfilepathname+"失败"
  418. rts = 0
  419. FileClose(li_FileNum)
  420. GOTO ext
  421. END IF
  422. NEXT
  423. FileClose(li_FileNum)
  424. Yield()
  425. // rslt=uo_autoupdateexe.uf_unzipfile(tmpfilepathname,cur_path+updatexepath,arg_msg)
  426. //IF UnZipTo(tmpfilepathname,Filepath1,True,"") THEN
  427. IF uo_autoupdateexe.uf_unzipfile(tmpfilepathname,Filepath1 + "\temp",arg_msg) = 1 THEN
  428. st_1.Text = '解压更新包成功'
  429. ELSE
  430. st_1.Text = '解压更新包失败'
  431. arg_msg = '解压更新包失败' + arg_msg
  432. rts = 0
  433. MessageBox("Error",arg_msg)
  434. GOTO ext
  435. END IF
  436. DELETE From sys_autoudexe;
  437. COMMIT;
  438. lb_1.DirList(Filepath1 + "\temp\*.*",0)
  439. IF up_software() <> 1 THEN
  440. rts=0
  441. END IF
  442. lb_1.DirList(app_parth_q + "\*.*",0)
  443. IF FileExists(tmpfilepathname) THEN FileDelete(tmpfilepathname)
  444. RETURN rts
  445. ext:
  446. IF FileExists(tmpfilepathname) THEN FileDelete(tmpfilepathname)
  447. RETURN rts
  448. end function
  449. on w_updown.create
  450. this.cb_1=create cb_1
  451. this.lb_1=create lb_1
  452. this.dw_1=create dw_1
  453. this.cb_8=create cb_8
  454. this.st_5=create st_5
  455. this.st_1=create st_1
  456. this.gb_2=create gb_2
  457. this.Control[]={this.cb_1,&
  458. this.lb_1,&
  459. this.dw_1,&
  460. this.cb_8,&
  461. this.st_5,&
  462. this.st_1,&
  463. this.gb_2}
  464. end on
  465. on w_updown.destroy
  466. destroy(this.cb_1)
  467. destroy(this.lb_1)
  468. destroy(this.dw_1)
  469. destroy(this.cb_8)
  470. destroy(this.st_5)
  471. destroy(this.st_1)
  472. destroy(this.gb_2)
  473. end on
  474. event open;string arg_msg
  475. dw_1.SetTransObject (sqlca)
  476. dw_1.retrieve()
  477. n_ftp = Create nvo_ftp
  478. uo_autoupdateexe=create uo_atudexe
  479. uo_autoupdateexe.f_trycreate_sys_autoudexe(sqlca,arg_msg)
  480. app_parth_q=n_ftp.uf_getcurrentdir()
  481. CreateDirectory ( app_parth_q + "\updatexetmp" )
  482. CreateDirectory ( app_parth_q + "\updatexetmp\autoupdate" )
  483. CreateDirectory ( app_parth_q + "\updatexetmp\autoupdate\temp" )
  484. //ftp_connect()//连接服务器
  485. /////////////////////////
  486. ////删除wfsoft.com文件夹里的文件
  487. //string ls_directorypath
  488. //string ls_tmpfilepath
  489. //ls_directorypath = app_parth_q+'\updatexetmp\autoupdate\'+'wfsoft.com'
  490. //
  491. ////ddplb_1是listbox的实例
  492. //lb_1.dirlist(ls_directorypath + '/*.*',1)
  493. //if lb_1.totalitems() > 0 then
  494. // long i
  495. // for i = 1 to lb_1.totalitems()
  496. // filedelete(ls_directorypath + '/'+lb_1.text(i))
  497. // next
  498. //end if
  499. //lb_1.DirList(app_parth_q + "*.*",0)
  500. ///////////////////////
  501. end event
  502. type cb_1 from uo_imflatbutton within w_updown
  503. integer x = 1426
  504. integer y = 604
  505. integer width = 425
  506. integer taborder = 60
  507. boolean bringtotop = true
  508. string text = "退出"
  509. end type
  510. event clicked;call super::clicked;close(parent)
  511. end event
  512. type lb_1 from listbox within w_updown
  513. boolean visible = false
  514. integer x = 2779
  515. integer y = 476
  516. integer width = 480
  517. integer height = 300
  518. integer taborder = 30
  519. integer textsize = -9
  520. integer weight = 400
  521. fontcharset fontcharset = gb2312charset!
  522. fontpitch fontpitch = variable!
  523. string facename = "宋体"
  524. long textcolor = 33554432
  525. borderstyle borderstyle = stylelowered!
  526. end type
  527. type dw_1 from datawindow within w_updown
  528. integer x = 37
  529. integer y = 84
  530. integer width = 1915
  531. integer height = 468
  532. integer taborder = 30
  533. string title = "none"
  534. string dataobject = "dw_version"
  535. boolean hscrollbar = true
  536. boolean vscrollbar = true
  537. boolean livescroll = true
  538. borderstyle borderstyle = stylelowered!
  539. end type
  540. event rowfocuschanged;IF currentrow <=0 THEN RETURN
  541. this.selectrow(0,false)
  542. this.selectrow(currentrow,true)
  543. end event
  544. event clicked;IF row <=0 THEN RETURN
  545. this.setrow(row)
  546. end event
  547. type cb_8 from uo_imflatbutton within w_updown
  548. integer x = 101
  549. integer y = 592
  550. integer width = 425
  551. integer height = 112
  552. integer taborder = 50
  553. boolean bringtotop = true
  554. string text = "恢复"
  555. toolbaralignment pic_align = alignatright!
  556. end type
  557. event clicked;call super::clicked;Long LS_ROW
  558. String version,arg_msg
  559. Yield()
  560. IF Not f_power_ind(5) THEN
  561. MessageBox('提示','你没有使用权限!',information!,OK!)
  562. RETURN
  563. END IF
  564. LS_ROW = dw_1.GetRow()
  565. IF LS_ROW <= 0 THEN RETURN
  566. SELECT update_version Into :version From sys_DB_version ;
  567. IF version = dw_1.Object.version[LS_ROW] THEN
  568. MessageBox('提示','你选择更新的版本和当前系统版本一致',information!,OK!)
  569. RETURN
  570. END IF
  571. version = dw_1.Object.version[LS_ROW]
  572. UPDATE sys_DB_version Set updating_flag = 1 ;
  573. //在数据库声明我正在更新
  574. COMMIT;
  575. st_1.Text = '正从数据库中下载备份更新包,请稍候'
  576. IF wf_download(version,arg_msg) = 1 THEN //恢复更新成功
  577. //更改系统版本
  578. UPDATE sys_DB_version Set update_version = :version,updating_flag = 0;
  579. COMMIT;
  580. END IF
  581. ///////////////////// //
  582. //删除wfsoft.com文件夹里的文件
  583. String ls_directorypath
  584. String ls_tmpfilepath
  585. ls_directorypath = app_parth_q+'\updatexetmp\autoupdate\'+'temp'
  586. //ddplb_1是listbox的实例
  587. lb_1.DirList(ls_directorypath + '/*.*',1)
  588. IF lb_1.TotalItems() > 0 THEN
  589. Long i
  590. FOR i = 1 To lb_1.TotalItems()
  591. FileDelete(ls_directorypath + '/'+lb_1.Text(i))
  592. NEXT
  593. END IF
  594. lb_1.DirList(app_parth_q + "*.*",0)
  595. /////////////////// //
  596. end event
  597. type st_5 from statictext within w_updown
  598. integer y = 752
  599. integer width = 530
  600. integer height = 72
  601. integer textsize = -9
  602. integer weight = 400
  603. fontcharset fontcharset = gb2312charset!
  604. fontpitch fontpitch = variable!
  605. string facename = "宋体"
  606. long textcolor = 134217857
  607. long backcolor = 67108864
  608. string text = "提示信息:"
  609. alignment alignment = center!
  610. boolean focusrectangle = false
  611. end type
  612. type st_1 from statictext within w_updown
  613. integer x = 526
  614. integer y = 752
  615. integer width = 2734
  616. integer height = 76
  617. integer textsize = -9
  618. integer weight = 400
  619. fontcharset fontcharset = gb2312charset!
  620. fontpitch fontpitch = variable!
  621. string facename = "宋体"
  622. long textcolor = 33554432
  623. long backcolor = 67108864
  624. boolean focusrectangle = false
  625. end type
  626. type gb_2 from groupbox within w_updown
  627. integer x = 23
  628. integer y = 20
  629. integer width = 1957
  630. integer height = 700
  631. integer taborder = 30
  632. integer textsize = -9
  633. integer weight = 400
  634. fontcharset fontcharset = gb2312charset!
  635. fontpitch fontpitch = variable!
  636. string facename = "宋体"
  637. long textcolor = 33554432
  638. long backcolor = 67108864
  639. string text = "历史版本"
  640. end type