Delphi manifest windows 10

Добрый день. Поначалу у меня была проблема с drag and drop в lisbox, но так, как тема ушла далеко в сторону, я решил создать другую тему уже конкретно по манифесту.
В процессе своих поисков информации по манифестам в целом я нашел 3 отличных источника:
1)

Исследовав эти 3 источника я сделал следующее: 1) Создал в блокноте файл vista.manifest c таким кодом: 2) Создал в блокноте файл vista.rc со строкой: 3) Перекинул оба файла и ярлык brcc32 в одну папку.

4) Перетащил файл vista.rc на ярлык brcc32. В итоге должен был получиться файл vista.res, однако ничего не произошло.
Итак, что же я сделал неправильно? манифест
Постоянно компилится манифест в программу , как убрать? delphi xe3 Манифест Windows XP
Кинул в Dtamodule1. Манифест ХР все стало в стили ХП как теперь отключить этот стиль 🙂 . Удаление. манифест
Всем привет! Ребят хочу собрать исполняемый джарник. В фал манифеста пишу: Main-Class. Манифест
Не подскажите, как прилепить manifest к проекту? Версия Дельфи какая? Опять D7? В новых-то все гораздо проще, в настройках приложения выбирается манифест.

Кстати, если переименовать манифест в имя_exe_файла.manifest, и положить рядом с EXE-шником, то он и так подхватится, не надо ничего компилировать. Проверено было даже на D6. Версия D7. Только что попробовал поработать с bcc32 в командой строке. Пишет: «Fatal error File read failed». Попробую положить рядом с exeшником, но боюсь, как бы у меня в самом манифесте ошибок не было. Добавлено через 5 минут
Нет, не работает. Переименовал .manifest свой, положил в папку, проект перекомпилил, но ничего не изменилось.
Сейчас полазаю по опциям проекта в своей delphi 2009, она у меня тоже есть. Итак, добавление манифеста в опциях проекта я не нашёл, хотя и не особо усердно искал, ведь brcc32 пишет «Fatal error File read failed», что значит, что код манифеста не совсем верен, либо что brcc32 не работает корректно(что не очень правдоподобно). Нашёл ещё один источник, который гласит: Here are some links Delphi and Windows Vista User Account Control

This will create a new resource file called YourApplicationName.REC Copy this YourApplicationName.REC file in to the resource path of your application. Include this resource file into the DPR of you application, Finally build your application — it is now ready to get admin rights Нет, brcc32 всё равно не желает это компилировать. С 2009 Delphi всё вроде бы нормально. Стоит открыть Delphi 7, как вылетает куча ошибок. Сначала: А стоит убрать IdCustomTCPServer из uses, как появляется это: А в Delphi 2009 я работать не могу, ведь моему проекту понадобится Indy, а Indy 10 я пользоваться не умею. Но уже что-то. Добавлено через 10 минут
angstrom, при попытке создать ваш манифест, а потом создать файл .rc с кодом: «1 24 «vista.manifest»», последующем перенесении и того и другого файлов в каталог проекта, добавлении файла .rc в проект и попытке скомпилировать программу в Delphi 7 выдает всё то же «File read failed».

Добавлено через 9 минут
Впрочем ладно. Манифест, работающий хоть в Delphi 2009 — уже хорошо. Попробую с Indy 10 подружиться.
Всем спасибо. Я так понял это файл манифеста и чтоб он работал егонужно в ресурсы обязательно засовывать? Кстати мне файл манифеста нужен под вин-7 максимальную. Да не мне скорее всего не тот манифест с вкладки Win32 нужен, а дело вот в чем- на нашем форуме нашел статейку Запуск от имени Администратора вот с таким содержанием: Просто приатач к своему ехе файл манифеста, который будет запрашивать права админа. Как понятно из этих слов- мне файл какого-то манифеста нужен для прав Админа!
Тока как это сделать незнаю. Добавлено через 4 минуты
Ну хоть это хорошо что с ресурсами работать непридется, нужно попробовать как то так сделать.

