upgrader.dpr

来自「特性: 1、阻塞模式更新 2、具备比较完备的进度控制 3、与autoupg」· DPR 代码 · 共 44 行

DPR
44
字号
program upgrader;

uses
  Windows,
  Classes,
  Common,
  SysUtils;

var
  ParentPID: Integer;
  ParentProcessName: string;
  uProcess: DWORD;
  CurrentDir: string;
begin
  CurrentDir := IncludeTrailingPathDelimiter(ExtractFilePath(GetModuleName(HInstance)));
  try
    if ParamCount <> 2 then begin
      RollBack(CurrentDir + FINISHED_FILENAME);
      Exit;
    end;

    ParentProcessName := ParamStr(1);
    ParentPID := StrToIntDef(ParamStr(2), 0);

    if ParentPID <= 0 then begin
      RollBack(CurrentDir + FINISHED_FILENAME);
      Exit;
    end;

    uProcess := OpenProcess(PROCESS_ALL_ACCESS, false, ParentPID);
    try
      if uProcess <> 0 then TerminateProcess(uProcess, 0);
    finally
      CloseHandle(uProcess)
    end;
    Sleep(500);
    UpgraderWork(CurrentDir + FINISHED_FILENAME);
  finally
    WinExec(PChar(CurrentDir + ParentProcessName), SW_SHOWNORMAL);
    Suicide;
  end;
end.

⌨️ 快捷键说明

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