Список форумов Акцент Акцент
официальный форум разработчика программы Акцент
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Как работать с Updater'ом?
На страницу 1, 2, 3  След.
 
Начать новую тему   Ответить на тему    Список форумов Акцент -> Акцент 7.0
Предыдущая тема :: Следующая тема  
Автор Сообщение
phylosoph



Зарегистрирован: 15.03.2005
Сообщения: 168
Откуда: г. Киев, Украина.

СообщениеДобавлено: Пт Июл 01, 2005 8:56 am    Заголовок сообщения: Как работать с Updater'ом? Ответить с цитатой

В справке по Updater'у рассказано про модуль, файл *.aup, метод и свойство. Но никаких примеров нет.

Объясните, пожайлуста, на примере, как правильно работать с объектом Updater.
Желательно, по подробнее.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
olimp
Site Admin


Зарегистрирован: 10.03.2005
Сообщения: 2661

СообщениеДобавлено: Ср Июл 06, 2005 8:55 am    Заголовок сообщения: Re: Как работать с Updater'ом? Ответить с цитатой

phylosoph писал(а):
В справке по Updater'у рассказано про модуль, файл *.aup, метод и свойство. Но никаких примеров нет.

Объясните, пожайлуста, на примере, как правильно работать с объектом Updater.
Желательно, по подробнее.


Updater имеет только одно свойство - Fail и один метод WriteLog
Назначение есть в справке.

Структура модуля _update.avb у меня строится следующим образом

1. Добвляеются все новое (эл-ты проекта, свойства и пр.). При этом возникающие ошибки запоминаются в буфере
2. Если ошибки были, то они пишутся в лог и установка завершается Fail = true

Ниже приведен код основной процедуры

Sub Main(Updater)
Dim aProc
Dim i
Dim Mtr

Set Errors = CreateObject("Scripting.Dictionary")
Set WinAPI = CreateLibObject("WinAPI")
Set MC = WorkArea.MyCompany

Set Mtr = Meter()

aProc = Array( "CreateTransProps", "CreateAgCompanyProps", "CreateAgWorkerProps", _
"CreateDBProps", "CreateTMLProps", _
"CreateQueries", "CreateAgMCProps", _
"CreateAssetsProps")

Mtr.Open "Создание окружения для работы ...", 1 , UBound(aProc) + 1

For i = 0 To UBound(aProc)
Mtr.Pos = i + 1
Eval(aProc(i))
Next

If Errors.Count > 0 Then
WriteErrorToLog Updater
MsgBox "В процессе установки произошли ошибки." & vbCrLf & "См. протокол установки.", vbExclamation, "Внимание !"
Updater.Fail = True
End If
End Sub
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
phylosoph



Зарегистрирован: 15.03.2005
Сообщения: 168
Откуда: г. Киев, Украина.

СообщениеДобавлено: Ср Июл 06, 2005 10:46 am    Заголовок сообщения: Re: Как работать с Updater'ом? Ответить с цитатой

olimp писал(а):
phylosoph писал(а):
В справке по Updater'у рассказано про модуль, файл *.aup, метод и свойство. Но никаких примеров нет.

Объясните, пожайлуста, на примере, как правильно работать с объектом Updater.
Желательно, по подробнее.


Updater имеет только одно свойство - Fail и один метод WriteLog
Назначение есть в справке.

Структура модуля _update.avb у меня строится следующим образом

1. Добвляется все новое (эл-ты проекта, свойства и пр.). При этом возникающие ошибки запоминаются в буфере
2. Если ошибки были, то они пишутся в лог и установка завершается Fail = true


А что представляет из себя файл *.aup?
Каков его формат и т.п....
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Юров Ю.С.



Зарегистрирован: 11.03.2005
Сообщения: 383
Откуда: Павлоград

СообщениеДобавлено: Ср Июл 06, 2005 12:27 pm    Заголовок сообщения: Ответить с цитатой

>Объясните, пожайлуста, на примере, как правильно работать с объектом Updater.
>А что представляет из себя файл *.aup
Немного другими словами.
При работе с упдатером главное правильно написать модуль с именем _update.avb, который при запуске в нём процедуры с предопределённым именем Sub Main(updater) будет обновлять настройку и вести лог обновления. В этом модуле при обнаружении ошибки обновления делается updater.Fail=True, в конце работы updater.WriteLog log. Потом этот модуль объединяется с обновляемыми элементами проекта в один файл .aup специальной утилитой, которая одно время была доступна. Самая ценная функция упдатера - автоматический поиск и запуск пакета обновления при старте прораммы. Больше он ничего не делает, поэтому так мало свойств.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
phylosoph



Зарегистрирован: 15.03.2005
Сообщения: 168
Откуда: г. Киев, Украина.

