View Issue Details

IDProjectCategoryView StatusLast Update
0003407Far ManagerCommand Line/Executepublic2017-03-14 17:53
ReporterAndys Assigned ToDrKnS  
PrioritynormalSeveritymajorReproducibilityalways
Status closedResolutionno change required 
Platformx86OSWindowsOS Version10
Product Version3.0 
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

Activities

Andys

2017-03-14 12:31

reporter  

1-event.PNG (24,871 bytes)   
1-event.PNG (24,871 bytes)   

Andys

2017-03-14 12:31

reporter  

2-process.PNG (40,124 bytes)   
2-process.PNG (40,124 bytes)   

Andys

2017-03-14 12:32

reporter  

3-stack.PNG (64,511 bytes)   
3-stack.PNG (64,511 bytes)   

Andys

2017-03-14 12:34

reporter   bugnote:0015265

Last edited: 2017-03-14 12:39

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

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

DrKnS

2017-03-14 12:52

administrator   bugnote:0015266

Last edited: 2017-03-14 12:52

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

Andys

2017-03-14 13:21

reporter   bugnote:0015267

Вручную я ничего не набирал, все вставлялось по Ctrl+Enter
Я вначале нажал, потом скопировал/вставил всё содержимое комстроки как они было на момент запуска

Andys

2017-03-14 13:23

reporter   bugnote:0015268

А точнее, проверил по истории команд, действительно есть пробел.
Типа новая фича для тех, кто пожаловался что после вставления имени файла надо ещё добавить пробел, чтобы продолжить набирать команду без спейса?

DrKnS

2017-03-14 13:23

administrator   bugnote:0015269

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

Сотрите последний пробел и попробуйте ещё раз.

Andys

2017-03-14 13:40

reporter   bugnote:0015270

С удаленным пробелом работает нормально в 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" '

т.е. новая версия уже не удаляет конечные пробелы

DrKnS

2017-03-14 13:41

administrator   bugnote:0015271

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

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

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

Думаю, уместнее будет написать об этом авторам AlReader, а в качестве workaround'a можно написать батник вида "start AlReader2.exe %*" и запускать уже его.

Andys

2017-03-14 13:48

reporter   bugnote:0015272

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

DrKnS

2017-03-14 14:03

administrator   bugnote:0015273

Я не отрицаю достоинства читалки, но опция "резать пробелы или нет" это очень явный костыль.
Опция "добавлять пробел при Ctrl+Enter или нет" имеет больше смысла, но вы её вполне можете сделать сами макросом вида CtrlEnter = "CtrlEnter Backspace", например.

Andys

2017-03-14 17:22

reporter   bugnote:0015274

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

Issue History

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