Добавлено через 9 минут
Вобщем нужен не простой файл манифеста а файл манифеста с правами Админа!
Вот как-то так. Вложения

rc.rar (474 байт, 179 просмотров)

Попробовал программу и она с правами администратора так и не запустилась. angstrom был ли тот в архиве файл с правами Админа? Может надо новый сделать? Программапросто стала работать так как будто я С вкладки Вин-32 кинул ХП- мнифест. В общем сейчас делаю так:

1). Беру файл brcc32 ложу его в папку с проектом. 2). Создаю текстовый файл man.txt с таким содержанием: 3). Сохраняю как man.rc 4). Создаю бат файл с таким содержанием:
brcc32.exe man.rc
pause
5). Кликаю по бат-файлу запускается brcc32.exe и кидает мне такую ошибку-
C:\Users\Николай\Documents\ДЕЛФИ_ИСХОДНИКИ\Манифест_2>brcc32 .exe man.rc
Borland Resource Compiler Version 5.40
Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved. Error man.rc 1 1: Expecting resource name or resource type name

C:\Users\Николай\Documents\ДЕЛФИ_ИСХОДНИКИ\Манифест_2>pause
Для продолжения нажмите любую клавишу . . . И естественно ни какой Res файл не создается! Че я делаю не так? Или тот текстовик нетакой? Хотя я его нашел сдесь же на форуме и утверждали что код там рабочий. NIKOLAYY, всё не так. Надо было ознакомиться со всем выше написанным и с источниками которые приводил я. Нужно: 1) Создать файл .manifest в блокноте с содержанием манифеста.
2) Создать файл .rc в том же блокноте с содержанием «1 24 Имя манифеста.расширение»
3) Скомпилировать .rc файл brcc32(что у меня не получилось, потому я добавил его в проект и нажал build).
4) Получаешь .res файл Добавлено через 1 минуту
5) Пишешь над uses: Добавлено через 1 минуту
Вот на пункте 5 у меня в 2007 delphi, которую я только поставил, при запуске программы пишет «Unable to create process». Пытаюсь понять почему.

Добавлено через 1 минуту
UI, ваш способ у меня так и не подействовал. Может дело в Windows 7 с её параноидальными средствами защиты? Добавлено через 32 секунды
А brcc32 у меня видимо был нерабочим. Добавлено через 1 минуту
Убежденный, а можно поподробнее, с примерами? Я с манифестами до этого времени не работал. Не совсем представляю себе, что писать в этих элементах. Добавлено через 3 минуты
Да, и перед пунктом 5 я удалил файл .rc из проекта так, как была ошибка «Duplicate resource» Источник

Справка Delphi 7 не работает в Windows 10

Пробую бесплатный сыр от Microsoft: обновил систему до Windows 10. Я так и думал, что справка Delphi 7 сразу не заработает, но надеялся победить установкой WinHelp32. Однако — не получилось (запустил версию для Win 8, «обновление неприменимо к данной версии Windows»). Кто-нибудь уже узнал, как под Windows 10 запускать справку Delphi 7? Добавлено через 35 минут
Возможно, программистам Delphi 7 вообще не стоит переходить на Win 10?

Delphi не работает справка
Здравствуйте. Не стал бы отвлекать профессиональных программистов и администраторов от более. Справка в Delphi
Здравствуйте! Мне надо добавить справку в программу, как это сделать. И надо файл в .rtf формате. Справка в Delphi
Нужна прикрепить CHM справку в Праграму в Delphi 7. Кто знает как это сделать. Справка в Delphi
Подскажите где можна достать русскоязычную справку по Delphi! спешить вообще некуда, пусть допилят, приведут в нормальный вид, я лично годиков через наверное только пересяду на 10, когда уже будут внятные сборки без левого непонятного рекламного мусора в ней ну и + игрушки на 12 директе сейчас поставил только на виртуалку, ничего особенного. и фиг там будет только 10 винда и все. аминь. придумают новий директ как милинькие новую винду заделают, уже проходили, так что паника вообще не усместна

