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


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

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

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

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

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

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

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

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

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

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

Пример фрагмента кода, показывающий запуск и использование сеанса Диспетчера перезапуска с помощью основного установщика, а затем присоединение дополнительного установщика к существующему сеансу, см. в разделе Using Restart Manager with a Secondary Installer.