СообщениеДобавлено: Ср Июл 06, 2005 12:33 pm    Заголовок сообщения: Ответить с цитатой

Юров Ю.С. писал(а):
>Объясните, пожайлуста, на примере, как правильно работать с объектом Updater.
>А что представляет из себя файл *.aup
Немного другими словами.
При работе с упдатером главное правильно написать модуль с именем _update.avb, который при запуске в нём процедуры с предопределённым именем Sub Main(updater) будет обновлять настройку и вести лог обновления. В этом модуле при обнаружении ошибки обновления делается updater.Fail=True, в конце работы updater.WriteLog log. Потом этот модуль объединяется с обновляемыми элементами проекта в один файл .aup специальной утилитой, которая одно время была доступна. Самая ценная функция упдатера - автоматический поиск и запуск пакета обновления при старте программы. Больше он ничего не делает, поэтому так мало свойств.


Большое спасибо за информацию!

А что это за утилита?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
olimp
Site Admin


Зарегистрирован: 10.03.2005
Сообщения: 2661

СообщениеДобавлено: Ср Июл 06, 2005 1:16 pm    Заголовок сообщения: Ответить с цитатой

phylosoph писал(а):
Юров Ю.С. писал(а):
>Объясните, пожайлуста, на примере, как правильно работать с объектом Updater.
>А что представляет из себя файл *.aup
Немного другими словами.
При работе с упдатером главное правильно написать модуль с именем _update.avb, который при запуске в нём процедуры с предопределённым именем Sub Main(updater) будет обновлять настройку и вести лог обновления. В этом модуле при обнаружении ошибки обновления делается updater.Fail=True, в конце работы updater.WriteLog log. Потом этот модуль объединяется с обновляемыми элементами проекта в один файл .aup специальной утилитой, которая одно время была доступна. Самая ценная функция упдатера - автоматический поиск и запуск пакета обновления при старте программы. Больше он ничего не делает, поэтому так мало свойств.




Большое спасибо за информацию!

А что это за утилита?


Утилита для формирования aup файла. По идее, она должна быть в составе архива с документацией.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
phylosoph



Зарегистрирован: 15.03.2005
Сообщения: 168
Откуда: г. Киев, Украина.

СообщениеДобавлено: Ср Июл 06, 2005 2:05 pm    Заголовок сообщения: Ответить с цитатой

olimp писал(а):

Утилита для формирования aup файла. По идее, она должна быть в составе архива с документацией.


Можна, пожайлуста, по конкретнее, где находится данная утилита Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
olimp
Site Admin


Зарегистрирован: 10.03.2005
Сообщения: 2661

СообщениеДобавлено: Ср Июл 06, 2005 5:09 pm    Заголовок сообщения: Ответить с цитатой

phylosoph писал(а):
olimp писал(а):

Утилита для формирования aup файла. По идее, она должна быть в составе архива с документацией.


Можна, пожайлуста, по конкретнее, где находится данная утилита Smile


Утилита, описание и пример лежат в разделе "Полезные мелочи".
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
phylosoph



Зарегистрирован: 15.03.2005
Сообщения: 168
Откуда: г. Киев, Украина.

СообщениеДобавлено: Чт Июл 07, 2005 9:16 am    Заголовок сообщения: Ответить с цитатой

olimp писал(а):
Утилита, описание и пример лежат в разделе "Полезные мелочи".


Super!!! Very Happy
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
phylosoph



Зарегистрирован: 15.03.2005
Сообщения: 168
Откуда: г. Киев, Украина.

СообщениеДобавлено: Чт Июл 07, 2005 10:24 am    Заголовок сообщения: Ответить с цитатой

Люди! Может я немного не в уме, но у меня не получается :)

1. Я создал в папке test папку 00001.
2. Файл _update.xml
Код:

<?xml version="1.0" encoding="windows-1251"?>
<config cver="1" version="00001" application="accent7" required_build="467"/>

3. Файл _update.avb
Код:

Sub Main(Updater)
  MsgBox "Обновление!!!"
End Sub

4. + в папке еще 2 файла *.afm
5. Запускаю MakeUpdates и все пока круто -> в папке Updates создается файл test_00001.aup
6. Копирую данный файл test_00001.aup в #data\..\updates
7. Создаю в базе данных в таблице USR_PARAMS два параметра
Код:

PRM_NAME          PRM_TYPE
--------------------------------
CONFIG_NAME1       8
CONFIG_VERSION1    3

8. В файле accent7s.ard есть строка *.aup = #data\..\updates
9. Открываю базу данных, а там.... ничего не вылазит

Скажите, пожайлуста, что я сделал не так!!!!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
olimp
Site Admin


