⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 u_update.~pas

📁 自动更新程序 自动更新程序
💻 ~PAS
字号:
unit U_Update;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ComCtrls, ShellAPI, ADODB, IniFiles, U_TDownFile;

type
  TF_Update = class(TForm)
    ProBar: TProgressBar;
    bbtnUpdate: TBitBtn;
    bbtnRunSoft: TBitBtn;
    procedure bbtnUpdateClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure bbtnRunSoftClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    AppPath,NetPath,DeleteFileStr,UpdateFileStr:String;  //系统路径

    Procedure CreateStrList;
    Procedure ImpUpdateInfo;
    Procedure SeperateStrToStrList(Str, Ch: string; Mystring: TStrings);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  F_Update: TF_Update;

implementation

  Uses U_PulicPack;

{$R *.dfm}

procedure TF_Update.bbtnUpdateClick(Sender: TObject);
Var
  i:integer;
  aStr:String;
begin
  ProBar.StepBy(1);
  For i:= 0 to DeleteList.Count-1 do      //删除是删除本地文件
  begin
    aStr := AppPath + DeleteList.Strings[i];  //判断本地文件是否存在
    if FileExists(aStr) then
      DeleteFile(aStr);
  end;
  
  For i:= 0 to UpdateList.Count-1 do   //更新是更新本地文件
  begin
    aStr := Url + UpdateList.Strings[i];
    ProBar.StepBy(1);
    FDownFile.DownFile(aStr,AppPath+UpdateList.Strings[i]);
  end;
  if ProBar.Position = ProBar.Max then
    MessageBox(0,PChar('恭喜你! 升级完成! 共更新 '+ IntToStr(UpdateList.Count) +' 个文件! :)'),Prompt,mrNone);
end;

procedure TF_Update.FormCreate(Sender: TObject);
begin
  AppPath := ExtractFilePath(ParamStr(0));
  CreateStrList;
  FDownFile := TDownFile.Create(Self);
  //InitConfigInfo;
  //CreateAndInitComponents;
  ImpUpdateInfo;
  ProBar.Max := UpdateList.Count + 1 ;
end;

procedure TF_Update.bbtnRunSoftClick(Sender: TObject);
Var
  aStr:String;
begin
  aStr:=AppPath+RunFile;
  if FileExists(aStr) then
  begin
    ShellExecute(0, 'open', Pchar(aStr), nil, nil, SW_SHOWNORMAL);
    Close;
  end;    
end;

procedure TF_Update.ImpUpdateInfo;
Var
  i:integer;
  aStr,aSql:String;
  MyIni:TIniFile;
begin
  if UpdateList<>nil then
  begin
    For i:=UpdateList.Count-1 DownTo 0 do
      UpdateList.Delete(i);
  end;
  if DeleteList<>nil then
  begin
    For i:=DeleteList.Count-1 DownTo 0 do
      DeleteList.Delete(i);
  end;

  MyIni := TIniFile.Create(AppPath+UpdateFile);
  Try
    //Endo.exe,Help.chm
    //MyIni.WriteString('Set','DeleteFileList','Endo.exe,Help.chm');
    DeleteFileStr := ReadConfig(UpdateFile,'Set','DeleteFileList');
    UpdateFileStr := ReadConfig(UpdateFile,'Set','UpdateFileList');
    SeperateStrToStrList(DeleteFileStr,',',DeleteList);
    SeperateStrToStrList(UpdateFileStr,',',UpdateList);
  Finally
    FreeAndNil(MyIni);
  end;
end;

procedure TF_Update.CreateStrList;
begin
  UpdateList := TStringList.Create;
  DeleteList := TStringList.Create;
end;

procedure TF_Update.SeperateStrToStrList(Str, Ch: string;
  Mystring: TStrings);
{字符串Str以Ch分隔成几段小字符串,该函数是将这些小字符串提取出来并保存在MyString中}
var 
  sit, n : integer;
  S : string;
begin
  if Mystring=nil then Exit;
  //Str:=StringReplace(Str,' ','',[]);
  if (Str='') Or (Ch='') then Exit;
  MyString.Clear;
  S := Str;
  n := Length(Ch);
  while True do
  begin
    if Pos(Ch, S) = 0 then
    begin
    MyString.Add(S);
    Break;
    end;
    sit := Pos(Ch, S);
    MyString.Add(Copy(S, 1, sit - 1));
    S := Copy(S, sit + n, Length(S));
  end;
end;

procedure TF_Update.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  FreeAllPoint;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -