999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

PB客戶端軟件自動升級的設計與實現

2017-12-02 03:03:39滿洲里出入境檢驗檢疫局姜曉龍
電子世界 2017年22期
關鍵詞:程序

滿洲里出入境檢驗檢疫局 姜曉龍

PB客戶端軟件自動升級的設計與實現

滿洲里出入境檢驗檢疫局 姜曉龍

PB(PowerBuilder)應用程序的客戶端系統更新絕大多數采用本地計算機完全式安裝或拷貝式安裝進行,CS模式的程序設計在系統更新環節上確實浪費了大量的人力、物力和工作時間。本文詳細地介紹一種局域網內客戶端軟件自動升級的實現方法,它將有效地減輕客戶端程序升級工作的重荷,彌補CS結構的系統在更新任務方面的不足和缺陷。

客戶端軟件;自動升級;文件服務器;配置文件;程序版本

1.引言

在較大的CS結構的管理系統中,需求的變化、補丁的加載以及系統的升級等原因導致對客戶端應用程序的修改會帶來大量的客戶端更新工作。維護人員必須到每臺客戶機去更新安裝,這就大大加重了維護人員的工作量。在客戶端計算機數量相對較少的情況下這種情形還可以忍受,倘若局域網內存在數十臺乃至幾百臺等待更新的機器,而網絡節點分布又不集中,其工作強度將是不言而喻的。因此,實現PB客戶端軟件自動升級的必要性是毋庸置疑的,它可以充分彌補CS模式在系統升級換代方面存在的不足和缺陷。本文結合出口果蔬隨附單據無紙化報檢系統客戶端應用程序自動升級的解決方案,介紹一種局域網內可自動升級客戶端軟件的實現方法。

2.技術原理

PB客戶端應用程序實現自動升級的技術原理是在局域網內專門放置一臺文件服務器或直接使用現有的數據服務器,存放最新的應用程序文件和配置文件。啟動客戶端程序自動升級功能時,應用程序首先執行配置文件,提取相應的升級參數,即本地計算機應用程序的版本、服務器名稱或地址以及服務器保存更新文件的共享文件夾;接著根據所提取的服務器名稱或地址和共享目錄,到文件服務器下載最新應用程序的版本信息;然后比較服務器程序版本與本地程序版本,如果服務器程序版本高于本地程序版本,說明文件服務器上已存在更加新版的客戶端應用程序,則提示用戶是否對本地計算機應用程序進行更新操作,最后再運行新升級的主程序。

3.功能實現

⑴創建一個INI類型的配置文件CSUpgrade.ini,其具體內容如下:

[Options]

Version=網絡版V8.2.11.0723

//程序版本號,比較本地程序版本與服務器程序版本是否一致

Server=\10.15.10.1

//文件服務器名稱或IP地址

Folder=CSUpgrade

//存放更新文件的共享文件夾

File=CS2010.exe|CS2010.dll|DBConfig.exe|EDecl.exe

//存放應用程序文件列表并以分隔符“|”間隔

Notes=新增了流程控制、系統日志、大寫中文數字發音拼寫檢查、數據源的自動配置和OLE控件的自動注冊以及圖片按鈕和XP風格按鈕等實用功能。

//告知客戶端用戶需要更新的主要內容說明或注釋文本

⑵在用于更新提示的窗口中自定義一個函數wf_GetFileNameL-ist,用于從文件服務器提供的配置文件的文件列表中取得各個需要進行升級的文件,分別存放在一個數組中,并返回升級文件的個數。

⑶定義窗口用戶事件ue_postopen,用于比較本地程序版本與服務器程序版本是否一致。如果服務器程序版本與本地程序版本互相一致,則直接啟動系統的主程序,同時關閉自動升級窗口;如果服務器程序版本高于本地程序版本,則提取文件服務器提供的配置文件的注釋文本,以便用戶決定是否進行本地計算機應用程序的更新工作,主要程序腳本如下:

Ls_Local_INIFile=’CSUpgrade.ini’

//本地或服務器INI配置文件名稱

Ls_Local_Version=ProfileString(Ls_Local_INIFile,’Options’,’Version’,’’)

//本地應用程序版本

SELECT Server_Path,File_Folder INTO :Ls_Server,:Ls_Server_Folder FROM T_CS_Parameter;

//提取文件服務器名稱或IP地址以及共享文件夾

Ls_Server_Folder=Ls_Server + ‘’ + Ls_Server_Folder + ‘’

