Dmitry Develop: post #338 — TG.ME

Dmitry Developpython32InWinPE.png
Продолжение предыдущей публикации.

Решил переписывать batch скрипт на python.
Язык мне этот нравится, некоторый опыт на нём я уже имею, интерпретатор весит мало, а сверхвысокая производительность не нужна.

Изначально я скачал только 32 битный python с расчётом на то, что такая разрядность будет универсальнее, так как сможет запускаться как на 32, так и на 64 битном оборудовании / установщике.
Но при запуске я получил ошибку, который в первый раз увидел:
"Не удалось запустить приложение, поскольку его параллельная конфигурация неправильна".
("The application has failed to start because its side-by-side configuration is incorrect")

Прочитал информацию по этой ошибке и подумал, что дело в отсутствующих зависимостях.

В документации на python написано, что "The embedded distribution does not include the Microsoft C Runtime and it is the responsibility of the application installer to provide this", поэтому я подумал, что легко не будет.

Поэтому начал искать способ разрешить эти зависимости.
Скачал vc redist и искал способы как-то распаковать все нужные мне DLL библиотеки без их установки.
Открыть как архив в 7zip ничего полезного не дало.
Вспомнил про msiexec, но установочный файл формата exe.
В документации на vc redist нашёл аргумент командной строки layout, который "The /layout option copies the complete contents of the Redistributable in the current directory", но почему-то после запуска ничего не появилось ни в текущей рабочей папке, ни в папке temp.

Позже на форуме microsoft я нашёл тему с похожей проблемой.
В итоге при помощи google и какой-то древнего форума нашёл программу UniExtract2, которая умеет распаковывать различные форматы архивов и установщиков microsoft, и это помогло достать все нужные DLL.

Но прежде чем их подкидывать в папку python, я решил попробовать скачать ещё 64 битную версию и попробовать ещё раз.
И о чудо, в этот раз интерпретатор python смог запуститься в среде winPE и потом даже корректно выполнить скрипт!

Я, конечно, такого не ожидал.
Как мне казалось, это не какая-то простая программа, не самодостаточная, и не без внешних зависимостей.
Поэтому обязательно должно что-то пойти не так, ведь я использую программу в тех условиях, в которых разработчики, наверное, и не предполагали.

Но почему-то на 64 битном оборудовании и на такой же разрядности установщике 32 битная программа не запустилась.
Возможно, дело просто в отсутствии или по умолчанию выключенной подсистеме WoW64 в winPE.
В итоге распакованный vc redist не пригодился, но на всякий случай я его сохраню, да и опыт оказался очень интересным и полезным.

ссылка на канал | ссылка на группу
👎2👍1
February 10, 2025 565