以下是我們的例子,設我們已經有乙個應用程式this.exe,要對它公升級,用來公升級的程式為upgrade.exe.
1.this的工程檔案框架
program this;
uses
sysutils,
windows,
forms,
我們將它寫入**中,因為這在delphi的工程檔案中是沒有自動生成的.「…」部分是你建立的窗體部分
var
fn : string;
tsi : tstartupinfo;
tpi : tprocessinformation;
begin
「公升級程式」使用fileage來檢查原來應用程式的建立時間,如果檢測到的是舊版本,則提示公升級:
if fileage(『someserversomedirthis.exe『) 〉 fileage(paramstr(0)) then
begin
fn:= extractfilepath(paramstr(0))+『upgradethis.exe『;
fillchar(tsi, sizeof(tsi), 0);
tsi.cb := sizeof(tsi);
if createprocess (pchar(fn), nil, nil, nil, false,
detached_process, nil, nil, tsi, tpi)
then exit
但是,如果「公升級程式」由於某些原因沒有執行,我們此時應該告訴使用者,他能通過其他方法得到乙個更新的程式版本,這時我們依然退出主程式以便使用者公升級.如果必要的話,也可以繼續裝入並執行舊版本.
else
begin
messagebeep(0);
exit;
end;
end;
end.
如果自動公升級程式是乙個控制台程式,那麼一定要保證正確的控制台程式連線選項設定.
program upgradethis;
uses
forms,
sysutils,
windows;
var
fn : string;
tsi : tstartupinfo;
tpi : tprocessinformation;
begin
用copyfile來拷貝新版本的檔案,同fileage一樣,它不考慮標準命名格式的路徑和檔名.
if copyfile(『someserversomedirthis.exe『,
pchar(extractfilepath(paramstr(0))+『this.exe『),false) then
begin
一旦這些新版本的檔案被拷貝到系統中,它就應該能夠執行了,而且也沒有理由不執行.所以,這裡基本上不需要加入出錯檢測的**.
那麼,例子中使它執行並簡單處理錯誤的**如下:
fn := extractfilepath(paramstr(0))+『this.exe『;
fillchar(tsi, sizeof(tsi), 0);
tsi.cb := sizeof(tsi);
createprocess(pchar(fn), nil, nil, nil, false, detached—process, nil, nil, tsi, tpi);
end
else
end.
上面只是從檔案的更新角度說明了編制「公升級程式」的方法,但在很多情況中公升級乙個程式甚至要修改登錄檔或各種ini的檔案,這些在delphi中是比較容易實現的,有興趣的朋友可以參照一些資料來加入實現這些功能的**.
用Delphi編制趣味動畫滑鼠
我們經常可以看到許多生動有趣的動畫滑鼠,其實利用delphi強大的功能,我們完全可以隨心所欲地製作有個人特色的滑鼠。我製作了乙個名為 face的動畫滑鼠,在常態時,它是一張圓圓的臉,臉上有一雙咕嚕嚕亂轉的大睛眼。當按下左 右 鍵時,臉的左 右 眼就眨一下。如果持續按住,則左 右 眼眨個不停。下面我以...
簡單delphi自校驗
很簡單的一種 類似getfilesize 原理是對比程式最後修改時間,因為如果你不動他的話,那個時間是不會變的 這裡用的是findfirstfile 查詢檔案,這個api會填充乙個win32 find data資料,裡面遍有lastwritetime,這個是filetime,轉成systemtinm...
delphi 程式自刪除函式 DeleteMe
delphi 程式自刪除函式 deleteme 德州行業網 procedure deleteme varbatchfile textfile batchfilename string processinfo tprocessinformation startupinfo tstartupinfo b...