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


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

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

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

  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, то все элементы перечислены, и функция не должна вызываться снова.