Поделиться через


Использование диспетчера перезапуска с основным установщиком

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

Использование диспетчера перезапуска с основным установщиком

  1. Установщик вызывает функцию RmStartSession , чтобы запустить сеанс Restart Manager и получить дескриптор сеанса и ключ.

  2. Установщик вызывает функцию RmRegisterResources для регистрации ресурсов. Диспетчер перезапуска может использовать только зарегистрированные ресурсы, чтобы определить, какие приложения и службы необходимо завершить работу и перезапустить. Все ресурсы, на которые может повлиять установка, должны быть зарегистрированы в сеансе. Ресурсы можно определить по имени файла, короткому имени службы или структуре RM_UNIQUE_PROCESS .

  3. Установщик вызывает функцию RmGetList для получения массива RM_PROCESS_INFO структур, включаемых в список всех приложений и служб, которые должны быть завершены и перезапущены.

    Если значение параметра lpdwRebootReason , возвращаемое функцией RmGetList , не равно нулю, диспетчер перезапуска не может освободить зарегистрированный ресурс после завершения работы приложения или службы. В этом случае для продолжения установки требуется завершение работы и перезагрузка системы. Установщик должен запрашивать у пользователя действие, останавливать программы или службы, а также планировать завершение работы и перезапуск системы.

    Если значение параметра lpdwRebootReason , возвращаемого функцией RmGetList , равно нулю, установщик должен вызвать функцию RmShutdown . Это завершает работу служб и приложений, использующих зарегистрированные ресурсы. Затем установщик должен выполнить изменения системы, необходимые для завершения установки. Наконец, установщик должен вызвать функцию RmRestart , чтобы диспетчер перезапуска смог перезапустить приложения, которые были завершены и зарегистрированы для перезапуска.

  4. Установщик может использовать функцию RmAddFilter , чтобы предотвратить завершение работы или перезапуск определенных приложений и служб с помощью операций перезапуска диспетчера. Функция RmGetFilterList возвращает список приложений и служб, которые необходимо отфильтровать после завершения работы и перезапуска. Функция RmRemoveFilter удаляет фильтр.

  5. Установщик вызывает функцию RmEndSession , чтобы закрыть сеанс Диспетчера перезапуска.

Пример фрагмента кода, демонстрирующего запуск и использование сеанса диспетчера перезапуска с помощью основного установщика, а затем присоединение дополнительного установщика к существующему сеансу, см. в разделе Использование диспетчера перезапуска с дополнительным установщиком.