MSSQL рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдСрдЯреЛ-рдЕрдкрдбреЗрдЯ

рдореЗрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЕрдкрдиреЗ рдХрд╛рдо рд╕реЗ рдирд╣реАрдВ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдСрдЯреЛ-рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ, рдЬреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧрд╛ред рдХрдИ рддрд░реАрдХреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдкрд╛рдпрд╛ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╕рдмрд╕реЗ рд╕рд╣реА рдирд╣реАрдВ)
рддреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо:
  1. рдЬрдм рдЪрд╛рд▓реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рд░реНрд╡рд░ рдкрд░ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред
  2. рдпрджрд┐ рд╕рд░реНрд╡рд░ рд╡рд░реНрддрдорд╛рди рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╛рде рдЬрд╝рд┐рдк рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред
  3. рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдирд╛рдо рдкрд░ (рдмреИрдХрдЕрдк рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреА рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП) рдирд╛рдо рджреЗрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, program.exe рд╕реЗ program.backup рддрдХред
  4. рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЬрдЧрд╣ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЕрдирдкреИрдХ рдХрд░реЗрдВред
  5. рдЕрджреНрдпрддрди рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рд╣рдЯрд╛рдПрдВред
  6. рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реИред


рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдм рд╕реЗ рдкрд╣рд▓реЗ, рдкрд╣рд▓реЗ MSSQL рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдПрдХ рдЕрджреНрдпрддрди рддрд╛рд▓рд┐рдХрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдмрдирд╛рдПрдБ:
рдирд╛рдо - рдкреНрд░рдХрд╛рд░ varchar;
рд╕рдВрд╕реНрдХрд░рдг- рдкреНрд░рдХрд╛рд░ varchar;
рдлрд╝рд╛рдЗрд▓реЗрдВ - рдкреНрд░рдХрд╛рд░ varbinary (рдЕрдзрд┐рдХрддрдо) (рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдмреВрдБрдж рдлрд╝реАрд▓реНрдб)ред
рдпрд╣ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ рдЬрд╣рд╛рдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд╛рдо рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реЛрдЧрд╛ред
рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреЛрдб рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
function TForm1.GetMyVersion: string; type TVerInfo=packed record Nevazhno: array[0..47] of byte; //   48  Minor,Major,Build,Release: word; //    end; var s:TResourceStream; v:TVerInfo; begin result:=''; try s:=TResourceStream.Create(HInstance,'#1',RT_VERSION); //   if s.Size>0 then begin s.Read(v,SizeOf(v)); //     result:=IntToStr(v.Major)+IntToStr(v.Minor)+ //   ... IntToStr(v.Release)+IntToStr(v.Build); end; s.Free; except; end; end; 

рдЕрдм рд╣рдореЗрдВ рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдХреЛ рдЕрдирдкреИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдкрдбреЗрдЯ рдХреЛ рдПрдХ рдЬрд╝рд┐рдк рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реВрдВрдЧрд╛ , рд╕реЗрд╡рдирдЬрд╝ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдбреЗрд▓реНрдлреА рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ ред
рдЕрдм рд╣рдореЗрдВ рдЖрд░реНрдХрд╛рдЗрд╡ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрдбреЗрдЯ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдлреЙрд░реНрдо рдмрдирд╛рдпрд╛:
рдЫрд╡рд┐
OpenDialog рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ рд╕рдВрдкрд╛рджрди рдореЗрдВ рдкрде рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛
 if OpenDialog1.Execute then cxButtonEdit1.Text:=OpenDialog1.FileName; 


рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдорд╛рд╕реНрдХ рдХреЗ рд╕рд╛рде рдорд╛рд╕реНрдХрдбрд┐рдЯ рдореЗрдВ рджрд░реНрдЬ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ - - 9.9.9.0; 1; _
рд╕рд╣реЗрдЬреЗрдВ рдмрдЯрди рдкрд░, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ:
 var blobF: TBlobField; begin if not FileExists(OpenDialog1.FileName) then begin ShowMessage('  !'); exit; end else cxButtonEdit1.Text:=OpenDialog1.FileName; try ADOTable1.TableName:=Updater; //       ADOTable1.Close; ADOTable1.Open; //  name   program ADOTable1.Filtered := False; ADOTable1.Filter := 'name='+#39+'program'+#39; ADOTable1.Filtered := True; ADOTable1.Edit; blobF := ADOTable1.FieldByName('files') as TBlobField; blobF.LoadFromFile(OpenDialog1.FileName); ADOTable1.FieldByName('version').AsString:=cxMaskEdit1.Text; ADOTable1.Post; except Showmessage(' !'); end; 

