亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xinstall.dpr

?? 文件和并及自釋放工具支持釋放前中斷所設置的進程及釋放后啟動相應設置的程序
?? DPR
字號:
program Xinstall;

uses
  Windows,
  SysUtils,
  Classes,
  inifiles,
  //TLHelp32,
  //Registry,
  //shellAPI,
  Tkillprocess in 'Tkillprocess.pas';

{$R *.res}
type
  Tinistruct = class (Tobject)
  private
  public
    inifile:Tinifile;
    beforeKill:array[1..255] of string;
    beforeKillcount:integer;
    beforeRun:array[1..255] of string;
    beforeRunCount:integer;
    afterRun:array[1..255] of string;
    afterRuncount:integer;
    filesName:array[1..255] of string;
    filessize:array[1..255] of longword;
    selfsize:longword;
    filescount:integer;
    filesbase:string;
    constructor Create(inifileName:string);
    destructor Destroy;override;
    procedure writeInifile;
    procedure readInifile;
    function filterPath(str:string):string;
end;
constructor Tinistruct.Create(iniFileName:string);
begin
    inherited Create;
    inifile:=Tinifile.Create(iniFileName);
end;

destructor Tinistruct.Destroy;
begin
    inherited Destroy;
    inifile.Destroy;
end;

procedure Tinistruct.writeInifile;
var i:integer;
begin
    inifile.WriteInteger('files','count',filescount);
    inifile.WriteInteger('files','selfsize',selfsize);
    i:=1;
    while i<=filescount do
    begin
        //inifile.WriteString('files','file'+inttostr(i),filesName[i]);
        inifile.WriteInteger('files','filesize'+inttostr(i),filesSize[i]);
        inc(i);
    end;
    {i:=1;
    inifile.WriteInteger('before run','count',beforeRunCount);
    while i<=beforeRunCount do
    begin
        inifile.WriteString('before run','run'+inttostr(i),beforeRun[i]);
        inc(i);
    end;
    i:=1;
    inifile.WriteInteger('after run','count',afterRunCount);
    while i<=afterRunCount do
    begin
        inifile.WriteString('after run','run'+inttostr(i),afterRun[i]);
        inc(i);
    end;
    i:=1;
    inifile.WriteInteger('before kill','count',beforeKillCount);
    while i<=beforeKillCount do
    begin
        inifile.WriteString('before kill','process'+inttostr(i),beforeKill[i]);
        inc(i);
    end;}
    inifile.UpdateFile;
end;

procedure Tinistruct.readInifile;
var i:integer;
begin
    i:=1;
    filesbase:=filterPath(inifile.ReadString('files','filesbase','./'));
    filescount:=inifile.ReadInteger('files','count',0);
    selfsize:=inifile.ReadInteger('files','selfsize',0);
    while i<=filescount do
    begin
        filesName[i]:=inifile.ReadString('files','file'+inttostr(i),'');
        filesSize[i]:=inifile.ReadInteger('files','filesize'+inttostr(i),0);
        inc(i);
    end;
    i:=1;
    beforeRunCount:=inifile.ReadInteger('before run','count',0);
    while i<=beforeRunCount do
    begin
        beforeRun[i]:=filterPath(inifile.ReadString('before run','run'+inttostr(i),''));
        inc(i);
    end;
    i:=1;
    afterRunCount:=inifile.ReadInteger('after run','count',0);
    while i<=afterRunCount do
    begin
        afterRun[i]:=filterPath(inifile.ReadString('after run','run'+inttostr(i),''));
        inc(i);
    end;
    i:=1;
    beforekillcount:=inifile.ReadInteger('before kill','count',0);
    while i<=beforekillcount do
    begin
        beforekill[i]:=inifile.ReadString('before kill','process'+inttostr(i),'');
        inc(i);
    end;
    inifile.UpdateFile;
end;
function Tinistruct.filterPath(str:string):string;
var
    windir:array [0..128] of char;
    systemdisk:array [0..2] of char;
