Добавлено: Ср Июл 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
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
Зарегистрирован: 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?
Каков его формат и т.п....
>Объясните, пожайлуста, на примере, как правильно работать с объектом Updater.
>А что представляет из себя файл *.aup
Немного другими словами.
При работе с упдатером главное правильно написать модуль с именем _update.avb, который при запуске в нём процедуры с предопределённым именем Sub Main(updater) будет обновлять настройку и вести лог обновления. В этом модуле при обнаружении ошибки обновления делается updater.Fail=True, в конце работы updater.WriteLog log. Потом этот модуль объединяется с обновляемыми элементами проекта в один файл .aup специальной утилитой, которая одно время была доступна. Самая ценная функция упдатера - автоматический поиск и запуск пакета обновления при старте прораммы. Больше он ничего не делает, поэтому так мало свойств.
>Объясните, пожайлуста, на примере, как правильно работать с объектом Updater.
>А что представляет из себя файл *.aup
Немного другими словами.
При работе с упдатером главное правильно написать модуль с именем _update.avb, который при запуске в нём процедуры с предопределённым именем Sub Main(updater) будет обновлять настройку и вести лог обновления. В этом модуле при обнаружении ошибки обновления делается updater.Fail=True, в конце работы updater.WriteLog log. Потом этот модуль объединяется с обновляемыми элементами проекта в один файл .aup специальной утилитой, которая одно время была доступна. Самая ценная функция упдатера - автоматический поиск и запуск пакета обновления при старте программы. Больше он ничего не делает, поэтому так мало свойств.
>Объясните, пожайлуста, на примере, как правильно работать с объектом Updater.
>А что представляет из себя файл *.aup
Немного другими словами.
При работе с упдатером главное правильно написать модуль с именем _update.avb, который при запуске в нём процедуры с предопределённым именем Sub Main(updater) будет обновлять настройку и вести лог обновления. В этом модуле при обнаружении ошибки обновления делается updater.Fail=True, в конце работы updater.WriteLog log. Потом этот модуль объединяется с обновляемыми элементами проекта в один файл .aup специальной утилитой, которая одно время была доступна. Самая ценная функция упдатера - автоматический поиск и запуск пакета обновления при старте программы. Больше он ничего не делает, поэтому так мало свойств.
Большое спасибо за информацию!
А что это за утилита?
Утилита для формирования aup файла. По идее, она должна быть в составе архива с документацией.
4. + в папке еще 2 файла *.afm
5. Запускаю MakeUpdates и все пока круто -> в папке Updates создается файл test_00001.aup
6. Копирую данный файл test_00001.aup в #data\..\updates
7. Создаю в базе данных в таблице USR_PARAMS два параметра
А значения этих полей ты задал ?
CONFIG_NAME1 = "test" т.е. совпадает с именем файла AUP без номера версии
CONFIG_VERSION1 = 0 для начала.
Заработало!!!
Я думал, что это все делается Акцентом автоматичесски.
Можно еще вопрос:
Можно ли в самом _update.avb сделать создание полей USR_PARAMS в БД и присвоить им значения, или прийдется создавать отдельный модуль создание полей в USR_PARAMS и присвоить им значения.
Все-таки не у всех компаниях есть админы БД
Добавлено: Чт Июл 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
Потом в проводнике просто щелкни на файле курсором.
Можно ли программно вытягивать с *.aup файлы (например в *.acp делается через #)?
Например, у меня в *.aup есть формы и т.п.
Нет. А зачем ?
Система обновлений распаковывает файлы в зависимости от расширения по папкам, для которых есть указание в ARD. Если есть одинаковое имя, то прежний файл сохраняется с новым расширением BAK.
Есть недостатки :
- невозможно создать папку
- если нет расширения в ARD, то процесс установки прерывается.
Первую проблему я решал, указывая в имени файла относительный путь. Например, мне нужно, чтобы файл с картинкой picture.gif лежал в папке Html\Art
1. Делаем составное имя файла art;picture.gif.htm
2. После установки обновления этот файл будет лежать в папке html, путь к которой должен быть указан в ARD для расширения HTM
3. В _update.avb есть код, который "разбирает" такие файлы и создает папки, в которые их и помещает.
Вторая проблема должна решиться Кухтиным. Программа установки обновлений должна помещать осознанный текст сообщения об ошибке в лог-файл.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах