$PBExportHeader$w_ljsmc_services.srw forward global type w_ljsmc_services from window end type type cb_exit from commandbutton within w_ljsmc_services end type type cb_update from commandbutton within w_ljsmc_services end type type cb_reflash from commandbutton within w_ljsmc_services end type type cbx_1 from checkbox within w_ljsmc_services end type type dw_2 from u_dw_rbtnfilter within w_ljsmc_services end type type dw_1 from u_dw_rbtnfilter within w_ljsmc_services end type type ln_bar from line within w_ljsmc_services end type type ln_bar2 from line within w_ljsmc_services end type type r_bar from rectangle within w_ljsmc_services end type type ln_1 from line within w_ljsmc_services end type type ln_2 from line within w_ljsmc_services end type type ln_3 from line within w_ljsmc_services end type type ln_4 from line within w_ljsmc_services end type end forward global type w_ljsmc_services from window integer width = 2039 integer height = 960 boolean titlebar = true string title = "智能升级" boolean controlmenu = true boolean minbox = true boolean maxbox = true boolean resizable = true windowtype windowtype = popup! long backcolor = 67108864 string icon = "AppIcon!" boolean center = true event ue_retrieve_child ( ) cb_exit cb_exit cb_update cb_update cb_reflash cb_reflash cbx_1 cbx_1 dw_2 dw_2 dw_1 dw_1 ln_bar ln_bar ln_bar2 ln_bar2 r_bar r_bar ln_1 ln_1 ln_2 ln_2 ln_3 ln_3 ln_4 ln_4 end type global w_ljsmc_services w_ljsmc_services type prototypes function integer of_connect(string as_host,string as_user,string as_password) library "gyFTPdll.dll" alias for "of_connect;Ansi" function integer of_ChangeDir(string as_DirName) library "gyFTPdll.dll" alias for "of_ChangeDir;Ansi" function integer of_downLoadfile(string as_fileName,string as_localFile,boolean ab_resum) library "gyFTPdll.dll" alias for "of_downLoadfile;Ansi" function integer of_Upfile(string as_fileName,string as_localFile,boolean ab_resum) library "gyFTPdll.dll" alias for "of_Upfile;Ansi" function integer of_init() library "gyFTPdll.dll" function integer of_close() library "gyFTPdll.dll" end prototypes type variables uo_ljsmc ljsmc String is_servername,is_username,is_password boolean if_connect=false string app_parth_q s_update s_L1_zx,s_L1_wd,s_QJL_zx,s_QJL_wd //L1,企精灵 最新和稳定 string udateversion="稳定版" end variables forward prototypes public subroutine wf_insert_clientupdate () public subroutine wf_read_updatelog () public function integer read_xml (string arg_filepath, ref string arg_msg) end prototypes event ue_retrieve_child();Long ll_row String arg_msg ll_row = dw_1.GetRow() IF ll_row > 0 THEN IF dw_1.Object.ServerName[ll_row] <> '' and dw_1.Object.ServerName[ll_row] <>'客户端更新' THEN IF ljsmc.uf_getinstancestatus(dw_1.Object.ServerName[ll_row], Ref dw_2, Ref arg_msg) <> 1 THEN MessageBox('ERROR', arg_msg) END IF ELSE dw_2.Reset() END IF ELSE dw_2.Reset() END IF end event public subroutine wf_insert_clientupdate ();//long ll_row //ll_row=dw_1.insertrow(0) //dw_1.object.servername[ll_row]="客户端更新" end subroutine public subroutine wf_read_updatelog ();String arg_msg String Filename,Filepath,Filepath1,version long ll_row ll_row=dw_1.insertrow(0) dw_1.object.servername[ll_row]="客户端更新" //ftp 服务 ,用户名,密码 is_servername = f_psw_bczh(ProfileString (sys_inifilename, "update", "servername", ""),1,sys_power_key) is_username = f_psw_bczh(ProfileString (sys_inifilename, "update", "username", ""),1,sys_power_key) is_password = f_psw_bczh(ProfileString (sys_inifilename, "update", "password", ""),1,sys_power_key) IF is_servername = "" THEN is_servername = "ftp.longjoe.com" SetProfileString (sys_inifilename, "update", "servername", f_psw_bczh("ftp.longjoe.com",0,sys_power_key)) END IF IF is_username = "" THEN is_username = "longjoewhzg010" SetProfileString (sys_inifilename, "update", "username", f_psw_bczh("longjoewhzg010",0,sys_power_key)) END IF IF is_password = "" THEN is_password = "long010659" SetProfileString (sys_inifilename, "update", "password", f_psw_bczh("long010659",0,sys_power_key)) END IF if_connect = True app_parth_q=sys_cur_path CreateDirectory ( app_parth_q + "\updatexetmp" ) CreateDirectory ( app_parth_q + "\updatexetmp\autoupdate" ) CreateDirectory ( app_parth_q + "\updatexetmp\autoupdate\temp" ) Yield() of_init() IF of_connect(is_servername,is_username,is_password) < 0 THEN MessageBox("Error","连接远程服务器失败") HALT END IF Int li_Rc li_Rc = of_downLoadfile("qjl_updatelong.xml","updatexetmp/autoupdate/qjl_updatelong.xml",True) of_close() read_xml(app_parth_q+"updatexetmp\autoupdate\qjl_updatelong.xml",arg_msg) Filename = "" IF udateversion = "最新版" THEN Filename = s_QJL_zx.rar version = s_QJL_zx.version ELSE Filename = s_QJL_wd.rar version = s_QJL_wd.version END IF IF version = "" THEN MessageBox("Error","获取升级文件失败,请重新打开智能升级") HALT END IF Integer ls_stable String ls_update_version,ss_stable SELECT stable,update_version Into :ls_stable,:ls_update_version From sys_DB_version Using sqlca; IF ls_stable = 0 THEN ss_stable = "稳定版" ELSE ss_stable = "最新版" END IF dw_1.object.version[ll_row]=ls_update_version dw_1.object.newversion[ll_row]=version end subroutine public function integer read_xml (string arg_filepath, ref string arg_msg);Int rslt = 1 IF Not FileExists(arg_filepath) THEN rslt = 0 arg_msg = '文件' + arg_filepath + '不存在' GOTO ext END IF //功能:读取文本节点 到数组里 //参数 as_xml 需要解析的xml ,as_xmlreturn[] 返回的数组 String st,st1 PBDOM_BUILDER pbdom_builder_new PBDOM_DOCUMENT pbdom_doc Int i,j pbdom_builder_new = Create PBDOM_BUILDER //解析xml,生成Document pbdom_doc = pbdom_builder_new.buildfromfile(arg_filepath) //PBDOM元素 PBDOM_ELEMENT pbdom_elem,pbdom_elem_product pbdom_elem_product = Create PBDOM_ELEMENT pbdom_elem = Create PBDOM_ELEMENT pbdom_elem = pbdom_doc.GetRootElement() //messagebox("ii",pbdom_elem.getName()) //取得最外层节点名称 //messagebox("i11i",pbdom_elem.hasChildElements())//element的所有子元素个数 //得到跟节点下的所有row子节点 PBDOM_ELEMENT pbdom_elems_product[] PBDOM_ELEMENT pbdom_elems_L1_Release[] PBDOM_ELEMENT pbdom_elems_QJL_Release[] PBDOM_ELEMENT pbdom_elems_L1_updatetime[] PBDOM_ELEMENT pbdom_elems_QJL_updatetime[] PBDOM_ELEMENT pbdom_elems_L1_dscrp[] PBDOM_ELEMENT pbdom_elems_QJL_dscrp[] PBDOM_ELEMENT pbdom_elems_L1_rar[] PBDOM_ELEMENT pbdom_elems_QJL_rar[] pbdom_elem.GetChildElements("Product",pbdom_elems_product[]) FOR i = 1 To UpperBound(pbdom_elems_product) st = pbdom_elems_product[i].GetAttributeValue("Name") // MessageBox("",st) IF st = "L1-ERP" THEN pbdom_elems_product[i].GetChildElements("Release",pbdom_elems_L1_Release[]) FOR j = 1 To UpperBound(pbdom_elems_L1_Release) st1 = pbdom_elems_L1_Release[j].GetAttributeValue("stable") IF st1 = "true" THEN //L1-ERP最新版 s_L1_zx.Name = "L1-ERP最新版" s_L1_zx.version = pbdom_elems_L1_Release[j].GetAttributeValue("Version") pbdom_elems_L1_Release[j].GetChildElements("updatetime",pbdom_elems_L1_updatetime[]) s_L1_zx.updatetime = pbdom_elems_L1_updatetime[1].GetText() pbdom_elems_L1_Release[j].GetChildElements("dscrp",pbdom_elems_L1_dscrp[]) s_L1_zx.dscrp = pbdom_elems_L1_dscrp[1].GetText() pbdom_elems_L1_Release[j].GetChildElements("rar",pbdom_elems_L1_rar[]) s_L1_zx.rar = pbdom_elems_L1_rar[1].GetText() END IF IF st1 = "false" THEN //L1-ERP稳定版 s_L1_wd.Name = "L1-ERP稳定版" s_L1_wd.version = pbdom_elems_L1_Release[j].GetAttributeValue("Version") pbdom_elems_L1_Release[j].GetChildElements("updatetime",pbdom_elems_L1_updatetime[]) s_L1_wd.updatetime = pbdom_elems_L1_updatetime[1].GetText() pbdom_elems_L1_Release[j].GetChildElements("dscrp",pbdom_elems_L1_dscrp[]) s_L1_wd.dscrp = pbdom_elems_L1_dscrp[1].GetText() pbdom_elems_L1_Release[j].GetChildElements("rar",pbdom_elems_L1_rar[]) s_L1_wd.rar = pbdom_elems_L1_rar[1].GetText() END IF NEXT END IF IF st = "企精灵" THEN pbdom_elems_product[i].GetChildElements("Release",pbdom_elems_QJL_Release[]) FOR j = 1 To UpperBound(pbdom_elems_QJL_Release) st1 = pbdom_elems_QJL_Release[j].GetAttributeValue("stable") IF st1 = "true" THEN //企精灵最新版 s_QJL_zx.Name = "企精灵最新版" s_QJL_zx.version = pbdom_elems_QJL_Release[j].GetAttributeValue("Version") pbdom_elems_QJL_Release[j].GetChildElements("updatetime",pbdom_elems_QJL_updatetime[]) s_QJL_zx.updatetime = pbdom_elems_QJL_updatetime[1].GetText() pbdom_elems_QJL_Release[j].GetChildElements("dscrp",pbdom_elems_QJL_dscrp[]) s_QJL_zx.dscrp = pbdom_elems_QJL_dscrp[1].GetText() pbdom_elems_QJL_Release[j].GetChildElements("rar",pbdom_elems_QJL_rar[]) s_QJL_zx.rar = pbdom_elems_QJL_rar[1].GetText() END IF IF st1 = "false" THEN //企精灵稳定版 s_QJL_wd.Name = "企精灵稳定版" s_QJL_wd.version = pbdom_elems_QJL_Release[j].GetAttributeValue("Version") pbdom_elems_QJL_Release[j].GetChildElements("updatetime",pbdom_elems_QJL_updatetime[]) s_QJL_wd.updatetime = pbdom_elems_QJL_updatetime[1].GetText() pbdom_elems_QJL_Release[j].GetChildElements("dscrp",pbdom_elems_QJL_dscrp[]) s_QJL_wd.dscrp = pbdom_elems_QJL_dscrp[1].GetText() pbdom_elems_QJL_Release[j].GetChildElements("rar",pbdom_elems_QJL_rar[]) s_QJL_wd.rar = pbdom_elems_QJL_rar[1].GetText() END IF NEXT END IF NEXT // //MessageBox("1",s_L1_zx.Name ) //MessageBox("2",s_L1_zx.version ) //MessageBox("3",s_L1_zx.updatetime ) //MessageBox("4",s_L1_zx.dscrp ) //MessageBox("5",s_L1_zx.rar ) // // //MessageBox("1",s_L1_wd.Name ) //MessageBox("2",s_L1_wd.version ) //MessageBox("3",s_L1_wd.updatetime ) //MessageBox("4",s_L1_wd.dscrp ) //MessageBox("5",s_L1_wd.rar ) // // //MessageBox("1",s_QJL_zx.Name ) //MessageBox("2",s_QJL_zx.version ) //MessageBox("3",s_QJL_zx.updatetime ) //MessageBox("4",s_QJL_zx.dscrp ) //MessageBox("5",s_QJL_zx.rar ) // // //MessageBox("1",s_QJL_wd.Name ) //MessageBox("2",s_QJL_wd.version ) //MessageBox("3",s_QJL_wd.updatetime ) //MessageBox("4",s_QJL_wd.dscrp ) //MessageBox("5",s_QJL_wd.rar ) ext: RETURN rslt end function on w_ljsmc_services.create this.cb_exit=create cb_exit this.cb_update=create cb_update this.cb_reflash=create cb_reflash this.cbx_1=create cbx_1 this.dw_2=create dw_2 this.dw_1=create dw_1 this.ln_bar=create ln_bar this.ln_bar2=create ln_bar2 this.r_bar=create r_bar this.ln_1=create ln_1 this.ln_2=create ln_2 this.ln_3=create ln_3 this.ln_4=create ln_4 this.Control[]={this.cb_exit,& this.cb_update,& this.cb_reflash,& this.cbx_1,& this.dw_2,& this.dw_1,& this.ln_bar,& this.ln_bar2,& this.r_bar,& this.ln_1,& this.ln_2,& this.ln_3,& this.ln_4} end on on w_ljsmc_services.destroy destroy(this.cb_exit) destroy(this.cb_update) destroy(this.cb_reflash) destroy(this.cbx_1) destroy(this.dw_2) destroy(this.dw_1) destroy(this.ln_bar) destroy(this.ln_bar2) destroy(this.r_bar) destroy(this.ln_1) destroy(this.ln_2) destroy(this.ln_3) destroy(this.ln_4) end on event resize;ln_bar.EndX = This.Width ln_bar2.EndX = This.Width ln_1.EndX = This.Width ln_2.EndX = This.Width ln_3.EndX = This.Width ln_4.EndX = This.Width r_bar.Width = This.Width //dw_1.Width = This.WorkSpaceWidth() - dw_1.X - dw_2.Width //dw_1.Height = This.WorkSpaceHeight() - dw_1.Y // //dw_2.X = dw_1.X + dw_1.Width //dw_2.Height = dw_1.Height end event event open;ljsmc = create uo_ljsmc cb_reflash.TriggerEvent(clicked!) end event event close;destroy ljsmc end event type cb_exit from commandbutton within w_ljsmc_services integer x = 1207 integer y = 728 integer width = 402 integer height = 104 integer taborder = 50 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "退出" end type event clicked;Close(PARENT) end event type cb_update from commandbutton within w_ljsmc_services integer x = 325 integer y = 728 integer width = 402 integer height = 104 integer taborder = 40 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "更新" end type event clicked;Long ll_row,i ll_row = dw_1.GetRow() //IF ll_row <= 0 THEN // MessageBox('提示', '请选择目标对象') // RETURN //END IF String arg_msg //dw_1.object.servername[i]="客户端更新" IF ljsmc.uf_update('LJUpdateSvr', Ref arg_msg) <> 1 THEN MessageBox('ERROR', arg_msg) END IF FOR i = 1 To dw_1.RowCount() IF dw_1.Object.ch[i] = 1 THEN IF ljsmc.uf_update(dw_1.Object.ServerName[i], Ref arg_msg) <> 1 And dw_1.Object.ServerName[i] <> "客户端更新" THEN MessageBox('ERROR', arg_msg) ELSEIF dw_1.Object.ServerName[i] = "客户端更新" THEN f_run_download_auto() END IF END IF NEXT end event type cb_reflash from commandbutton within w_ljsmc_services integer x = 82 integer y = 944 integer width = 402 integer height = 104 integer taborder = 30 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "刷新" end type event clicked; String arg_msg Long i IF ljsmc.uf_GetServiceStatus(Ref dw_1, Ref arg_msg) <> 1 THEN MessageBox('ERROR', arg_msg) END IF Parent.TriggerEvent('ue_retrieve_child') wf_read_updatelog() FOR i = 1 To dw_1.RowCount() IF dw_1.Object.version[i] <> dw_1.Object.newversion[i] THEN dw_1.Object.if_update[i] = "是" ELSE dw_1.Object.if_update[i] = "否" dw_1.Object.ch[i] = 0 END IF NEXT FOR i = 1 To dw_1.RowCount() IF dw_1.Object.ServerName[i] = 'LJUpdateSvr' THEN dw_1.DeleteRow(i) END IF NEXT end event type cbx_1 from checkbox within w_ljsmc_services boolean visible = false integer x = 2011 integer y = 744 integer width = 219 integer height = 60 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 67108864 string text = "详细" end type event clicked;IF This.Checked = False THEN dw_2.Visible = True parent.width=dw_1.width // dw_1.Modify( 'displayname.Visible = 0') ELSE dw_2.Visible = true parent.width= dw_1.width + dw_2.width // dw_1.Modify( 'displayname.Visible = 1') END IF end event type dw_2 from u_dw_rbtnfilter within w_ljsmc_services boolean visible = false integer x = 2789 integer y = 184 integer width = 832 integer height = 1328 integer taborder = 30 string dataobject = "dw_ljsmc_instances" end type event clicked;call super::clicked;IF row > 0 THEN This.SetRow(row) END IF end event event rowfocuschanged;call super::rowfocuschanged;This.SelectRow(0, False) IF currentrow > 0 THEN This.SelectRow(currentrow, True) END IF end event type dw_1 from u_dw_rbtnfilter within w_ljsmc_services integer width = 1984 integer height = 696 integer taborder = 20 string dataobject = "dw_ljsmc_services" boolean hscrollbar = true boolean vscrollbar = true end type event clicked;call super::clicked; IF row <= 0 THEN RETURN THIS.SelectRow(0,FALSE) THIS.SelectRow(row,TRUE) IF row > 0 THEN This.SetRow(row) END IF end event event rowfocuschanged;call super::rowfocuschanged;This.SelectRow(0, False) IF currentrow > 0 THEN This.SelectRow(currentrow, True) END IF Parent.TriggerEvent('ue_retrieve_child') end event type ln_bar from line within w_ljsmc_services long linecolor = 268435456 integer linethickness = 4 integer beginy = -48 integer endx = 2007 integer endy = -48 end type type ln_bar2 from line within w_ljsmc_services long linecolor = 16777215 integer linethickness = 4 integer beginy = -44 integer endx = 2039 integer endy = -44 end type type r_bar from rectangle within w_ljsmc_services long linecolor = 16777215 integer linethickness = 4 long fillcolor = 1073741824 integer x = 2139 integer width = 146 integer height = 68 end type event constructor;this.fillcolor = 14215660 this.linecolor = 14215660 this.x = -1 this.y = -1 this.height = ln_bar.beginy - 5 end event type ln_1 from line within w_ljsmc_services boolean visible = false long linecolor = 268435456 integer linethickness = 4 integer beginy = 292 integer endx = 2016 integer endy = 292 end type type ln_2 from line within w_ljsmc_services boolean visible = false long linecolor = 16777215 integer linethickness = 4 integer beginy = 296 integer endx = 2048 integer endy = 296 end type type ln_3 from line within w_ljsmc_services boolean visible = false long linecolor = 268435456 integer linethickness = 4 integer beginy = 412 integer endx = 2016 integer endy = 412 end type type ln_4 from line within w_ljsmc_services boolean visible = false long linecolor = 16777215 integer linethickness = 4 integer beginy = 416 integer endx = 2048 integer endy = 416 end type