Автообновление программ

Материал из wiki.standart-n.ru
Перейти к: навигация, поиск

Механизм автообновления программ спомощью батника

Кодировка версий

для автообновления версии программ должны указываться в числовом формате и содержать 6 знаков.
примеры по кассиру:

2.1.18.7   --> 2 1 18 07 --> 211807
2.1.20.13  --> 2 1 20 13 --> 212013
2.2.1.15   --> 2 2 01 15 --> 220115

примеры по менеджеру:

2.272.24 --> 2 272 24 --> 227224
2.272.33 --> 2 272 33 --> 227233


Установка

Скачиваем архив с нужными файлами

\\SUPA\zclientxp\_releases\autoUpdate\

или Медиа:Autoupdate_1.0.zip

Распаковываем файлы

Распаковываем файлы в папке с программой, на которую хотим настроить автообновление, например:

c:\Standart-N\Kassir\

Настраиваем файл update.ini

В катологе программы, после распаковки архива

  • name - название exe файла
  • path - путь на нашем сервере до файла с актуальной версией

По умолчанию следующий путь: \\supa\standartn\html\update\zkassa\pharmacom\almaty\ В каталоге \\supa\standartn\html\update\ выбираем каталог с нужной программой и в ней заводим папку с наименование сети или подразделения, для которых мы планируем массовое обновление. В файле update.ini указываем следующее name-это программа по которой настраивается обновление, path - оставшаяся часть общего пути после названия программы\\supa\standartn\html\update\zkassa\pharmacom\almaty\ пример:

name=zkassa
path=pharmacom/almaty

путь придумываем понятный и только маленькими латинскими буквами!

Меняем ярлык

  • На рабочем столе путь в ярлыке нужной программы меняем таким образом, чтобы он запускал файл update.bat, например:
"C:\Standart-N\Kassir\update.bat"
  • Иконку берем из папки ico, которая была в архиве, например:
C:\Standart-N\Kassir\ico\zkassa.ico

Настраиваем файл с актуальной версией

в папке

\\supa\standartn\html\update\

заходим в папку с названием exe, затем создаем путь который прописали в параметре path так, чтобы получился путь:

\\supa\standartn\html\update\zkassa\pharmacom\almaty\

кладем там файл update.ini, в котором должен быть номер актуальной версии в числовом формате, например версию кассира 2.2.1.15 предлагаю записывать так:

220115

Выкладываем актуальный файл

по пути

\\supa\zclientxp\_releases\!update\

создаем файл с названием программы и выкладываем актуальную версию, чтобы название было: %имя%_%версия%.exe, например:

\\supa\zclientxp\_releases\!update\zkassa\zkassa_220115.exe

Проверяем

  • Запускаем ярлык.
  • Если что-то не получилось, читаем файл update.log в папке с программой.


Механизм автообновления программ по синхронизации

ТМС в менеджере:


uses
  Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, Messages, SysUtils,
  ToolWin, ImgList, dxExEdtr, dxCntner, dxTL, dxDBCtrl, dxDBGrid, StdCtrls,
  unMain,DB, IBQuery, IBDatabase, unDM, DBTables, cfdxUtils, Menus, System,
  Buttons, ExtCtrls, StdCtrls, cfSelectEdit, Math, DateUtils,
  gb_table, Grids, ClipBrd, DBGrids, unFrameCustomDict,
  cfWindows, Mask, shellapi;

var qWork: TIBQuery;

procedure ShowData;
var t_manager:string;
    t_bat:string;
    File_manager: TextFile;
    File_bat: TextFile;
begin

  if not FileExists('update_73.bat') Then
  begin

  showmessage('Сейчас произойдет обновление программы!');

  AssignFile(File_manager,'manager_73.exe');
  AssignFile(File_bat,'update_73.bat');

  qWork:=dm.TempQuery(nil);

  if qWork.Transaction.Active then qWork.Transaction.Rollback;
  qWork.Transaction.StartTransaction;

  qWork.Active:=false;
  qWork.SQL.Text:='select * from reports where id=10';
  qWork.Active:=true;
  t_manager:=qWork.FieldByName('DATA').AsString;

  t_bat:='
    @echo off

    if exist manager_73.exe (
      TASKKILL /f /im ManagerXP2.exe
      rename ManagerXP2.exe ManagerXP2_BACKUP_73.exe
      rename manager_73.exe ManagerXP2.exe
      start ManagerXP2.exe
    )
    exit
  ';

  qWork.Transaction.Commit;
  qWork.Transaction.Free;

  qWork.Free;

  Rewrite(File_manager);
  Rewrite(File_bat);

  Writeln(File_manager,t_manager);
  Writeln(File_bat,t_bat);

  CloseFile(File_manager);
  CloseFile(File_bat);

  ShellExecute(nil, 'open', 'update_73.bat', '', nil, 1);

  end;

end;

begin
ShowData;
end;