Автообновление программ — различия между версиями

Материал из wiki.standart-n.ru
Перейти к: навигация, поиск
(Механизм автообновления программ по синхронизации спомощью ТМС(На примере КЗ, Фармаком))
 
(не показаны 4 промежуточные версии 2 участников)
Строка 2: Строка 2:
  
 
==1. Автообновление спомощью батника==
 
==1. Автообновление спомощью батника==
Особенности:
 
  
Плюсы:
+
'''+ Плюсы:'''
 
* протестирован у клиентов.
 
* протестирован у клиентов.
 
* не зависит от синхронизации, т.е. можно настраивать не только в сетях.
 
* не зависит от синхронизации, т.е. можно настраивать не только в сетях.
  
Минусы:
+
'''- Минусы:'''
 
* нужно настраивать в каждой точке на каждом рабочем месте.
 
* нужно настраивать в каждой точке на каждом рабочем месте.
 
* могут быть проблемы если в точке очень медленный интернет.
 
* могут быть проблемы если в точке очень медленный интернет.
Строка 14: Строка 13:
 
==2. Автообновление по синхронизации спомощью ТМС==
 
==2. Автообновление по синхронизации спомощью ТМС==
  
Плюсы:
+
'''+ Плюсы:'''
 
* протестирован у клиентов.
 
* протестирован у клиентов.
 
* не нужно настраивать в каждой точке.  
 
* не нужно настраивать в каждой точке.  
 +
* не имеет значения текущая версия программы.
 +
* обновление произойдет на всех рабочих местах.
  
Минусы:
+
'''- Минусы:'''
* зависит от синхронизации, можно настраивать только в сетях.  
+
* зависит от синхронизации, можно использовать только в сетях.
  
 
==3. Славин механизм автообновления через учет работ==
 
==3. Славин механизм автообновления через учет работ==
  
Плюсы:
+
'''+ Плюсы:'''
 
* можно отправлять прямо из учета работ.
 
* можно отправлять прямо из учета работ.
 
* можно настраивать не только сетевым клиентам.
 
* можно настраивать не только сетевым клиентам.
  
Минусы:
+
'''- Минусы:'''
 
* нужно свети точки обслуживания в учете работ с тем что записано в параметрах системы в конкретной точке. У клиентов эта информация не заполнена.  
 
* нужно свети точки обслуживания в учете работ с тем что записано в параметрах системы в конкретной точке. У клиентов эта информация не заполнена.  
 
* обновление произойдет в том случае, если это позволяет текущая версия программы, т.е. обновление сработает только на версии кассира выше 2.2.1.35 и версии менеджера выше 2.272.65_10, т.к. именно с этих версий в них зашит модуль обновления.
 
* обновление произойдет в том случае, если это позволяет текущая версия программы, т.е. обновление сработает только на версии кассира выше 2.2.1.35 и версии менеджера выше 2.272.65_10, т.к. именно с этих версий в них зашит модуль обновления.
Строка 113: Строка 114:
  
  
=Механизм автообновления программ по синхронизации спомощью ТМС=
+
=Механизм автообновления программ по синхронизации спомощью ТМС(На примере КЗ, Фармаком)=
 +
'''На конкрутном примере замены версии с 79 на 82!
 +
'''
 +
*В любой обычной базе (можно на серверной офисной) идем в таблицу '''REPORTS''', ищем запись о обновлении Менеджера, например, в базе Фармакома она называется как '''ManagerXP2_272_82''' (от версии программы соответственно меняется и '''CAPTION''' данного поля. То есть, если ''до этого было'' обновление до 79 версии, то находим ManagerXP2_272_79, и меняем название на актуальную версию ManagerXP2_272_82),и в поле '''DATA''' загружаем сам наш новый ехе, в нашем случае Manager_2_272_82.
 +
 
 +
*Теперь открываем менеджер, и ищем ТМС, отвечающую за обновление. В Фармакоме это ТМС '''id=1111''', н оесли забыли или сомнения можно посмотреть ее id в '''ТМС "После авторизации пользователя".'''
 +
 
 +
*Открываем эту ТМС и везде, где встречается в тексте меняем версию менеджер на актальную. В нашем случае  '''update_79.bat -> update_82.bat''' и '''manager_73.exe->manager_82.exe''', так же переименовываем '''ManagerXP2_BACKUP_82.exe'''.
 +
 
 
ТМС в менеджере:
 
ТМС в менеджере:
 
<pre>
 
<pre>
Строка 134: Строка 143:
 
begin
 
begin
  
   if not FileExists('update_73.bat') Then
+
   if not FileExists('update_82.bat') Then //''сменили версию''
 
   begin
 
   begin
  
 
   showmessage('Сейчас произойдет обновление программы!');
 
   showmessage('Сейчас произойдет обновление программы!');
  
   AssignFile(File_manager,'manager_73.exe');
+
   AssignFile(File_manager,'manager_82.exe'); //''сменили версию''
   AssignFile(File_bat,'update_73.bat');