mss, это просто супер. :rofl: :bravo: Уфф. А я решил проблему.
Подменить файло — дело нехитрое, а вот поиск при таком методе не работает.
Что оказалось — все советчики забыли про один важный (ftsrch.dll) файл.
Алгоритм будет такой (ВНИМАНИЕ! Только для Windows10 x32/x64).
1. Качаем последний msu (для винды 8.1, для нашего языка и нашей битности x64 или x32) — это хотфикс KB917607
2. Качаем распаковщик-собиратель http://www.trishtech.com/downloads/magic.zip
Помещаем в пустую папку три файла — скрипт Install.cmd из вложения, загруженный msu и magic.exe (из архива)
3. Запускаем magic.exe. Это магия! Файлы появились.
4. Запускаем скрипт из-под админа (там основная мутотень в скрипте с правами, владельцем и правильным добавлением в реестр, скрипт переделал на скорую руку из чьего-то, цопирайт не указываю)
В результате будет скопировано:
Файлы:
winhlp32.exe
ftsrch.dll
и языковые пакеты к ним
winhlp32.exe.mui ftsrch.dll.mui
(папки ru-RU и en-US)
Если ВДРУГ не заработает — доложить файлы
ftlx0411.dll (парсер японских слов)
и
ftlx041e.dll (парсер тайских) Минус решения — sfc /scannow (если запустить) затрет winhlp32, так что заветную папочку далеко не прячьте. Вложения

Install.zip (1.0 Кб, 150 просмотров)

Все сделал, правда через «одно место».
Я этот файл, к которому доступ был запрещен, ну «winhlp32.exe.mui» (по ходу их в системе 2, ну сколько и языков на ПК), «Unlocker» (тут упомянутой), разлочил, и опять запустил «Install.cmd». Причем надо отдать должное «Unlocker», полезная программка (не раз выручала) Добавлено через 10 минут
хотя и предупреждение » this app might not work correctly (Borland Delphi 7.0 isn’t compatible this version of Windows) » при запуске Delphi, немного нервирует

