MantisBT  www.farmanager.com | PlugRinG | Plugins API and Macros | Forum | English Forum | Code

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0003407Far ManagerCommand Line/Executepublic2017-03-14 15:312017-03-14 20:53
ReporterAndys 
Assigned ToDrKnS 
PrioritynormalSeveritymajorReproducibilityalways
StatusclosedResolutionno change required 
Platformx86OSWindowsOS Version10
Product Version3.0 
Target VersionFixed in Version 
Summary0003407: Проблема с запуском из командной строки и аргументами в кавычках (файлы с пробелами)
DescriptionВоспроизводится для данной конкретной программы и ОС: Windows 7 x64, Windows 10 x64, Server 2012 r2 x64.
Пока наткнулся только на одну такую програму - AlReader2 (http://www.alreader.com/downloads.php?lang=en версия для виндовс, от 2011 года)
При запуске из фара версии 4545 проблем нет, обнаружено при апгрейде до фара 4900
Steps To Reproduce1. скачал, распаковал FAR ночную сборку Far30b4915.x86.20170314
2. в ней вошел в папку с AlReader2, запустил просмотр файла из комстроки:
AlReader2.exe readme.txt
Просмотр открылся нормально, закрыл читалку
3. файл readme.txt переименовал с пробелом: "read me.txt"
4. заново открываю из комстроки:
AlReader2.exe "read me.txt"
Файл не открывается, читалка запустилась в режиме будто я запускал её без аргументов
5. другая попытка:
AlReader2.exe read me.txt
Файл открылся

Additional InformationНа первый взгляд предполагаю, что в фаре изменилась обработка аргументов между версиями 4545 и 4900 и какая-то отдельная виндовая функция (поскольку с другими прогами я проблем не наблюдал) перестала понимать переданные ей аргументы.
Ниже приложу скрины из процмона на эвент открытия файла, на них слева - alreader2, запущенный из фара 4915, справа - тот же alreader2, запущенный из фара 4545. С виду все параметры одинаковые, но разный результат операции, в итоге одна команда в разных версиях приводит к разным результатам
TagsNo tags attached.
Build0
Attached Filespng file icon 1-event.PNG [^] (24,871 bytes) 2017-03-14 15:31


png file icon 2-process.PNG [^] (40,124 bytes) 2017-03-14 15:31


png file icon 3-stack.PNG [^] (64,511 bytes) 2017-03-14 15:32

- Relationships

-  Notes
(0015265)
Andys (reporter)
2017-03-14 15:34
edited on: 2017-03-14 15:39

*пип*.
Прошу прощения, перепутал стороны, на скринах слева - alreader2, запущенный из фара 4545, справа - запущенный из фара 4915

Также, для более понятного описания: пункт 2, "в ней вошел в папку с AlReader2", следует понимать, что я запустил фар 4915 и в нем уже пошел запускать alreader, также только что скачанный (для чистоты эксперимента)

(0015266)
DrKnS (administrator)
2017-03-14 15:52
edited on: 2017-03-14 15:52

Вы запускаете 'AlReader2.exe "read me.txt"' или 'AlReader2.exe "read me.txt"<ПРОБЕЛ>'?

(0015267)
Andys (reporter)
2017-03-14 16:21

Вручную я ничего не набирал, все вставлялось по Ctrl+Enter
Я вначале нажал, потом скопировал/вставил всё содержимое комстроки как они было на момент запуска
(0015268)
Andys (reporter)
2017-03-14 16:23

А точнее, проверил по истории команд, действительно есть пробел.
Типа новая фича для тех, кто пожаловался что после вставления имени файла надо ещё добавить пробел, чтобы продолжить набирать команду без спейса?
(0015269)
DrKnS (administrator)
2017-03-14 16:23

Я понимаю, что вы нажимали Ctrl+Enter, отсюда и вопрос.

Сотрите последний пробел и попробуйте ещё раз.
(0015270)
Andys (reporter)
2017-03-14 16:40

С удаленным пробелом работает нормально в 4915;
Проверил также на старой версии 4545 в итоге мое предположение насчет фичи было неверным
Тест:
1. исходная комстрока для обоих случаев:
'AlReader2.exe "read me.txt" '
2. проверка какая именно комстрока в списке процессов (плагин фара, копировалась command line от начала до позиции по кнопке End)
4545: '"Y:\Download\AlReader2.win32.ru\AlReader2.exe" "read me.txt"'
4915: '"Y:\Download\AlReader2.win32.ru\AlReader2.exe" "read me.txt" '

т.е. новая версия уже не удаляет конечные пробелы
(0015271)
DrKnS (administrator)
2017-03-14 16:41

Это не новая фича, Ctrl+Enter вставлял пробел всегда.

Когда-то Far при запуске обрезал конечные пробелы, где-то между 4545 и 4900 это было убрано, т. к.:
- это бессмысленно - в любых адекватных приложениях всё должно работать что с пробелами, что без;
- другие (например, cmd.exe) ничего не обрезают.

В AlReader, видимо, навелосипедили свой парсер комстроки вместо того, чтобы воспользоваться системным, и навелосипедили не совсем правильно.

Думаю, уместнее будет написать об этом авторам AlReader, а в качестве workaround'a можно написать батник вида "start AlReader2.exe %*" и запускать уже его.
(0015272)
Andys (reporter)
2017-03-14 16:48

хех
Можно это как опцию сделать в конфиге или в ини-файле?
Потому что автору я уже писал давно и много, в основном с просьбами открыть код раз он сам его не дорабатывает. Из читалок это единственная, которую я знаю, которая букмарки может сохранять в файле _в той же папке_ что и книжка (можно перемещать куда хочешь и синхронизировать чем хочешь) и читает все распространенные форматы
(0015273)
DrKnS (administrator)
2017-03-14 17:03

Я не отрицаю достоинства читалки, но опция "резать пробелы или нет" это очень явный костыль.
Опция "добавлять пробел при Ctrl+Enter или нет" имеет больше смысла, но вы её вполне можете сделать сами макросом вида CtrlEnter = "CtrlEnter Backspace", например.
(0015274)
Andys (reporter)
2017-03-14 20:22

Ну тогда ладно, лучше сделаю костыль-обертку для читалки, которая будет парсить строку и потом уже запускать читалку
Можно закрыть с решением что "это не баг"

- Issue History
Date Modified Username Field Change
2017-03-14 15:31 Andys New Issue
2017-03-14 15:31 Andys File Added: 1-event.PNG
2017-03-14 15:31 Andys File Added: 2-process.PNG
2017-03-14 15:32 Andys File Added: 3-stack.PNG
2017-03-14 15:34 Andys Note Added: 0015265
2017-03-14 15:39 Andys Note Edited: 0015265 View Revisions
2017-03-14 15:52 DrKnS Note Added: 0015266
2017-03-14 15:52 DrKnS Note Edited: 0015266 View Revisions
2017-03-14 16:21 Andys Note Added: 0015267
2017-03-14 16:23 Andys Note Added: 0015268
2017-03-14 16:23 DrKnS Note Added: 0015269
2017-03-14 16:40 Andys Note Added: 0015270
2017-03-14 16:41 DrKnS Note Added: 0015271
2017-03-14 16:48 Andys Note Added: 0015272
2017-03-14 17:03 DrKnS Note Added: 0015273
2017-03-14 20:22 Andys Note Added: 0015274
2017-03-14 20:53 DrKnS Build => 0
2017-03-14 20:53 DrKnS Status new => closed
2017-03-14 20:53 DrKnS Assigned To => DrKnS
2017-03-14 20:53 DrKnS Resolution open => no change required



Copyright © 2000 - 2017 MantisBT Team
Powered by Mantis Bugtracker