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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 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一区二区三区免费野_久草精品视频
亚洲大片免费看| www.亚洲色图.com| 成人精品国产福利| 精品视频全国免费看| 欧美经典一区二区| 蜜臀av性久久久久蜜臀av麻豆 | 综合在线观看色| 免费观看一级特黄欧美大片| 一本色道久久综合精品竹菊| 久久久久久97三级| 免费在线看成人av| 欧美日韩国产一二三| 亚洲乱码中文字幕| 91亚洲国产成人精品一区二三| 欧美一区二视频| 亚洲国产一区视频| 色屁屁一区二区| 亚洲欧美日韩国产一区二区三区| 国内精品久久久久影院薰衣草| 欧亚一区二区三区| 亚洲最大色网站| 色悠悠久久综合| 亚洲日本护士毛茸茸| 成人午夜免费视频| 欧美激情在线免费观看| 国产91精品一区二区麻豆亚洲| 欧美精品一区二区在线观看| 免费看日韩a级影片| 在线91免费看| 日韩av中文字幕一区二区三区| 欧美在线看片a免费观看| 国产精品国产三级国产aⅴ无密码| 国产综合成人久久大片91| 日韩午夜激情av| 蜜乳av一区二区三区| 欧美日韩免费电影| 亚洲精品视频免费看| 91香蕉视频黄| 亚洲综合在线五月| 欧美日韩一区 二区 三区 久久精品| 综合色天天鬼久久鬼色| 色天使色偷偷av一区二区| 亚洲曰韩产成在线| 欧美区视频在线观看| 五月激情六月综合| 精品日韩av一区二区| 国产麻豆午夜三级精品| 日本一区二区三区在线观看| 91年精品国产| 午夜精品福利一区二区三区av| 欧美一级二级在线观看| 国产成人在线看| 亚洲欧美激情一区二区| 欧美日韩午夜在线| 久久激五月天综合精品| 国产精品激情偷乱一区二区∴| 一本色道久久综合精品竹菊| 日本欧美大码aⅴ在线播放| www国产成人| 色综合中文字幕| 天天综合天天综合色| 国产亚洲欧美色| 在线观看区一区二| 国产一区二区三区电影在线观看| 亚洲视频1区2区| 日韩你懂的在线观看| 成人免费黄色在线| 日韩国产一区二| 国产精品久久久久aaaa樱花| 在线播放日韩导航| 国产福利一区二区三区视频 | 成人午夜激情片| 一区二区免费看| 精品少妇一区二区三区日产乱码 | 日韩一区二区不卡| 99久久国产综合色|国产精品| 偷窥少妇高潮呻吟av久久免费| 精品久久久久久久久久久院品网| 粉嫩aⅴ一区二区三区四区五区| 午夜在线成人av| 中文字幕中文字幕中文字幕亚洲无线| 69p69国产精品| 色综合视频在线观看| 激情图区综合网| 亚洲成国产人片在线观看| 欧美激情中文字幕| 欧美va日韩va| 欧美丰满嫩嫩电影| 色综合久久九月婷婷色综合| 狠狠色丁香婷婷综合久久片| 亚洲国产毛片aaaaa无费看| 国产欧美日韩麻豆91| 精品少妇一区二区三区视频免付费| 色婷婷国产精品久久包臀| 国产一区不卡视频| 日日骚欧美日韩| 亚洲v精品v日韩v欧美v专区| 国产精品久久久久一区二区三区共| 日韩视频在线一区二区| 欧美视频三区在线播放| 91美女视频网站| 成人黄色在线网站| 国产99精品国产| 国产成人一级电影| 激情综合亚洲精品| 国产美女久久久久| 国产裸体歌舞团一区二区| 老司机精品视频在线| 日韩不卡一二三区| 日韩精品乱码av一区二区| 午夜欧美2019年伦理| 亚洲大片在线观看| 偷拍一区二区三区| 日韩在线a电影| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲国产中文字幕在线视频综合 | 国产精品欧美经典| 国产精品久久久久婷婷二区次| 国产欧美一区二区三区网站| 久久久久久麻豆| 欧美—级在线免费片| 国产精品国产三级国产| 亚洲伦理在线精品| 亚洲香蕉伊在人在线观| 视频一区欧美日韩| 青青草国产精品97视觉盛宴| 久久精品国产99| 国产99精品国产| 色88888久久久久久影院野外| 91国产免费看| 91精品国产aⅴ一区二区| 日韩欧美的一区二区| 久久蜜桃一区二区| 国产精品九色蝌蚪自拍| 一区二区三区四区不卡视频| 午夜成人免费电影| 国产伦精一区二区三区| jvid福利写真一区二区三区| 在线精品国精品国产尤物884a| 欧美日韩亚洲综合在线 | 亚洲一区二区三区免费视频| 日本午夜一本久久久综合| 国产一区高清在线| 91美女在线观看| 欧美一区二区三区四区视频| 日本一区免费视频| 亚洲国产日日夜夜| 日本不卡一区二区三区| 国产成人亚洲精品青草天美| 在线观看国产日韩| 欧美r级电影在线观看| 综合色天天鬼久久鬼色| 奇米亚洲午夜久久精品| 成人国产精品免费| 7777精品伊人久久久大香线蕉完整版 | 久久先锋影音av| 亚洲欧美精品午睡沙发| 久久福利资源站| 色悠悠久久综合| 久久久国产一区二区三区四区小说| 亚洲欧美日韩人成在线播放| 精品一区二区三区视频在线观看 | 亚洲欧美另类小说视频| 麻豆国产精品777777在线| 91亚洲大成网污www| 久久久久久久综合日本| 亚洲国产精品久久久男人的天堂| 国产一区91精品张津瑜| 欧美精品日韩一区| 亚洲欧美福利一区二区| 国产伦精一区二区三区| 欧美私人免费视频| 中文字幕一区二区在线播放 | 在线视频你懂得一区二区三区| 欧美xxx久久| 亚洲国产欧美日韩另类综合| 不卡的av中国片| 国产日韩视频一区二区三区| 免费看黄色91| 在线综合视频播放| 夜夜爽夜夜爽精品视频| 99久久精品久久久久久清纯| 国产日产精品1区| 极品销魂美女一区二区三区| 91精品国产综合久久香蕉的特点| 亚洲免费观看高清完整版在线观看熊| 狠狠v欧美v日韩v亚洲ⅴ| 欧美一区二区三区的| 亚洲五码中文字幕| 欧美性猛交一区二区三区精品| 亚洲天堂福利av| 成人av电影在线网| 国产精品久久久久久久久图文区| 国产不卡在线一区| 国产亚洲成aⅴ人片在线观看| 精东粉嫩av免费一区二区三区| 日韩欧美电影在线| 久久99精品一区二区三区| 亚洲精品一区在线观看| 激情综合五月婷婷|