AllFree Использовать или нет — вопрос не только религиозных предпочтений. Например у нас проект на BCB6 (размер исходников чуть меньше 3 гиг). Так вот, тот веселый бородатый мужик из Embarcadero сказал мне удивительную вещь, что смысла портировать под новые среды разработки — нет, это имеет смысл только в том случае, если начат новый проект.
А режим совместимости НЕ НУЖЕН и даже вреден, если работает под текущим. Kostantin-78
«тут» советуют я (или те, кто натолкнулся на то, что я писал)
Но в этом «тут» подлые мелкомягкие выпилили почти все, что я писал. Install.cmd запускается из-под админа.
Зачем понадобился Unlocker — мне непонятно.
Если winhlp32.exe не запущен (скрипт этот процесс прибивает первым делом) — языковая обвязка не загружается/
Или у Вас что-то иное захватило файл (например вирус/антивирус). .
Лайфхак. Важно удалять файловый поток «имяфайла:Zone.Identifier:$DATA» для файлов полученных по сети (ну, или прописывать в этот файл правильную циферку, иначе параноидальный UAC (даже отключенный) может попортить жизнь понизив NTFS права до уровня «Гость». Если удалять лень — входим в свойства файла и жмакаем кнопку «Разблокировать» Скрипт делает следующее: 0. Если запущена ранее поставленная неправильная справка, то прекращает ее работу 1. Копирует файлы в правильные папки, если винда «из коробки» русскоязычная (нацлокаль ru-ru), то:
winhlp32.exe.mui в папки базовой и «национальной» локали
%SystemRoot%\en-US\winhlp32.exe.mui
и в
%SystemRoot%\ru-RU\winhlp32.exe.mui winhlp32.exe и ftsrch.dll в %SystemRoot%\
%SystemRoot%\winhlp32.exe
%SystemRoot%\ftsrch.dll

2. Выставляет скопированным файлам NTFS права для текущего пользователя 3. Прописывает реестр согласно разрядности:
x32
ветка HKLM\SOFTWARE\Microsoft\WinHelp
поле AllowProgrammaticMacros тип DWORD значение 1
поле AllowIntranetAccess тип DWORD значение 1
x64
ветка HKLM\SOFTWARE\Microsoft\WinHelp
поле AllowProgrammaticMacros тип DWORD значение 1
поле AllowIntranetAccess тип DWORD значение 1
ветка HKLM\SOFTWARE\Wow6432Node\Microsoft\WinHelp
поле AllowProgrammaticMacros тип DWORD значение 1
поле AllowIntranetAccess тип DWORD значение 1 Источник

Зачем Win32-приложению манифест?

Недавно на руборде в разделе Программирование был задан вопрос: «Зачем Win32-приложению манифест? На что он влияет?». Первое, что сразу приходит в голову большинству программистов — это темы оформления. Но на самом деле в современных виндах манифест нужен не только для этого. Я подумал и написал пять ключевых аспектов, на которые влияет манифест или его отсутствие. После этого сразу несколько человек попросили оформить этот пост в виде более развернутой статьи. Для начала предлагаю вспомнить, как вообще в Windows появились манифесты, и как они развивались.

История манифеста

В древние времена в мире Win95/98 царил ад, точнее DLL hell. Возник он из-за того, что Windows задумывалась как идеальная система. Все приложения в ней всегда должны были писаться с использованием самых свежих версий системных библиотек. А различные версии самих библиотек должны были быть взаимозаменяемыми. Реальность быстро доказала всем, что для популярной операционки это несбыточная мечта, так и возник ад. Каждое второе приложение во время инсталляции перезаписывало системные библиотеки нужными ему версиями. В результате после установки приложения X установленное ранее приложение Y начинало глючить. А после переустановки приложения Y глючить начинало приложение X. В общем юзерам жилось весело. Для решения этой проблемы в Windows XP появилась технология Side-by-side Assembly (SxS). Суть ее заключалась в том, что приложение могло явно указать, с какой версией библиотеки оно желает работать. Эта информация могла указываться либо в специальном файле .manifest, либо в ресурсах приложения в разделе Manifest. В самой ХР на основе новой технологии реализовали одну из самых заметных новых фишек системы — темы оформления.

Всем был хорош SxS кроме одного — он был ужасно неудобен для программиста. В 99% случаев манифест применялся только для включения тех самых тем оформления, и ни для чего больше. Разработчикам винды стало ясно, что нужен новый, более простой в использовании способ указать поддерживаемые версии системных библиотек. Тогда они придумали простое правило: в пределах одной версии системы интерфейс и поведение этих библиотек не изменяется. Нужно было только каким то образом научится определять какая их версия требуется конкретному приложению. Так в Windows 7 в манифесте появилась секция Compatibility, где можно указать с какими версиями ОС тестировалось приложение.
Также в манифесте начиная с Windows Vista появилось еще несколько секций, обо всех о них ниже.

Функции манифеста

    Активация тем оформления (Visual Styles)
    Эта технология появилась в ХР и полностью основана на SxS. Работает просто: вы запрашиваете у системы ComCtl32.dll шестой версии, и — вуаля — все стандартные контролы рисуются согласно с активированной в системе темой. Если же вы не упомянете в манифесте ComCtl32.dll, или манифест вообще будет отсутствовать в приложении, то система по умолчанию загрузит ComCtl32.dll пятой версии, которая отрисовывает контролы в стиле Win95. Кроме поддержки тем оформления, шестая версия ComCtl32.dll содержит кое-какой функционал, которого нету в пятой версии. Поэтому если отключить темы оформления, некоторые приложения будут работать и выглядеть не так, как задумывали их авторы.

Справа тоже самое приложение без манифеста: Взаимодействие с UAC имеет несколько аспектов:

    Ключ requestedExecutionLevel.level позволяет указать требуемый приложению уровень прав пользователя. К примеру если указать requireAdministrator, то приложению будут предоставлены права администратора (если пользователь разрешит).

Запрос разрешения пользователя:

Если вся секция по взаимодействию с UAC отсутствует в манифесте, к приложению будет применена виртуализация файловой системы и реестра. Если такое приложение попытается записать что то в защищенные папки типа «Program files», оно будет перенаправлено в папку “%userprofile%\AppData\Local\VirtualStore\Program files». Аналогично, попытки записи в раздел реестра HKEY_LOCAL_MACHINE будут перенаправлены в «HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE». Естественно, сделанные таким образом изменения будут видны только приложениям, запущенным в режиме виртуализации. Виртуализация файловой системы в деле:

  • Ключ requestedExecutionLevel.uiAccess позволяет приложениям, запущенным без прав администратора, взаимодействовать с окнами приложений, запущенных с правами администратора. Это может потребоваться экранным клавиатурам, приложениям типа AutoIt, экранным читалкам, тестовым и отладочным тулзам. Чтобы этот ключ сработал, приложение должно быть подписано сертификатом Microsoft Authenticode.
  • Управление DPI-масштабированием
    С древнейших времен винда имеет механизм масштабирования интерфейса в зависимости от DPI монитора (тут говорится, что все началось в XP, но мне кажется, что раньше). В те времена эта настройка выставлялась только вручную, наверное из-за отсутствия EDID. Популярностью она не пользовалась, возможно потому, что запрятана была далеко, а возможно потому, что мониторов с большим разрешением было очень-очень мало. Кроме того, большая часть работы, необходимой для поддержки масштабирования, была отдана на откуп самим приложениям и их авторам. А программисты, как известно, люди весьма ленивые, поэтому куча софта для винды писалась в предположении, что DPI всегда равен стандартному значению 96. Очень часто встречалась ситуация, когда в приложении использовались библиотеки поддерживающие нестандартный DPI, в то время как код самого приложения его не поддерживал. Это приводило к появлению ужасных артефактов в интерфейсе приложения, стоило пользователю выставить DPI, к примеру, в значение 120 (масштабирование 125%): Разработчики Висты не стерпели подобного безобразия, и заложили в DWM возможность производить масштабирование самостоятельно, а приложениям врать, что DPI по прежнему равен 96. Причем зависящие от него системные настройки, разрешение монитора и даже положение мыши, также пересчитываются. К сожалению разработчики Висты небыли волшебниками, поэтому масштабирование DWM производит с помощью простых алгоритмов растягивания изображений. И если интерфейс приложения нужно увеличить, то происходит замыливание картинки. Представьте что было бы, если бы разработчики Фотошопа не могли это отключить. Таких бунтов на корабле никто не хотел, поэтому появилась возможность указать в манифесте, что ваше приложение таки умеет нормально масштабировать свой интерфейс, и помощь DWM ему не нужна. За это отвечает параметр dpiAware. Тут правда следует отметить, что по умолчанию масштабирование силами DWM включается при увеличении 150% и выше. Видимо в Microsoft посчитали, что при масштабировании 125% артефакты как на скриншоте выше вполне терпимы.

    Слева масштабирование силами DWM, а справа — самого приложения: В Windows 8.1 появилась возможность указывать разный масштаб разным мониторам, если подключено сразу несколько. Соответственно у ключа dpiAware появилось новое значение «True/PM». Оно означает, что приложение умеет динамически изменять масштаб своего интерфейса при переносе окон с одного монитора на другой. Декларирование совместимости
    Работает очень просто: программист тестирует свое приложение в определенной версии винды, и если все работает как надо, добавляет GUID этой версии в манифест. Наиболее интересен вопрос: «На что влияют эти GUID-ы?» Пока что список различий в поведении системных библиотек невелик. Наиболее интересно упоминание об оптимизации RPC. Получается что приложения, задекларировавшие совместимость с семеркой, будут работать быстрее.
    В будущем этот раздел манифеста наверняка будет играть большую роль чем сейчас. Ведь в винде полно разных хаков призванных обеспечивать совместимость. И теперь есть возможность оградить от них нормальные приложения. Если GUID-ы полностью отсутствуют в манифесте, то к приложению применяются правила как к совместимому с Вистой: Источник