  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		goto-dream
 
 
  註冊時間: 2004-05-11 文章: 909
 
  第 1 樓
  | 
		
			
				 發表於: 星期六 九月 18, 2004 10:31 am    文章主題: 完全自動更新程序的方法--Copy(轉貼) | 
				     | 
			 
			
				
  | 
			 
			
				完全自動更新程序的方法  yxgzs
 
http://www.meizibbs.3322.org/bbs/dispbbs.asp?boardID=2&ID=25919
 
 
 
本人以前一直採用兩個文件來更新程序,覺得不是很好,看了一些論壇的介紹感覺都沒達到完全自動的要求, 
 
 
最近琢磨了一下方法請狐友指正
 
方法一
 
首先聲明這個方法我沒用過
 
使用wininit.ini文件,這個文件的使用方法你可以在網上去搜,不過好像僅對Win9 5 Win98 WinMe有效
 
這個方法不好的地方是要重新啟動機器,並且不支持長文件名,比如Program Files目錄要寫成Progra~1,最要命
 
 
的是假如你在同級目錄中還有一個Programabcd的目錄那你還得判斷是Progra~1還是Progra~2
 
好處是可以刪除自己
 
有興趣的狐友可以試試
 
 
方法二
 
思路:利用RUN/N命令調用另外的程序後退出當前程序
 
 
1、程序登錄服務部器前加代碼
 
 
DO CASE
 
 CASE FILE("新版本文件.EXE") AND FILE("更新程序.EXE") &&主要用於第一次更新失敗後
 
  RUN/N 更新程序.EXE
 
  QUIT 
 
 CASE FILE("更新程序.EXE")
 
  INKEY(1,"H") 
 
  IF ProcID("更新程序.EXE")=0 &&沒有更新程序.EXE進程
 
   DELETE FILE 更新程序.EXE
 
  ENDIF 
 
ENDCASE 
 
 
2、程序登錄服務部器後加代碼
 
 
IF 有新版本
 
  WAIT "已有新版本,正在下載,請稍候......" WINDOW ;
 
  AT SYSMETRIC(2)/24-6,SYSMETRIC(1)/12-17 NOCLEAR NOWAIT
 
  COPY FILE 更新程序.EXE TO 本地目錄\更新程序.EXE
 
  COPY FILE 新版本文件.EXE TO 本地目錄\新版本文件.EXE
 
  WAIT CLEAR 
 
         CD LEFT(SYS(16),LEN(SYS(16))-9)
 
         RUN/N 更新程序.EXE
 
  RETURN 
 
ENDIF 
 
 
 
3、寫一個更新程序與新版本文件一起放到服務器上(更新程序要包含檢查進程代碼ProcID)
 
 
DEFINE CLASS rsgzup AS form
 
 
 
 Height = 60
 
 Width = 300
 
 ShowWindow = 2
 
 DoCreate = .T.
 
 AutoCenter = .T.
 
 Caption = "Form1"
 
 TitleBar = 0
 
 Name = "Form1"
 
 
 
 ADD OBJECT label1 AS label WITH ;
 
  FontSize = 11, ;
 
  Caption = "正在更新程序,請稍候......", ;
 
  Height = 16, ;
 
  Left = 12, ;
 
  Top = 21, ;
 
  Width = 240, ;
 
  Name = "Label1"
 
 
 
 PROCEDURE Load
 
  SET ECHO OFF
 
  SET TALK OFF
 
  SET ECHO OFF
 
  SET SAFETY OFF
 
 ENDPROC
 
 
 
 PROCEDURE Activate
 
  IF !FILE("新版本文件.EXE")
 
    THISFORM.Release
 
    RETURN 
 
  ENDIF
 
  FOR I=1 TO 50
 
   INKEY(1,"H") 
 
   IF ProcID("老版本文件.EXE")=0
 
   COPY FILE 新版本文件.EXE TO 老版本文件.EXE
 
   DELETE FILE 新版本文件.EXE
 
   RUN/N 老版本文件.EXE
 
      THISFORM.Release
 
      RETURN 
 
   ENDIF 
 
  ENDFOR
 
  THISFORM.Label1.Caption ="更新程序失敗,按任意鍵退出"
 
   INKEY(0,"H") 
 
  THISFORM.Release
 
 ENDPROC
 
 
 
ENDDEFINE
 
 
 
此方法充分利用了RUN/N命令來自動啟動完成更新
 
在98/2000/XP下通過,你還可以在菜單中加升級檢查
 
 
檢查進程代碼(ProcID) _________________ 福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!
 
 
想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.
 
 
          愛作夢 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		elleryq
 
  
  註冊時間: 2007-06-21 文章: 768
 
  第 2 樓
  | 
		
			
				 發表於: 星期日 九月 19, 2004 8:58 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				| 記得好像之前 Ruey 也有貼過一篇國外網友的作法... | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		goto-dream
 
 
  註冊時間: 2004-05-11 文章: 909
 
  第 3 樓
  | 
		 | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		garfield Site Admin
  
  註冊時間: 2003-01-30 文章: 2160
 
  第 4 樓
  | 
		 | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		goto-dream
 
 
  註冊時間: 2004-05-11 文章: 909
 
  第 5 樓
  | 
		 | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		goto-dream
 
 
  註冊時間: 2004-05-11 文章: 909
 
  第 6 樓
  | 
		 | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |