UpdateEx — обновление Фара и плагинов с плагринга

Здесь можно обсудить ваш любимый плагин.
Post Reply
User avatar
John Doe
Бюрократ
Posts: 13866
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: UpdateEx

Post by John Doe »

Latest post of the previous page:

На самом деле просто первый попавшийся пример.
Вот другой, правда для preinstall: делать бэкап перед обновлением.
User avatar
John Doe
Бюрократ
Posts: 13866
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: UpdateEx

Post by John Doe »

Пожелания к плагину.

1. При наличии обновления автоматически ставится плюсик в диалоге.
Однако, если список длинный, то пользователь об этом не узнает, и обновит плагин случайно.
Надо бы элементы, для которых доступны обновления, перемещать в начало списка.

2. Не знаю учитывается ли минимальная требуемая версия.
Например, если у меня билд 3000, то предлагать плагины, требующие 4000 не надо.
User avatar
Tim Sobolev
Posts: 729
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 7 times

Re: UpdateEx

Post by Tim Sobolev »

Alexey Samlyukov wrote:а чем будет отличаться postinstall по гуиду плага от батника в postinstall для конкретного плага?
По гуиду безразлично где находится конкретный плагин (относительно каталога фара) -- постинсталл сработает относительно каталога каждого конкретного обновляемого плагина.

Глобальный батник сейчас у меня раскидывает плагины из комплекта FAR по подкаталогам. Но неудобно то, что он дёргается постоянно при любом обновлении любого плагина. Поэтому хорошо бы постинсталл, который срабатывал только при обновлении FAR.

Общий постинсталл для устанавливаемых плагинов нужен, к примеру, для вызова команд удаления неких файлов для каждого из устанавливаемых плагинов (у меня file_id.diz history*.* *.map readme*.* changelog*.*)

Можно совместить варианты постинсталлов общего для всех плагинов (кроме дистрибутива FAR) и по GUID путём вызова совмещённого постинсталла для каждого из устанавливаемых плагинов с передачей в качестве параметров GUID и пути к каталогу плагину. Т.о. наличие постинсталла для FAR и совмещённого постинсталла для плагинов позволит максимально гибко настроить обновление.
User avatar
Alexey Samlyukov
Posts: 1765
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Re: UpdateEx

Post by Alexey Samlyukov »

набросок:

Code: Select all

; ВЫЗОВ ВНЕШНИХ ПРОГРАММ ПЕРЕД ОБНОВЛЕНИЕМ
[PreInstall]
;--- общий (вызывается перед перебором дистрибутивов):
;common =
;--- дистрибутив Far Manager:
;00000000-0000-0000-0000-000000000000 =
;--- сторонний дистрибутив, например, PicView Advanced:
;9F25A250-45D2-45A0-90A3-5686B2A048FA =


; ВЫЗОВ ВНЕШНИХ ПРОГРАММ ПОСЛЕ ОБНОВЛЕНИЯ
[PostInstall]
;--- дистрибутив Far Manager:
;00000000-0000-0000-0000-000000000000 =
;--- сторонний дистрибутив, например, PicView Advanced:
;9F25A250-45D2-45A0-90A3-5686B2A048FA =
;--- общий (вызывается после перебора дистрибутивов):
;common =
так?
и еще вопрос, запуск идет через CreateProcess(...,PluginDirectory,...) какие каталоги устанавливать для перечисленных случаев?
User avatar
Tim Sobolev
Posts: 729
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 7 times

Re: UpdateEx

Post by Tim Sobolev »

Формат подходит.

В случае common выполняется команда для каждого из обновляемого пакетов, выставляется каталог конкретного плагина/корневой каталог FAR (для дистрибутива FAR), в качестве параметра команды из common передаётся GUID обновляемого пакета.

Для конкретных плагинов/дистрибутива FAR -- выставляется каталог этого плагина/корневой каталог FAR.
User avatar
Alexey Samlyukov
Posts: 1765
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Re: UpdateEx

Post by Alexey Samlyukov »

