Open OSPanel opened 1 year ago
Копнул глубже, сравнил конфиги. Как оказалось, программа падает из-за отсутствия тасков в xml файле. Почему падает, не понятно, т.к. при вызове программы из другого процесса никакие таски не вызываются. Вместо вот этого куска конфигурации:
<key name="Tasks" modified="2022-12-24 10:24:25" build="220807">
<value name="Count" type="long" data="14"/>
<key name="Task1" modified="2022-12-24 10:24:25" build="220807">
<value name="Name" type="string" data="{Shells::cmd}"/>
<value name="Flags" type="dword" data="00000002"/>
<value name="Hotkey" type="dword" data="00000000"/>
<value name="GuiArgs" type="string" data=""/>
<value name="Active" type="long" data="0"/>
<value name="Count" type="long" data="1"/>
<value name="Cmd1" type="string" data='cmd.exe /k "%ConEmuBaseDir%\CmdInit.cmd"'/>
</key>
<key name="Task2" modified="2022-12-24 10:24:25" build="220807">
<value name="Name" type="string" data="{Shells::cmd (Admin)}"/>
<value name="Flags" type="dword" data="00000004"/>
<value name="Hotkey" type="dword" data="00000000"/>
<value name="GuiArgs" type="string" data=""/>
<value name="Active" type="long" data="0"/>
<value name="Count" type="long" data="1"/>
<value name="Cmd1" type="string" data='cmd.exe /k "%ConEmuBaseDir%\CmdInit.cmd" -new_console:a'/>
</key>
<key name="Task3" modified="2022-12-24 10:24:25" build="220807">
<value name="Name" type="string" data="{Shells::cmd-32}"/>
<value name="Flags" type="dword" data="00000004"/>
<value name="Hotkey" type="dword" data="00000000"/>
<value name="GuiArgs" type="string" data=""/>
<value name="Active" type="long" data="0"/>
<value name="Count" type="long" data="1"/>
<value name="Cmd1" type="string" data='"%windir%\syswow64\cmd.exe" /k "%ConEmuBaseDir%\CmdInit.cmd"'/>
</key>
... и так далее ..
</key>
записывается такой:
<key name="Tasks" modified="2022-12-24 10:24:25" build="220807">
<value name="Count" type="long" data="0"/>
</key>
и случается вылет conemu с кодом исключения: 0xc0000374.
Получается что нужно исправить 2 момента:
Самое интересное то, что в программе даже "из коробки" при первом запуске и последующих (до первого повторного сохранения настроек) идёт пустой портативный конфиг, хотя все таски в окне настроек отображаются, т.е. они как бы есть, но в конфиге их нет.
Пробую портативную версию ConEmu, чистую свежераспакованную. Один раз после распаковки запустил, выбрал место хранения настроек C:\ConEmu\ConEmu\ConEmu.xml и язык, всё.
Версия: ConEmu 220807 x64, но проблема и на многих других версиях ConEmu и уже очень давно. Система: Windows 10 Pro 22H2 x64
В чём суть - ConEmu не может запуститься из другого процесса, процесс ConEmu крашится при каждом вызове. Я вызываю ConEmu из программы на Delphi простейшим способом:
ShellExecute( GetDesktopWindow( ), '', 'C:\ConEmu\ConEmu.exe -Single -Dir "моя_папка"', nil, nil, SW_SHOWNORMAL )
Сообщение в лог Windows:
Скорее всего эта проблема имеет отношение и к багу 2330, т.к. ошибка 0xc0000374 идентична.
Как воспроизвести проблему тем, у кого программа уже была в использовании, т.е. не на свежей:
После сброса и сохранения настроек имеем размер файла с настройками равным 36 КБ. Программа при этом не запускается из другого процесса, крашится.
Ок сохраняем настройки и запускаем программу. Она работает, но по прежнему не запускается из другого процесса. Размер файла с настройками по прежнему 36 КБ.
Размер файла с настройками уже 44 КБ, хотя мы ничего не меняли и не настраивали после сброса и сохранения настроек.
По итогу полагаю, что проблема или в программе или в чудо-окошке настройщика, которое появляется при первом запуске и после сброса настроек. Видимо где-то не полностью создаются настройки после первого запуска и каждый раз при сбросе настроек, поэтому в программе что-то работает не правильно и она падает до момента, пока ты её снова не запустишь и снова не сохранишь настройки.
ВРЕМЕННОЕ РЕШЕНИЕ
Пока этот баг не исправлен проблема с 0xc0000374 решается вышеописанным способом, т.е. ещё раз открыть настройки и ещё раз их сохранить, можно даже ничего не трогая.