begin
    getwindowsDirectory(windir,128);
    strplcopy(systemdisk, windir, 2);
    str:=StringReplace(str, '%SYSTEMDISK%', systemdisk, [rfReplaceAll]);
    result:=StringReplace(str, '\\', '\', [rfReplaceAll]);
end;

type
  Txinstall = class (Tobject)

  private
    paramct:integer;
    { Private declarations }
  public
    inistruct:Tinistruct;
    Totalstream:Tmemorystream;
    selffile:Tmemorystream;
    selfsize:longword;
    selfname:string;
    filesname:array[1..256] of string;
    files:array[1..256] of Tmemorystream;
    filessize:array[1..256] of Longword;
    constructor CreateWithIniFile(iniFileName:string);
    constructor CreateWithLoadFiles(paramstrs:Tstrings);
    constructor CreateBlockFiles(iniFileName:string);
    destructor Destroy;override;
    procedure releaseIniFile(iniFileName:string);
    procedure BlockFileStream;
    procedure SaveFiles;
    function Totalsize:Longword;
    procedure setStream(appsize:longword);
    procedure AppendStream(streamRES:Tmemorystream;streamDES:Tmemorystream);
    procedure AppendFilesStream;
    function BlockStream(StreamRES:Tmemorystream;StreamDES:Tmemorystream;Count:Longword):TmemoryStream;
    procedure setIniStruct;
    procedure getInistruct;
    procedure setFilesBase(str:string);
    procedure AddBeforeKill(str:string);
    procedure AddbeforeRun(str:string);
    procedure AddAfterRun(str:string);
    procedure AddFile(filename:string);
    procedure beforekill;
    procedure beforeRun;
    procedure afterRun;
    { Public declarations }
end;
constructor Txinstall.CreateWithIniFile(InifileName:string);
var
    i,h:integer;
begin
    inherited Create;
    inistruct:=Tinistruct.create(InifileName);
    inistruct.readInifile;
    selfname:=paramstr(0);
    selffile:=TmemoryStream.Create;
    selffile.LoadFromFile(selfname);
    selfsize:=selffile.Size;
    paramct:=inistruct.filescount;
    i:=1;
    h:=1;
    while i<=paramct do
    begin
        if fileexists(inistruct.filesName[i]) then
        begin
            filesname[h]:='./'+inistruct.filesName[i];
            files[h]:=Tmemorystream.Create;
            files[h].LoadFromFile(filesname[h]);
            filessize[h]:=files[h].Size;
            inc(h);
        end;
        inc(i);
    end;
    paramct:=h-1;
    setinistruct;
    inistruct.writeInifile;
end;
constructor Txinstall.CreateWithLoadFiles(paramstrs:Tstrings);
var
    h:integer;
begin
    inherited Create;
    h:=1;
    selffile:=TmemoryStream.Create;
    inistruct:=Tinistruct.create('./xinstall.ini');
    selfname:=paramstrs.Strings[0];
    selffile.LoadFromFile(selfname);
    selfsize:=selffile.Size;
    paramct:=paramstrs.Count-1;
    while h<=paramct do
    begin
       files[h]:=TmemoryStream.Create;
       filesname[h]:=paramstrs.Strings[h];
       files[h].LoadFromFile(filesname[h]);
       filesSize[h] := files[h].Size;
       inc(h);
    end;
    setinistruct;
    inistruct.writeInifile;
end;

constructor Txinstall.CreateBlockFiles(iniFileName:string);
begin    inherited Create;
    releaseIniFile(iniFileName);
    inistruct:=Tinistruct.Create(iniFileName);
    inistruct.readInifile;
    getinistruct;
end;

procedure Txinstall.releaseIniFile(iniFileName:string);
var
    psplit:pchar;
    sizeOfStr:string;
    sizeOfInt:integer;
    inifilestream:tmemorystream;
begin
    getmem(psplit,4);
    totalstream:=Tmemorystream.Create;
    totalstream.LoadFromFile(paramstr(0));
    totalstream.Position:=totalstream.Size-4;
    totalstream.readBuffer(psplit^,4);
    sizeOfstr:=strpas(psplit);
    sizeofint:=strtoint(sizeOfstr)+4;
    freemem(psplit);
    totalstream.Position:=totalstream.Size-sizeOfint;
    inifilestream:=Tmemorystream.Create;
    inifilestream.SetSize(sizeofint-4);
    inifilestream.Position:=0;
    BlockStream(totalstream,inifilestream,sizeofint-4);
    inifilestream.SaveToFile(iniFileName);
    inifilestream.Destroy;
    {release ini}
end;

procedure Txinstall.BlockFileStream;
var i:integer;
begin
    i:=1;
    totalstream.Position:=selfsize;
    while i<paramct do
    begin
        files[i].SetSize(filessize[i]);
        files[i]:=BlockStream(totalstream,files[i],filessize[i]);
        inc(i);
    end;
end;
function Txinstall.BlockStream(StreamRES:Tmemorystream;StreamDES:Tmemorystream;Count:Longword):Tmemorystream;
begin
    StreamDES.Position:=0;
    StreamDES.SetSize(Count);
    if Count <> 0 then StreamDES.writeBuffer(Pointer(Longint(streamRES.Memory) + StreamRES.Position)^, Count);
    totalstream.Position:=totalstream.Position+count;
    result:=StreamDES;
end;


procedure Txinstall.SaveFiles;
var i:integer;
begin
    i:=1;
    while i<paramct do
    begin
        if not DirectoryExists(inistruct.filesbase) then  mkdir(inistruct.filesbase);
        files[i].SaveToFile(inistruct.filesbase+'\'+filesname[i]);
        inc(i);
    end;
end;

procedure Txinstall.AddFile(filename:string);
begin
    inc(paramct);
    files[paramct]:=Tmemorystream.Create;
    filesname[paramct]:=filename;
    files[paramct].LoadFromfile(filesname[paramct]);
    filesSize[paramct]:=files[paramct].Size;
    setinistruct;
    setstream(0);
end;

destructor Txinstall.Destroy;
var i:integer;
begin
    i:=1;
    while i<=paramct do
    begin
        files[i].Destroy;
        inc(i);
    end;
    selffile.Destroy;
    totalstream.Destroy;
    inistruct.Destroy;
    inherited Destroy;
end;

procedure Txinstall.setFilesBase(str:string);
begin
    inistruct.filesbase:=inistruct.filterPath(str);
end;

procedure Txinstall.AddBeforeKill(str:string);
begin
    inc(inistruct.beforeKillcount);
    inistruct.BeforeKill[inistruct.BeforeKillCount]:=str;
end;

procedure Txinstall.AddbeforeRun(str:string);
begin
    inc(inistruct.beforeRunCount);
    inistruct.beforeRun[inistruct.beforeRunCount]:=str;
end;

procedure Txinstall.AddAfterRun(str:string);
begin
    inc(inistruct.beforeRunCount);
    inistruct.afterRun[inistruct.beforeRunCount]:=str;
end;

function Txinstall.Totalsize:longword;
var
    i:longword;
    h:integer;
begin
    i:=0;
    h:=0;
    while h<=paramct do
    begin
        i:=i+filessize[h+1];
        inc(h);
    end;
    result:=i+selfsize;
end;

procedure Txinstall.setStream(appsize:longword);
begin
    totalstream:=Tmemorystream.Create;
    totalstream.SetSize(totalsize+appsize);
    totalstream.Position:=0;
    totalstream.Clear;
end;

procedure Txinstall.AppendStream(streamRES:Tmemorystream;streamDES:Tmemorystream);
var
  Count: Longint;
begin
  streamRES.Position:=StreamRES.size;
  Count := StreamRES.Size+StreamDES.Size;
  StreamRES.setsize(count);
  if Count <> 0 then StreamDES.ReadBuffer(Pointer(Longint(streamRES.Memory) + StreamRES.Position)^, StreamDES.size);
//  showmessage('StreamRES = '+inttostr(StreamRES.Position)+#13+'StreamDES = '+inttostr(streamDES.Position));
end;

procedure Txinstall.setIniStruct;
var i:integer;
begin
    i:=1;
    inistruct.selfsize:=selfsize;
    inistruct.filescount:=paramct;
    while i<=inistruct.filescount do
    begin
        inistruct.filesName[i]:=filesname[i];
        inistruct.filessize[i]:=filessize[i];
        inc(i);
    end;
end;

procedure Txinstall.getInistruct;
var
    i:integer;
begin
    i:=1;
    selffile:=Tmemorystream.Create;
    selfsize:=inistruct.selfsize;
    paramct:=inistruct.filescount;
    while i<=paramct do
    begin
        files[i]:=Tmemorystream.Create;
        filesname[i]:=inistruct.filesName[i];
        filessize[i]:=inistruct.filesSize[i];
        inc(i);
    end;
end;

procedure Txinstall.AppendFilesStream;
var i:integer;
    splitstream:TmemoryStream;
    psplit:pchar;
    SizeOfStr:string;
    SizeOfint:integer;
begin
  setstream(4);
  Appendstream(Totalstream,selffile);
  i:=1;
  while i<paramct do
  begin
    appendstream(Totalstream,files[i]);
    inc(i);
  end;
  splitstream:=TmemoryStream.Create;
  getmem(psplit,4);
  SizeOfInt:=strlen(pchar(inttostr(filessize[i])));
  SizeOfStr:=inttostr(filessize[i]);
  if SizeOfInt<4 then
    while (4-SizeOfint)>0 do
    begin
        SizeofStr:='0'+SizeOfStr;
        inc(SizeOfint);
    end;
  strcopy(psplit,pchar(sizeofstr));
  splitstream.SetSize(4);
  splitstream.WriteBuffer(psplit^,4);
  freemem(psplit);
  //splitstream.SaveToFile('split.txt');
  appendstream(Totalstream,files[i]);
  splitstream.position:=0;
  appendstream(totalstream,splitstream);
  inistruct.writeInifile;
  splitstream.Destroy;
end;

procedure Txinstall.beforekill;
var
    kp:killprocess;
    i:integer;
begin
    kp:=killprocess.create;
    i:=1;
    while i<=inistruct.beforeKillcount do
    begin
        kp.killprocess(inistruct.beforekill[i]);
        inc(i);
    end;
    kp.Destroy;
end;

procedure Txinstall.beforeRun;
var
    i:integer;
begin
    i:=1;
    while i<=inistruct.beforeRunCount do
    begin
        winexec(pchar(inistruct.beforeRun[1]),SW_SHOW);
        inc(i);
    end;
end;

procedure Txinstall.afterRun;
var
    i:integer;
begin
    i:=1;
    while i<=inistruct.afterRunCount do
    begin
        winexec(pchar(inistruct.afterRun[i]),SW_SHOW);
        inc(i);
    end;
end;

var
    xinst:Txinstall;
    //outfile:tmemorystream;
    //i:integer;
    //paramstrs:tstrings;
    //inifile:Tinifile;
begin
  xinst:=Txinstall.Create;
  if paramcount>0 then
  begin
     if paramstr(1)='xinstall.ini' then
     begin
        xinst:=Txinstall.CreateWithIniFile('./xinstall.ini');
        xinst.AppendFilesStream;
        xinst.Totalstream.SaveTofile('./setup.exe');
     end
     else
     begin
        xinst:=Txinstall.CreateBlockFiles(paramstr(1));
        xinst.beforekill;
        xinst.beforeRun;
        xinst.BlockFileStream;
        xinst.SaveFiles;
        xinst.afterRun;
        deletefile(paramstr(1));
     end
  end
  else  //paramcount=0
  begin
     xinst:=Txinstall.CreateBlockFiles('./xinstall.ini');
     xinst.beforekill;
     xinst.beforeRun;
     xinst.BlockFileStream;
     xinst.SaveFiles;
     xinst.afterRun;
     deletefile('./xinstall.ini');
  end;
  xinst.Destroy;
end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久天天综合网| 一区二区欧美国产| 成人国产在线观看| 久久精品国产一区二区三| 欧美日韩免费一区二区三区| 毛片av中文字幕一区二区| 日本一区二区综合亚洲| 欧美丰满高潮xxxx喷水动漫| 成人自拍视频在线观看| 日韩av一区二区三区| 亚洲黄色av一区| 国产精品久久久久久福利一牛影视 | 夜夜揉揉日日人人青青一国产精品| 91精品国产综合久久久久久久久久| 国产mv日韩mv欧美| 久久精品国产免费| 日韩精品欧美成人高清一区二区| 久久精品日韩一区二区三区| 欧美一级艳片视频免费观看| 97se亚洲国产综合自在线观| 丰满少妇久久久久久久 | 天堂精品中文字幕在线| 亚洲欧洲综合另类| 亚洲精品免费播放| 亚洲精品日产精品乱码不卡| 国产精品色噜噜| 国产亚洲一区二区三区在线观看| 久久这里只有精品6| 亚洲精品在线电影| 国产精品久久久久aaaa樱花| 1区2区3区精品视频| 一区二区三区中文在线| 亚洲一二三区在线观看| 五月天一区二区| 韩国女主播一区| 国产成人啪免费观看软件| 国产成人av一区二区| 91女神在线视频| 欧美日韩五月天| 精品国产99国产精品| 中日韩av电影| 亚洲五码中文字幕| 视频一区二区三区在线| 国模大尺度一区二区三区| 国产精品1024| 欧美日韩成人在线| 久久久久久亚洲综合| 亚洲欧美一区二区三区久本道91| 青娱乐精品视频| 99久久国产综合色|国产精品| 正在播放亚洲一区| 亚洲欧洲av在线| 日本欧美肥老太交大片| 99精品视频一区| 欧美va亚洲va在线观看蝴蝶网| 国产精品久久一级| 久久99国产精品免费网站| 91丨porny丨蝌蚪视频| 欧美一区二区福利在线| 亚洲欧洲精品一区二区精品久久久| 蜜臀av国产精品久久久久| 99久久久国产精品免费蜜臀| 久久综合网色—综合色88| 蜜臀久久99精品久久久久久9| 91免费看视频| 国产精品久久久久一区二区三区| 理论电影国产精品| 欧美色图一区二区三区| 亚洲国产精品激情在线观看| 美女www一区二区| 欧美一区二区三区在线电影| 亚洲男人的天堂在线观看| 成人av电影在线播放| 国产欧美一区二区精品仙草咪| 麻豆91精品91久久久的内涵| 欧美一三区三区四区免费在线看 | 欧美mv日韩mv| 久久99日本精品| 精品理论电影在线| 国产成人在线色| 国产精品私人自拍| 91啪九色porn原创视频在线观看| 国产精品美日韩| 欧美亚洲一区三区| 亚洲va中文字幕| 4438x亚洲最大成人网| 久久99在线观看| 国产精品丝袜黑色高跟| 91香蕉视频污| 麻豆精品精品国产自在97香蕉| 91麻豆精品国产91久久久久久| 免费在线观看日韩欧美| 精品电影一区二区| 波多野结衣的一区二区三区| 一区二区免费在线| 中文字幕精品—区二区四季| 9色porny自拍视频一区二区| 丝袜美腿亚洲色图| 2023国产精品自拍| 欧美性感一类影片在线播放| 久久精品久久精品| 亚洲午夜视频在线| 国产精品久久久久久久久免费桃花 | 懂色中文一区二区在线播放| 成人欧美一区二区三区白人 | 国产亚洲欧美激情| 欧美日本乱大交xxxxx| 成人免费观看男女羞羞视频| 亚洲动漫第一页| 亚洲精品视频在线观看免费| 精品福利在线导航| 777久久久精品| 欧美亚洲国产一卡| 91黄色免费观看| 99国内精品久久| 国产成人在线看| 国产激情视频一区二区在线观看| 午夜视频一区在线观看| 亚洲日本va午夜在线电影| 国产欧美日产一区| 国产精品另类一区| 国产精品久久久久aaaa樱花| 国产精品久久久久婷婷二区次| 精品动漫一区二区三区在线观看 | 制服丝袜亚洲色图| 欧美亚洲高清一区| 欧美在线视频全部完| 欧美午夜免费电影| 欧美日韩在线播放三区四区| 欧美日韩国产免费一区二区| 欧美日韩性生活| 欧美一区二区三级| 久久无码av三级| 国产精品入口麻豆九色| 亚洲丝袜精品丝袜在线| 一区二区三区丝袜| 日韩激情一二三区| 精一区二区三区| 成人av在线播放网站| 欧亚洲嫩模精品一区三区| 欧美挠脚心视频网站| 欧美精品一区二区三区蜜桃 | 欧美丰满美乳xxx高潮www| 欧美日韩亚洲国产综合| 久久日一线二线三线suv| 成人欧美一区二区三区小说| 亚洲.国产.中文慕字在线| 国产超碰在线一区| 欧美另类z0zxhd电影| 欧美mv日韩mv国产网站| 玉足女爽爽91| 国产91精品欧美| 日韩亚洲国产中文字幕欧美| 国产精品久久久久毛片软件| 性做久久久久久久免费看| 成人av影视在线观看| 欧美一二三四在线| 香蕉影视欧美成人| eeuss鲁片一区二区三区在线观看| 制服丝袜亚洲精品中文字幕| 亚洲欧美怡红院| 成人一道本在线| 国产丝袜欧美中文另类| 久色婷婷小香蕉久久| 欧美视频在线一区二区三区 | 国产日韩欧美激情| 丝袜美腿亚洲综合| 在线不卡一区二区| 亚洲成年人影院| 欧美日韩国产高清一区| 亚洲国产综合91精品麻豆| av一区二区久久| 国产精品久久久久久久久搜平片| 国产91精品在线观看| 国产人久久人人人人爽| 成人午夜碰碰视频| 中文字幕在线免费不卡| 国产成人免费视频网站高清观看视频| 欧美一级高清大全免费观看| 亚洲成av人片在www色猫咪| 欧美人体做爰大胆视频| 免费久久精品视频| 亚洲精品一区在线观看| 99re热视频这里只精品| 一区二区三区精品视频在线| 欧美浪妇xxxx高跟鞋交| 精品一区二区日韩| 国产精品看片你懂得| 91色综合久久久久婷婷| 日韩高清在线一区| 中文字幕乱码日本亚洲一区二区| 91麻豆.com| 麻豆精品国产91久久久久久| 久久久久久一二三区| 色诱亚洲精品久久久久久| 日韩高清在线观看| 亚洲视频你懂的| 国产日产欧美一区二区视频| 日本高清不卡一区| 国产精品一区二区黑丝|