//設置文件服務器路徑

Ls_Server_INIFile=Ls_Server_Folder + ‘CSUpgrade.ini’

//設置文件服務器端的INI配置文件

Ls_Server_Version=ProfileString(Ls_Server_INIFile,’Options’,’Version’,’’)

//獲取文件服務器程序版本

Ls_File=ProfileString(Ls_Server_INIFile,’Options’,’File’,’’)

//獲取更新文件列表

Ls_Notes=ProfileString(Ls_Server_INIFile,’Options’,’Notes’,’’)

//獲取更新說明

IF(Ls_Server_Versiongt;Ls_Local_Version)THEN

//比較本地與服務器程序版本號

This.Show()

//顯示自動更新窗口

mle_1.text=’文件服務器存在新的版本應用程序,說明如下:~r~n”’ +Ls_Notes + ‘”~r~n您是否更新本地應用程序?’

//顯示客戶端軟件需要更新的文本說明

ELSE

Run(‘CS2010.exe’) ; Halt Close

//啟動主程序并退出自動更新窗口

END IF

⑷“更新(R)”按鈕主要實現的功能是進行自動升級程序的創建過程,自動更新過程界面效果如右圖所示。編寫如下主要腳本:

Li_FileCount=wf_getfilename(Ls_File)

//獲取文件列表并保存在Is_FileName[]數組中

L s_Text=”程序更新開始:” + String(Today(),’yyyy-mm-dd’) + ‘ ‘ +String(Now()) + ‘ ‘ + ayName(Today())

Lit_CSUpgrade_Start=CPU()

//獲取自動更新的開始時間計數

mle_1.text=Ls_Text

mle_1.text=mle_1.text + ‘~r~n’ + ‘---’ //設置分隔符,記錄自動更新過程并實時顯示

Ls_Text=’~r~n’ + String(0) + ‘、’ + “版本:” + Ls_Local_Version +“→” + Ls_Server_Version

mle_1.text=mle_1.text + Ls_Text + ‘~r~n’ + ‘---’

Li_Rtn=FileCopy(ls_Server_Folder + Ls_Local_INIFile,Ls_Local_INIFile,True)

IF(Li_Rtn=1)THEN ; Ls_Flag=’成功!’ ; ELSE ; Ls_Flag=’失敗!’ ; END IF

Ls_Text=’~r~n’ + String(1) + ‘、’ + “文件:” + Ls_Local_INIFile + ‘更新’ + Ls_Flag + String(Today(),’yyyy-mm-dd’) + ‘ ‘ + String(Now())

//更新本地計算機INI文件并標注拷貝完成時間

mle_1.text=mle_1.text + Ls_Text

FOR i = 1 TO Li_FileCount

//依次更新程序文件

Li_Rtn=FileCopy(ls_Server_Folder + Is_FileName[i],Is_FileName[i],True)

IF(Li_Rtn=1)THEN ; Ls_Flag=’成功!’ ; ELSE ; Ls_Flag=’失敗!’ ; END IF

Ls_Text=’~r~n’ + String(i+1) + ‘、’ + “文件:” + Is_FileName[i] + ‘更新’+ Ls_Flag + String(Today(),’yyyy-mm-dd’) + ‘ ‘ + String(Now())

//更新本地計算機程序文件并標注拷貝完成時間

mle_1.text=mle_1.text + Ls_Text

mle_1.Scroll(i * 2)

//滾動系統當前光標位置

NEXT

UPDATE T_CS_Parameter SET Programme_Edition = :Ls_Server_Version;

//更新客戶端的最新顯示版本

mle_1.text=mle_1.text + ‘~r~n’ + ‘---’

Ls_Text=”程序更新完畢:” + String(Today(),’yyyy-mm-dd’) + ‘ ‘ +String(Now()) + ‘ ‘ + DayName(Today())

SetProfileString(Ls_Local_INIFile,’Options’,’File’,’’)

SetProfileString(Ls_Local_INIFile,’Options’,’Notes’,’’)

Lit_CSUpgrade_End=CPU()

//獲取自動更新的結束時間計數

Ls_Text=Ls_Text + ‘ ‘ + String(Round(Long((Lit_CSUpgrade_End - Lit_CSUpgrade_Start) * 0.001),3))

mle_1.text=mle_1.text + Ls_Text

//統計自動更新用時并顯示自動更新全部日志