common будет тем же что и щас, каталог скорее всего будет как и сейчас = папка плагина UpdateEx
а вот для конкретных дистрибутивов вопрос, что указывать в каталоге, будете батники по всем плагинам раскидывать?
User avatar
John Doe
Бюрократ
Posts: 13866
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: UpdateEx

Post by John Doe »

Мне больше нравится другой формат.

Code: Select all

[common] =
;--- общий (вызывается перед перебором дистрибутивов):
;PreInstall=
;--- общий (вызывается после перебора дистрибутивов):
;PostInstall=

;--- дистрибутив Far Manager:
[00000000-0000-0000-0000-000000000000]
; ВЫЗОВ ВНЕШНИХ ПРОГРАММ ПЕРЕД ОБНОВЛЕНИЕМ
;PreInstall=
; ВЫЗОВ ВНЕШНИХ ПРОГРАММ ПОСЛЕ ОБНОВЛЕНИЯ
;PostInstall=

;--- сторонний дистрибутив, например, PicView Advanced:
[9F25A250-45D2-45A0-90A3-5686B2A048FA]
;PreInstall=
;PostInstall=
Но спорить не стану
User avatar
Tim Sobolev
Posts: 729
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 7 times

Re: UpdateEx

Post by Tim Sobolev »

В случае common, вызывающегося для каждого из обновляемых пакетов достаточно одного батника, который принимает параметром GUID обновляемого пакета и сам парсит необходимые действия. Единственное для него нужно выставлять текущий каталог, соответствующий каталогу пакета, для которого он вызван. Или вообще передавать его в качестве второго параметра.

А обработка по отдельным GUID будет удобна тем, кому не нужна централизованная обработка, а нужно подправить содержимое каталога для одного или нескольких GUID.
User avatar
Alexey Samlyukov
Posts: 1765
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Re: UpdateEx

Post by Alexey Samlyukov »

мне этим лень заниматься, можно присылать патчи ) функция RestartFARW(), последняя в файле UpdateEx.cpp
User avatar
John Doe
Бюрократ
Posts: 13866
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: UpdateEx

Post by John Doe »

Плагин не может обновить себя.
User avatar
Alexey Samlyukov
Posts: 1765
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Re: UpdateEx

Post by Alexey Samlyukov »

оказывается удобная штука PostInstall по гуиду, теперь можно более-менее штатно обновлять например плагин Registry Browser (запакован не в корень)
например:
кидаем в папку плагина такой батник


а в конфиге добавляем:


и теперь нормально обновляем плагин )
User avatar
Alexey Samlyukov
Posts: 1765
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Re: UpdateEx

Post by Alexey Samlyukov »

вопрос, а содержимое батника как-то можно сразу указывать в конфиге? научите )
User avatar
John Doe
Бюрократ
Posts: 13866
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: UpdateEx

Post by John Doe »

Насколько я понимаю, то без специальной поддержки - только если сможете уместить содержимое в 1 строку.
Например можно попробовать PostInstall=%COMSPEC% /c"1 & 2 & 3"
User avatar
Alexey Samlyukov
Posts: 1765
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Re: UpdateEx

Post by Alexey Samlyukov »

я про выше приведенный батник. его никак?
User avatar
John Doe
Бюрократ
Posts: 13866
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: UpdateEx

Post by John Doe »

По идее так:
Но параметры...
User avatar
John Doe
Бюрократ
Posts: 13866
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: UpdateEx

Post by John Doe »

Текущая папка должна быть в %CD%, так что примерно так:

Code: Select all

05708D26-79EC-407D-BC61-F6A48A3EF004 = cmd /c "@if exist "%CD%\Registry" xcopy "%CD%\Registry\*" "%CD%\" /i /y /s & rmdir /s /q "%CD%\Registry" >nul"
Я не вникал что ваш батник в точности делает, подкорректируйте если что.

P.S.
Выше я уже высказывал имхо, что лучше гуид сделать секцией, а не параметром.
Post Reply

Return to “Обсуждение плагинов”