#inno-setup #freeze
#inno-setup #замораживание
Вопрос:
Я использую пользовательскую DLL внутри мастера InnoSetup.
Все работает хорошо.
За исключением того, что ПОСЛЕ успешного завершения установки основные окна графического интерфейса закрываются (как и ожидалось), но значок остается на панели задач.
(процесс установки все еще существует и может быть легко удален из диспетчера задач)
Я предполагаю, что DLL оставляет какой-то неизданный ресурс или ссылку, и код завершения InnoSetup ожидает его. Какие-либо намеки на конкретные ресурсы, которые ожидает IS?
Спасибо
Комментарии:
1. 1) Есть ли у вас исходники для этой dll? Проверьте их. 2) Проверьте функции экспорта для этой библиотеки, если какой-либо экспорт вызывается InitXYZ(), возможно, UNinitXYZ() тоже существует
Ответ №1:
После значительной отладки и выдергивания волос возникает тупиковый код завершения модуля Delphi.
Если потоки запускаются / завершаются в коде завершения, корректный код будет зависать, когда innosetup попытается освободить dll.
Я знаю, что процедуры DLL_THREAD_ATTACH сериализуются Windows, так что, вероятно, это проблема. Сам Innosetup написан на delphi, и это может быть воспроизведено простой программой defhi, которая вызывает delphi DLL, которая вызывает delphi DLL, которая передает код завершения потока в процедуре завершения модуля
Надеюсь, это поможет кому-то в будущем