+
   AssignFile(File_bat,'update_82.bat'); //''сменили версию''
  
 
   qWork:=dm.TempQuery(nil);
 
   qWork:=dm.TempQuery(nil);
Строка 155: Строка 164:
 
     @echo off
 
     @echo off
  
     if exist manager_73.exe (
+
     if exist 'manager_82.exe' ( //''сменили версию''
 
       TASKKILL /f /im ManagerXP2.exe
 
       TASKKILL /f /im ManagerXP2.exe
       rename ManagerXP2.exe ManagerXP2_BACKUP_73.exe
+
       rename ManagerXP2.exe 'ManagerXP2_BACKUP_82.exe' //''сменили версию''
       rename manager_73.exe ManagerXP2.exe
+
       rename 'manager_82.exe' ManagerXP2.exe //''сменили версию''
 
       start ManagerXP2.exe
 
       start ManagerXP2.exe
     )
+
     )  
 
     exit
 
     exit
 
   ';
 
   ';
Строка 178: Строка 187:
 
   CloseFile(File_bat);
 
   CloseFile(File_bat);
  
   ShellExecute(nil, 'open', 'update_73.bat', '', nil, 1);
+
   ShellExecute(nil, 'open', 'update_82.bat', '', nil, 1); //''сменили версию''
  
 
   end;
 
   end;
Строка 188: Строка 197:
 
end;
 
end;
 
</pre>
 
</pre>
 +
 +
*Для самопроверки перезаходим в Менеджер, он должен обновиться. Блоб-поле с ехе Менеджера в таблице REPOTRS и ТМС разойдется по точкам по синхронизации, и после запуска менеджера произойдет автообновление!

Текущая версия на 18:55, 25 октября 2016

Сравнение механизмов автообновления

1. Автообновление спомощью батника

+ Плюсы:

  • протестирован у клиентов.
  • не зависит от синхронизации, т.е. можно настраивать не только в сетях.

- Минусы:

  • нужно настраивать в каждой точке на каждом рабочем месте.
  • могут быть проблемы если в точке очень медленный интернет.

2. Автообновление по синхронизации спомощью ТМС

+ Плюсы:

  • протестирован у клиентов.
  • не нужно настраивать в каждой точке.
  • не имеет значения текущая версия программы.
  • обновление произойдет на всех рабочих местах.

- Минусы:

  • зависит от синхронизации, можно использовать только в сетях.

3. Славин механизм автообновления через учет работ

+ Плюсы:

  • можно отправлять прямо из учета работ.
  • можно настраивать не только сетевым клиентам.

- Минусы:

  • нужно свети точки обслуживания в учете работ с тем что записано в параметрах системы в конкретной точке. У клиентов эта информация не заполнена.
  • обновление произойдет в том случае, если это позволяет текущая версия программы, т.е. обновление сработает только на версии кассира выше 2.2.1.35 и версии менеджера выше 2.272.65_10, т.к. именно с этих версий в них зашит модуль обновления.


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

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

для автообновления версии программ должны указываться в числовом формате и содержать 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 в папке с программой.


Механизм автообновления программ по синхронизации спомощью ТМС(На примере КЗ, Фармаком)

На конкрутном примере замены версии с 79 на 82!

  • В любой обычной базе (можно на серверной офисной) идем в таблицу REPORTS, ищем запись о обновлении Менеджера, например, в базе Фармакома она называется как ManagerXP2_272_82 (от версии программы соответственно меняется и CAPTION данного поля. То есть, если до этого было обновление до 79 версии, то находим ManagerXP2_272_79, и меняем название на актуальную версию ManagerXP2_272_82),и в поле DATA загружаем сам наш новый ехе, в нашем случае Manager_2_272_82.
  • Теперь открываем менеджер, и ищем ТМС, отвечающую за обновление. В Фармакоме это ТМС id=1111, н оесли забыли или сомнения можно посмотреть ее id в ТМС "После авторизации пользователя".
  • Открываем эту ТМС и везде, где встречается в тексте меняем версию менеджер на актальную. В нашем случае update_79.bat -> update_82.bat и manager_73.exe->manager_82.exe, так же переименовываем ManagerXP2_BACKUP_82.exe.

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


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_82.bat') Then //''сменили версию''
  begin

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

  AssignFile(File_manager,'manager_82.exe'); //''сменили версию''
  AssignFile(File_bat,'update_82.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_82.exe' ( //''сменили версию''
      TASKKILL /f /im ManagerXP2.exe
      rename ManagerXP2.exe 'ManagerXP2_BACKUP_82.exe' //''сменили версию''
      rename 'manager_82.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_82.bat', '', nil, 1); //''сменили версию''

  end;

end;

begin
ShowData;
end;
  • Для самопроверки перезаходим в Менеджер, он должен обновиться. Блоб-поле с ехе Менеджера в таблице REPOTRS и ТМС разойдется по точкам по синхронизации, и после запуска менеджера произойдет автообновление!