Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Использование манифеста для корректного отображения версии ОС в приложениях на Delphi

Delphi , ОС и Железо , Windows

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

Проблема с GetVersionEx

Разработчик столкнулся с проблемой, когда функция GetVersionEx() возвращала информацию о версии ОС как 6.2, даже после добавления манифеста example.manifest рядом с исполняемым файлом example.exe. Это было препятствием для корректной работы приложения, поскольку от версии ОС зависят многие аспекты поведения программы.

Пример манифеста

В примере манифеста, предоставленного разработчиком, содержится информация о зависимости от компонента Microsoft.Windows.Common-Controls версии 6.0, уровне доверия и перечне поддерживаемых версий Windows.

<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="*"
      />
    </dependentAssembly>
  </dependency>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="asInvoker"
          uiAccess="false"
        />
      </requestedPrivileges>
    </security>
  </trustInfo>
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
      <!-- Другие supportedOS -->
    </application>
  </compatibility>
</assembly>

Решение проблемы

Проблема была решена путем изменения имени файла манифеста на example.exe.manifest и последующей инкрементации встроенного в исполняемый файл. Согласно рекомендациям, настройки supportedOS в внешнем манифесте игнорируются, и поэтому лучше использовать встроенный манифест как часть автоматизированного процесса сборки.

Варианты реализации

  1. Использование утилит для редактирования ресурсов, таких как Resource Tuner, для добавления манифеста в файл ресурсов .res.
  2. Использование настроек проекта в новейших версиях Delphi, которые позволяют включить пользовательский манифест в автоматизированный процесс сборки.
Project Options -> Application -> Runtime Themes -> Use custom manifest

Пример кода на Object Pascal

// Пример кода для иллюстрации, но не используется в данном контексте
procedure TForm1.FormCreate(Sender: TObject);
begin
  // ...
end;

Выводы

Для корректного отображения версии ОС в приложениях на Delphi, необходимо правильно интегрировать манифест в процесс сборки. Это позволит обеспечить совместимость приложения с различными версиями Windows и избежать проблем при работе с функциями, такими как GetVersionEx().

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

Создано по материалам из источника по ссылке.

При разработке приложений на Delphi для обеспечения совместимости с разными версиями Windows важно правильно настроить манифест приложения, чтобы корректно отображалась версия ОС в функциях, таких как `GetVersionEx`.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Windows ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 09:57:24/0.0061230659484863/0