Зарегистрирован: 10.03.2005
Сообщения: 2661

СообщениеДобавлено: Чт Июл 07, 2005 10:31 am    Заголовок сообщения: Ответить с цитатой

phylosoph писал(а):
Люди! Может я немного не в уме, но у меня не получается :)

7. Создаю в базе данных в таблице USR_PARAMS два параметра
Код:

PRM_NAME          PRM_TYPE
--------------------------------
CONFIG_NAME1       8
CONFIG_VERSION1    3

Скажите, пожайлуста, что я сделал не так!!!!


А значения этих полей ты задал ?
CONFIG_NAME1 = "test" т.е. совпадает с именем файла AUP без номера версии
CONFIG_VERSION1 = 0 для начала.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
phylosoph



Зарегистрирован: 15.03.2005
Сообщения: 168
Откуда: г. Киев, Украина.

СообщениеДобавлено: Чт Июл 07, 2005 10:42 am    Заголовок сообщения: Ответить с цитатой

olimp писал(а):
phylosoph писал(а):
Люди! Может я немного не в уме, но у меня не получается :)

7. Создаю в базе данных в таблице USR_PARAMS два параметра
Код:

PRM_NAME          PRM_TYPE
--------------------------------
CONFIG_NAME1       8
CONFIG_VERSION1    3

Скажите, пожайлуста, что я сделал не так!!!!


А значения этих полей ты задал ?
CONFIG_NAME1 = "test" т.е. совпадает с именем файла AUP без номера версии
CONFIG_VERSION1 = 0 для начала.


Заработало!!!

Я думал, что это все делается Акцентом автоматичесски.

Можно еще вопрос:
Можно ли в самом _update.avb сделать создание полей USR_PARAMS в БД и присвоить им значения, или прийдется создавать отдельный модуль создание полей в USR_PARAMS и присвоить им значения.
Все-таки не у всех компаниях есть админы БД Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
olimp
Site Admin


Зарегистрирован: 10.03.2005
Сообщения: 2661

СообщениеДобавлено: Чт Июл 07, 2005 11:54 am    Заголовок сообщения: Ответить с цитатой

Автоматически инициализировать - это нонсенс.

В _update.avb не получится, поскольку система обновлений не знает, что и какой версии нужно обновлять.

Напиши на VBS код, который открывает базу через OLE и устанавливает начальные значения. Например

файл AccentIni.vbs

Dim Acc

Set Acc = CreateObject("Accent.WorkArea.")
With Acc.WorkArea
If .openDataBase2(...) then
...
.UserParam("CONFIG_VERSION1") = ...
.UserParam("CONFIG_NAME1") = ...
.CloseDataBase
msgbox("OK")
else
msgbox("Error !")
end If
end with

Потом в проводнике просто щелкни на файле курсором.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
phylosoph



Зарегистрирован: 15.03.2005
Сообщения: 168
Откуда: г. Киев, Украина.

СообщениеДобавлено: Чт Июл 07, 2005 12:05 pm    Заголовок сообщения: Ответить с цитатой

И еще один вопрос:

Можно ли программно вытягивать с *.aup файлы (например в *.acp делается через #)?
Например, у меня в *.aup есть формы и т.п.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
olimp
Site Admin


Зарегистрирован: 10.03.2005
Сообщения: 2661

СообщениеДобавлено: Чт Июл 07, 2005 12:23 pm    Заголовок сообщения: Ответить с цитатой

phylosoph писал(а):
И еще один вопрос:

Можно ли программно вытягивать с *.aup файлы (например в *.acp делается через #)?
Например, у меня в *.aup есть формы и т.п.


Нет. А зачем ?

Система обновлений распаковывает файлы в зависимости от расширения по папкам, для которых есть указание в ARD. Если есть одинаковое имя, то прежний файл сохраняется с новым расширением BAK.

Есть недостатки :
- невозможно создать папку
- если нет расширения в ARD, то процесс установки прерывается.

Первую проблему я решал, указывая в имени файла относительный путь. Например, мне нужно, чтобы файл с картинкой picture.gif лежал в папке Html\Art

1. Делаем составное имя файла art;picture.gif.htm
2. После установки обновления этот файл будет лежать в папке html, путь к которой должен быть указан в ARD для расширения HTM
3. В _update.avb есть код, который "разбирает" такие файлы и создает папки, в которые их и помещает.

Вторая проблема должна решиться Кухтиным. Программа установки обновлений должна помещать осознанный текст сообщения об ошибке в лог-файл.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Акцент -> Акцент 7.0 Часовой пояс: GMT + 2
На страницу 1, 2, 3  След.
Страница 1 из 3

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


Powered by phpBB © 2001, 2005 phpBB Group