рдпрд╣ рдереЛрдбрд╝рд╛ рдЧрд▓рдд рддрд░реАрдХрд╛ рд╣реИ, рдПрдХ рдЕрд▓рдЧ рдзрд╛рд░рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рд╕рдВрдЧреНрд░рд╣ рдмрдбрд╝рд╛ рд╣реИред

рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╕реЗрд╡рдирдЬреЗрд▓ рдФрд░ рд╢реЗрд▓рдПрдкреАрдЖрдИ ред
рдЕрдм рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реБрдП рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдкрдбреЗрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рдПрдВ:

 Procedure TForm1.Update; var path,fullpath,Ourversion,LastVersion:string; blobF: TBlobField; begin //     adoquery4.Active:=false; adoquery4.sql.text:='SELECT version FROM [dbo].[Updater] WHERE name='+#39+'program'+#39; adoquery4.Active:=true; //        ,    Ourversion:=GetMyVersion; LastVersion:=adoquery4.FieldByName('version').Value; while pos('.',LastVersion)<>0 do delete(LastVersion,pos('.',LastVersion),1); //             if strtoint(LastVersion)>strtoint(Ourversion) then If messageBox(Handle,'   . ?','?', mb_YesNo or mb_iconquestion)=mrYes then try path:=ExtractFileDir(ParamStr(0)); if FileExists(path+'\Program.backup') then DeleteFile(path+'\Project2.backup'); RenameFile(path+'\Program.exe', path+'\Program.backup'); //   // //ADOTable1    Updater ADOTable1.Close; ADOTable1.Open; ADOTable1.Filtered := False; ADOTable1.Filter := 'name='+#39+'program'+#39; ADOTable1.Filtered := True; ADOTable1.Active:=true; //  blobF := ADOTable1.FieldByName('files') as TBlobField; if blobF.Value = nil then Exit; blobF.SaveToFile(path+'\Update_ARMTitan.zip'); ADOTable1.Active:=false; //   with CreateInArchive(CLSID_CFormatZip) do begin OpenFile(ExtractFilePath(ParamStr(0)) + 'Update_ARMTitan.zip'); ExtractTo(ExtractFilePath(ParamStr(0))); Close; end; //    DeleteFile(path+'\Update_ARMTitan.zip'); //  fullpath:=path+'\Project2.exe'; ShellExecute(0, 'open', PWideChar(fullpath), '', nil, SW_SHOW); //WinExec(PAnsiChar(fullpath), SW_SHOW); Application.Terminate; // or: Close; finally end; end; 

рдпрд╣рд╛рдВ рдПрдХ рдЦрд╛рдореА рднреА рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЕрдирдкреИрдХ рдХрд░рдирд╛ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рди рдХрд┐ рдкреВрд░реЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рдХрд┐рдпрд╛ рдерд╛ред
рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП 2 рдЫреЛрдЯреА рдЪреАрдЬреЗрдВ рд╣реИрдВ:
1. рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ 7z.dll рдлрд╝рд╛рдЗрд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ:
 if FileExists(path+'\7z.dll') then begin ShowMessage('  7z.dll'); exit; end; 
рдпрд╛ рдХреБрдЫ рдФрд░ред
2. рдЕрджреНрдпрддрди рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ 7z.dll рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ, рд╕рдм рдХреБрдЫ рдЕрд▓рдЧ рд╕реЗ рдЕрдирдкреИрдХ рдХрд░реЗрдВ рдФрд░ рдХреЗрд╡рд▓ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдирдкреИрдХ рди рдХрд░реЗрдВред

рд╡рд╣ рд╕рдм рд╣реИред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рд╣реИред

рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рдХреБрдЫ рдЦрд╛рдорд┐рдпрд╛рдВ рд╣реИрдВ, рдФрд░ рдореБрдЭреЗ рдкрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрднреА рднреА рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред

Source: https://habr.com/ru/post/In152285/


All Articles