Комментарии 25
Установка — ОК! А как быть с обновлением решений с помощью такой поставки?
Кажется, это вопрос на ещё одну статью!
В целом, с данным способом поставки всё сводится к написанию небольшого модуля, который занимается проверкой обновлений, и который будет скачивать, импортировать и компилировать новые классы. И в данном случае все необходимые настройки сделает уже новый импортированный Installer.
Вот небольшая сводка того, что уже есть по этой теме на сегодня:
В целом, с данным способом поставки всё сводится к написанию небольшого модуля, который занимается проверкой обновлений, и который будет скачивать, импортировать и компилировать новые классы. И в данном случае все необходимые настройки сделает уже новый импортированный Installer.
Вот небольшая сводка того, что уже есть по этой теме на сегодня:
- В Caché WEB Terminal, при выполнении команды /update, на сервере вызывается метод Update. Он загружает из сети XML указанной версии, а затем импортирует и компилирует загруженные классы;
- В проекте DeepSeeWeb так же есть метод, загружающий XML последнего релиза с GitHub;
- Есть утилита для continuous-обновления приложений напрямую из репозитория, если там хранятся XML — GitHubUpdater.
Ну то есть вот это Update уже работает не через Projection механизм, а как-то еще, правильно?
А вот как кастомизацию установки делать? Куда поставилось-туда поставилось? ) Если вдруг по условиям установки требуется что-то спросить у пользователя как это здесь?
Исследовал как-то, что read в случае с проекциями, к сожалению, не работает. Так что чуть ли не единственным вариантом остаётся просить пользователя задавать какой-то глобал перед установкой. А при отсутствии глобалов устанавливать приложение "по-умолчанию", что, в принципе, для большинства пользователей подходит.
Ну я бы тут не read пользовался, а вызывал бы UI, может средствами стандартного CSP…
Или так: сначала ставишь нечто, что позволяет организовать простой диалог с пользователем, а потом уже используешь эту "диалоговую" тулзу для кастомизации параметров.
Или так: сначала ставишь нечто, что позволяет организовать простой диалог с пользователем, а потом уже используешь эту "диалоговую" тулзу для кастомизации параметров.
Это нереально полезно открывать во время установки окно браузера с настройками приложения. Если знает кто код такой, и это правда возможно, было бы любопытно узнать как.
ClassMethod RunPage(Url As %String = "http://intersystems.ru")
{
#Include %occOptions
Set Browser = $s($$$isWINDOWS:"start", $$$isUNIX:"x-www-browser", 1:"x-www-browser")
Set Command = Browser _ " " _ Url
Do $ZF(-1, Command)
}
Откроет веб-страницу в браузере по умолчанию.
Откроет на сервере, и то не факт, что касается Windows.
Откроет на сервереДа. Но как это ограничение обойти не представляю.
и то не факт, что касается Windows.Работает на Windows XP.
а никак не обойти $zf работает на сервере и все тут.
на XP да, на чем то новее не будет, точнее на win7 с бубном можно еще сделать, нужно разрешить интерактивный режим
так на win8,10 уже все
так что лучше ничего интерактивного не запускать на сервере.
на XP да, на чем то новее не будет, точнее на win7 с бубном можно еще сделать, нужно разрешить интерактивный режим
так на win8,10 уже все
так что лучше ничего интерактивного не запускать на сервере.
Мне кажется, тут надо разделять место импорта: если импорт пакета установки делается через drag-n-drop в студию, речь идет о клиенте и винде.
А если через импорт классов в панели управления — это уже точно сервер.
Если это упростить и свести к тому, что и в случае Студии и случае Панели управления будет открываться некое приложение в браузере (т.е. на сервере), то можно предустановить сначала некую простенькое приложение, которое сможет динамически формировать диалоговый UI для устанавливаемых пакетов.
Что думаете?
А если через импорт классов в панели управления — это уже точно сервер.
Если это упростить и свести к тому, что и в случае Студии и случае Панели управления будет открываться некое приложение в браузере (т.е. на сервере), то можно предустановить сначала некую простенькое приложение, которое сможет динамически формировать диалоговый UI для устанавливаемых пакетов.
Что думаете?
Если идет импорт через студию это можно сделать, можно отловить этот процесс, и возможно даже запустить в студии диалог
но сделать это можно только через класс системы контроля версий
там есть действие на импорт файла, и при импорте можно отобразить web-страницу в студии, и тут уже можно как-нибудь придумать и вытянуть все необходимое из загружаемого файла и после сделать установку по настройкам введенным с такой страницы
проблема в том что сервер уже должен быть настроен на подобнове поведение, и в том что пока нельзя установить несколько разных классов контроля версий без хитрого переделывания
но сделать это можно только через класс системы контроля версий
там есть действие на импорт файла, и при импорте можно отобразить web-страницу в студии, и тут уже можно как-нибудь придумать и вытянуть все необходимое из загружаемого файла и после сделать установку по настройкам введенным с такой страницы
проблема в том что сервер уже должен быть настроен на подобнове поведение, и в том что пока нельзя установить несколько разных классов контроля версий без хитрого переделывания
Ребята, это все ужасно. Overdesign, over complicated.
P.S.
%Installer.Manifest хорошо интегрируется в пользовательские установщики (которые могут быть с GUI и похожими пирогами).
- Если надо параметризовать через аргументы или с интерактивом установку чего-то, то используем %Installer.Manifest и генерируемую функцию вызываем из командной строки с аргументами или спрашивая о них.
- Если есть возможность инсталлироваться никого не спрашивая, то используем проекции. Если надо что-то спросить, см. пункт 1
P.S.
%Installer.Manifest хорошо интегрируется в пользовательские установщики (которые могут быть с GUI и похожими пирогами).
Ребята, это все ужасно.
Что ж тут ужасного? мне нравится этот способ установки. "Ужасного" в нем только то, что это похоже на бэкдор: импортировал пакет с классами, а заодно тебе поставилось все что угодно.
Как можно улучшить: добавить в панель управления Caché ссылку: Установка приложений, которая ожидает импорт файла с пакетом и предлагает еще и API для интерактивного диалога а еще и в одно всем известное место кладет логи и ошибки установки.
Еще одна штука: неплохо бы после инсталляции видеть логи, что куда поставилось и были ли ошибки. Куда-то в стандартный лог пишется? Если да, то в какой? в cconsole.log или еще куда?
По-умолчанию пишется на текущее устройство. А вот %Installer предоставляет интерфейс логгера, с помощью которого можно организовать запись как угодно.
По-умолчанию пишется на текущее устройство.
Ну это если делать write. А можно поиспользовать этот интерфейс логгера для указанного в статье способа установки? (т.е. без %Installer)?
Или было же что-то, чтобы писать в cconsole.log
А можно поиспользовать этот интерфейс логгера для указанного в статье способа установки?
Можно написать сам логгер и вызывать его.
Или было же что-то, чтобы писать в cconsole.log
Это из коробки есть (документация):
Set Status = ##class(%SYS.System).WriteToConsoleLog(Message, Flag, Severity)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Установка приложений в Caché с использованием проекций