варианты я вижу, являются:
- сообщить пользователю, чтобы перезапустить браузер после установки/обновления
- сообщить пользователю, чтобы закрыть браузер (ы), прежде чем приступить к установке
Обратите внимание, что у вас все еще могут быть проблемы с заменой DLL. Что, например, Flash делает суффикс имени своего файла (например, npYourPlugin_1_2_77.dll), поэтому блокировки файлов не являются проблемой.
Если вы это сделаете, возможно, вам даже не понадобится перезагрузить браузер, если вы можете позвонить по номеру navigator.plugins.refresh()
(работает с Firefox 17, но не уверен в других браузерах).
Также обратите внимание, что я не уверен в подключении к ActiveX (IE), если вам тоже нужно это поддерживать - возможно, таксилиан будет перекликаться с этим и другими сценариями, которые я не натолкнулся на себя.
Вы рассмотрели основные вещи, которые я бы упомянул; Мне до этого удалось обновить элемент управления IE на месте (используя номер версии в имени файла, как вы предлагаете, добавив его в папку, зависящую от версии), но никогда с FireBreath, и возможно, что-то есть в том, что FireBreath это мешает ему работать, поскольку никто из меня не знает, что он работал с FireBreath. – taxilian
файлы с версией, которую я помог! Спасибо! но мне интересно, как перезагрузить браузер с кода C++ + – user2618420
Если вы имеете в виду от плагина - это действительно не очень хорошая идея. Если вы имеете в виду внешнее приложение (setup, updater), вы можете использовать системные API для (изящно) завершения процесса браузера. Обратите внимание, что это все еще не очень хорошая идея, если вы не спросите пользователя об этом из-за возможной потери данных. Я думаю, что на самом деле перезапуск браузеров - это не тривиальная задача - вы можете запустить двоичные файлы, которые вы только что закрыли, но это может пропустить, например.переменные окружения или настройки, сделанные некоторым вспомогательным приложением, которые действительно начали запуск. –