Aleksandr N Цитата: При использовании портативки, при запуске ругается на отсутствующий ssleay32.dll (как на моей картинке выше), но при этом успешно запускается и всё работает. При копировании библиотек OpenSSL в System32, ругани нет и всё работает.
В заголовке окна с ошибкой я вижу AutoIt. Судя по всему, ругается именно скрипт, пытающийся сделать VB портативным, а не сам VB. Раз установленная версия работает (и уж тем более, раз несмотря на ошибку, портативный VB всй равно запускается), то все вопросы исключительно к авторам скрипта.
Цитата: Проверь в исходниках указания на пути библиотек. Считаю что не нужно боксу их искать в System32.
Путь библиотек почти никто почти никогда под виндами не указывает. Windows при запуске любой программы по умолчанию ищет библиотеки сначала в каталоге с программой (где они у меня и лежат), потом в PATH.
Цитата: Ты упомянул что при подписании файлов компилятор выставляет флаг какой-то... Погоди, а зачем в компиляторе указывать что после компиляции нужно подписать файлы??? Пускай при компиляции ничего не подписывается и флаг никакой не выставится. А потом уж ручками каждый файл подписать. Муторно конечно каждый подписывать, но для уверенности выявления проблемы можно попробовать.
Уверенность выявления проблемы у меня и так уже есть. Я в собранных и подписанных файлах этот флаг сбрасывал, и всё начинало работать. Собственно, так я и понял, что причина именно в нём. Так что никакое ручное подписывание не требуется. (Я один раз вынужден был его делать, на ранних этапах изучения процедуры сборки; больше не хочу. Это дико муторно, т.к. кроме подписывания файлов надо ещё перегенерировать драйверные каталоги, и их отдельно подписывать.)
Что касается флага: он выставляется не
при подписывании, а
заодно с подписыванием. И не компилятором. Для тех файлов, которые компилируются из исходников, этот флаг ставится линковщиком. А для файлов, которые просто берутся в готовом виде (msvc*, OpenSSL и пр.), этот флаг выставляется утилитой editbin. Установка или неустановка этого флага зависит от выбранного режима подписывания, от включения/выключения харденинга и от ещё некоторых дополнительных условий. Так что я не могу просто взять и отключить этот флаг. Вернее, могу, но тогда перестанет корректно работать сборка с включённым харденингом и/или с полноценной подписью, и значит, я не смогу такую модификацию предложить в Oracle (чтобы не проделывать одну и ту же работу при выходе каждой новой версии). Кроме того, в MSDN говорится, что этот флаг в 64-битных драйверах обязан быть включённым. Что будет, если его выключить, не уточняется, то есть мне ещё и с этой особенностью придётся досконально разобраться, прежде чем модифицировать сборочные правила…