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


Инициализация приложения

Чтобы включить функции установщика, приложение должно вызывать ряд функций при инициализации. Для получения дополнительной информации см. раздел , посвящённый механизму установки. Ниже описано, как использовать установщик для инициализации приложения:

Инициализация приложения

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

    Код продукта является обязательным параметром для многих функций установщика.

  2. Вызовите функцию MsiGetUserInfo для сбора сведений о пользователе при первом запуске приложения.

    Если вызов MsiGetUserInfo завершается ошибкой, вызовите функцию MsiCollectUserInfo для сбора сведений о пользователе.

  3. При необходимости отобразите пользовательский интерфейс по умолчанию, вызвав функцию MsiSetInternalUI.

    Чтобы создать собственный пользовательский интерфейс, зарегистрируйте его в установщике, вызвав функцию MsiSetExternalUI.

  4. Вызовите функцию MsiEnableLog, чтобы задать уровень ведения журнала.

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

    • Запрашивайте установщик по отдельным функциям. Например, прежде чем приложение рисует кнопку или элемент меню, приложение вызывает функцию MsiQueryFeatureState, чтобы установщик смог проверить доступность функции.
    • Можно перечислить все доступные функции за раз, вызвав функцию MsiEnumFeatures. Чтобы использовать эту функцию, приложение должно вызывать MsiEnumFeatures многократно при добавке индекса.
  6. Получите подробные сведения о текущей установке путем многократного вызова следующих функций перечисления, добавив переменную индекса для каждого вызова:

    • Вызовите функцию MsiEnumProducts, чтобы перечислить продукты, зарегистрированные в установщике.
    • Вызовите функцию MsiEnumComponents для перечисления компонентов.
    • Вызовите функцию MsiEnumComponentQualifiers, чтобы перечислить квалификаторы компонентов.
    • Вызовите функциюmsiEnumClients, чтобы перечислить продукты для определенного компонента.

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