arclite: получить один файл

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
buniak_a_h
Posts: 352
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 37 times
Been thanked: 5 times
Contact:

arclite: получить один файл

Post by buniak_a_h » Sun 06 Aug, 2017 23:20

Здравствуйте, господа.
У меня возникла необходимость "вытащить" из архива один файл. На форуме я уже нашёл, что запуск плагина arclite из макроса через Plugin.Call (или Plugin.SyncCall) невозможен. Судя по выводимому по префиксу arc: хелпу,
Распаковать архив
arc:x [-ie[:(y|n)]] [-o[:(o|s|r|a)]] [-mf[:(y|n)]] [-p:<password>] [-sd[:(a|y|n)]] [-da[:(y|n)]] <archive> ... <path>
Т.е., возможности указать один файл нет. Может быть, такая возможность есть, просто не документирована? Ведь из панели плагина можно по F5 вытащить один файл! Неужели не предусмотрено интерфейса для вызывающего макроса?
PS. Я, конечно, могу открыть на файловой панели плугинову панель со списком файлов, отметить нужные мне файлы и скопировать их (Keys"5"). Но как-то это криво...
PPS. Если такая тема уже поднималась - прошу извинить. Ищу по форумам уже часов 6, найти не могу.

DV
Posts: 308
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 2 times
Been thanked: 2 times

arclite: получить один файл

Post by DV » Tue 08 Aug, 2017 20:20

Почему бы не воспользоваться консольным 7z.exe?

buniak_a_h
Posts: 352
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 37 times
Been thanked: 5 times
Contact:

arclite: получить один файл

Post by buniak_a_h » Tue 08 Aug, 2017 22:07

DV wrote:
Tue 08 Aug, 2017 20:20
Почему бы не воспользоваться консольным 7z.exe?
Не хотелось зависеть от того, установлен ли (и где) у клиента 7z, или нет. Кроме того, к сожалению, программы, определяющие наличие файла (mf.fexist, win.GetFileInfo) не умеют искать файл по %path%; надо самому организовывать перебор папок; мелочь, конечно, не неприятно. Это - чтобы определить, где он есть (если он внесён в path).
Обидно, что плагин это делать умеет, но то ли интерфейс не предусмотрен, то ли не задокументирован.

fps
Posts: 164
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 11 times
Been thanked: 3 times

arclite: получить один файл

Post by fps » Wed 09 Aug, 2017 04:38

Если речь про zip архив, то можно распаковать файл штатными средствами windows

buniak_a_h
Posts: 352
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 37 times
Been thanked: 5 times
Contact:

arclite: получить один файл

Post by buniak_a_h » Wed 09 Aug, 2017 08:09

fps wrote:
Wed 09 Aug, 2017 04:38
Если речь про zip архив, то можно распаковать файл штатными средствами windows
  1. Речь на самом деле о chm-файле, который 7-zip прекрасно "распаковывает.
  2. Мне на самом деле надо "влезть" в hhk или hhc - индекс или оглавление. Чтобы по ключевому слову найти название html и далее вызвать зависимую справку. В принципе, я эту задачу решил (см. Макрос, реализующий функции плагина Active-Help). За одним исключением: не работает из модального редактора (а значит, из редактора, вызванного из архива - независимо, из arclite или из MultiArc).
    Это, кстати, ещё одно неприятное ограничение этих плагинов. И не говорите, что "так надо" для безопасности: аналогичная ситуация в NetBox прекрасно работает (в старом плагине FTP-клиент, кстати, редактор тоже модальный)
Last edited by buniak_a_h on Wed 09 Aug, 2017 08:11, edited 1 time in total.

DV
Posts: 308
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 2 times
Been thanked: 2 times

arclite: получить один файл

Post by DV » Wed 09 Aug, 2017 08:56

Я бы сказал, что если у клиента уже есть FAR с каким-то определённым макросом, то 7z.exe (вместе с 7-zip.chm, 7z.dll, 7z.sfx и 7zCon.sfx) можно предоставлять клиенту таким же образом, как и макрос, - в комплекте с FAR :)
Именно так я решил для себя этот вопрос. У меня в портативной папке с FAR находятся и 7z.exe, и UnRAR.exe, и unzip.exe, и даже wget.exe.

buniak_a_h
Posts: 352
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 37 times
Been thanked: 5 times
Contact:

arclite: получить один файл

Post by buniak_a_h » Wed 09 Aug, 2017 09:27

DV wrote:
Wed 09 Aug, 2017 08:56
решил для себя
Ключевое слово "для себя"... Я не могу потребовать от клиента установки ПО от третьих лиц.
На самом деле это - не единственная проблема. Просто пока не стал разбираться. Код

Code: Select all

local tmpdir = os.tmpname()
win.ShellExecute(nil, nil, '7z.exe', 'e -o'..mf.env('temp')..tmpdir..' '..fn..' *.hhc *.hhk' )
почему-то не работает, хотя введённый в командной строке - нормально. Временный каталог не создаётся. В консоль что-то выводится, но перехватить это я не смог.

DV
Posts: 308
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 2 times
Been thanked: 2 times

arclite: получить один файл

Post by DV » Wed 09 Aug, 2017 10:58

Так работает:

Code: Select all

local tmpdir = os.tmpname(); 
local fn = "C:\\FAR3\\7-zip.chm"; -- full path!
local cmd = '7z.exe e "'..fn..'" -o"'..mf.env('temp')..tmpdir..'" *.hhc *.hhk'; 
win.system(cmd)

buniak_a_h
Posts: 352
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 37 times
Been thanked: 5 times
Contact:

arclite: получить один файл

Post by buniak_a_h » Wed 09 Aug, 2017 15:29

DV wrote:
Wed 09 Aug, 2017 10:58
Так работает:
Спасибо. Если поможет решить проблему с модальным редактором - применю.

Post Reply

Return to “Нужна помощь”