⑸當服務器程序更新時,技術人員只需將配置文件CSUpgrade.ini和最新版本的程序存放到文件服務器的配置文件的Folder項指定的目錄,并修改CSUpgrade.ini文件的程序版本號(Version)、需要更新的文件列表(File)和升級注解(Notes)等各項內容即可,但必須保證服務器程序的版本號高于客戶端程序的版本號。

⑹實現圖標欄隱式運行升級任務。圖標欄的應用為客戶端軟件的自動升級增光添色,它可以實現完全隱藏的運行升級程序窗口。系統自動升級窗口運行后,在Windows操作系統的圖標欄中顯示該應用程序的圖標。根據提取到的升級參數比較兩地程序的版本,當服務器程序版本與本地程序版本一致時,直接調用系統的主程序并關閉自動升級提示窗口;而當服務器程序版本高于本地程序版本時,彈出自動更新窗口并顯示升級程序的文本注釋。

4.結束語

PB客戶端軟件自動升級技術已經在各類檢驗檢疫輔助通關系統中成功應用,系統更新時發揮出的作用特別明顯,可以使客戶端的更新工作在本地計算機自動完成,無需維護人員到每臺客戶機去更新安裝,從而最大限度地減少了維護的工作量,提高了技術人員的工作效率。

[1]柯建勛,張濤,邵亮編著.PowerBuilder9.0實例與技巧[M].北京:清華大學出版社,2003.

[2]侯志平,等.編著.PowerBuilder6.0參考手冊[M].北京:曉通數據庫研究與發展中心,2001.

姜曉龍(1977-),男,高級工程師,計算機數據庫應用程序設計與開發。

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
基于VMM的程序行為異常檢測
偵查實驗批準程序初探
我國刑事速裁程序的構建
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 精品国产网| 国产成人综合久久精品尤物| 亚洲国产综合自在线另类| 成人国产精品网站在线看| 免费毛片全部不收费的| 久久亚洲国产视频| 人妻中文久热无码丝袜| 国产成人乱无码视频| 无码又爽又刺激的高潮视频| 无码AV动漫| 91福利免费视频| 亚洲人妖在线| 欧美精品成人一区二区在线观看| 伊人久综合| 欧美日韩北条麻妃一区二区| 亚洲国产清纯| 色婷婷亚洲综合五月| 午夜日本永久乱码免费播放片| a级毛片免费看| 99精品高清在线播放| 久久免费视频6| 国产成本人片免费a∨短片| 亚洲日韩图片专区第1页| 老熟妇喷水一区二区三区| 中国黄色一级视频| 久久五月天国产自| 亚洲成人黄色在线观看| 在线观看精品自拍视频| 久久国产免费观看| 国产男女免费完整版视频| 国产精品免费p区| 午夜福利免费视频| 热99re99首页精品亚洲五月天| 在线播放精品一区二区啪视频| 日本午夜三级| 激情五月婷婷综合网| 77777亚洲午夜久久多人| 亚洲天堂精品在线| 日本一区二区不卡视频| 亚洲浓毛av| 欧美日韩国产在线播放| 午夜在线不卡| 99精品这里只有精品高清视频| 99热这里只有精品免费| 亚洲无限乱码一二三四区| 超清无码一区二区三区| 亚洲av无码人妻| 免费观看国产小粉嫩喷水| 97国产精品视频自在拍| 日韩不卡高清视频| 国产福利在线观看精品| 97青青青国产在线播放| 欧美自慰一级看片免费| 色婷婷久久| 在线观看亚洲精品福利片| 国产午夜精品一区二区三| 亚洲精品制服丝袜二区| 亚洲中文字幕无码mv| a级毛片毛片免费观看久潮| 欧美综合激情| 欧美日韩一区二区三| 亚洲永久精品ww47国产| 国产精鲁鲁网在线视频| 国产18在线播放| 人人爱天天做夜夜爽| 97久久超碰极品视觉盛宴| 国产 日韩 欧美 第二页| 精品视频在线观看你懂的一区| 亚洲综合欧美在线一区在线播放| 欧美亚洲欧美| lhav亚洲精品| 欧美国产日本高清不卡| 欧美午夜一区| 亚洲天堂精品在线观看| 91久久天天躁狠狠躁夜夜| 国产三级毛片| 欧美区一区| 亚洲国产天堂久久九九九| 午夜精品福利影院| 亚洲欧洲免费视频| 亚洲一区波多野结衣二区三区| 国产人成午夜免费看|