Дублирующий манифест вызывает "Невозможно создать процесс"
1 James Barrass [2011-04-15 15:43:00]
Я пытаюсь получить приложение для обновления, работающее с UAC, и после некоторого копания мне нужно было включить манифест в мое приложение.
манифест называется MyApp.manifest
. Чтобы включить это в проект, я создал файл RC, который называется MyApp.rc
. Он встроен в файл с именем MyApp.rec
с командой Pre-Build brcc32 $(PROJECTNAME).rc -fo$(PROJECTNAME).rec
Затем в моем DPR я
{$R *.REC}
{$R *.RES}
begin
Application.Initialize;
Это позволяет Delphi обрабатывать такие вещи, как информация о версии.
Все это прекрасно работает, когда приложение скопировано в окна 7.
Я отправился отлаживать приложение сегодня, а моя среда для разработчиков - Windows XP, где я сразу же получаю:
После некоторого дополнительного копания я указал на XN Resource Editor. Что сразу показало следующую проблему:
Первый из этих Манифестов (тот, который отмечен 1) - это MyApp.manifest
(возможно, он работает нормально в Windows 7?) и, конечно же, если я удалю второй манифест, приложение отлично работает. Как ни странно, если я изменю номер в файле RC, число с ним изменится, но второй манифест останется под номером 2.
Я думаю, что второй манифест может иметь какое-то отношение к тем времени исполнения, но отключить его просто не работает (я отключаю флажок, закрываю параметры проекта, открываю параметры проекта и галочку галочку).
так что вызывает появление второго манифеста? и как я могу избавиться от него?
Версия Delphi - 2007
manifest delphi
3 ответа
1 Решение James Barrass [2011-04-15 18:38:00]
Я вернулся в этот проект, немного работая над чем-то другим и удалив существующий файл .res , прежде чем открывать проект
Я думаю, что Delphi кэширует файлы проекта .res в памяти и обновляет его только при компиляции/создании, поскольку эта проблема полностью исчезла.
2 RRUZ [2011-04-15 16:07:00]
Если вы хотите использовать свой собственный манифест, вы должны отключить манифест, созданный delphi, следуя этим шагам в зависимости от вашей версии delphi.
- Удалите из своего проекта
TXPManifest
- Удалите любую ссылку на блок XpMan в своем проекте
- Отключить параметр "Включить темы времени выполнения", присутствующие в проекте → параметры → приложение
1 Ken White [2011-04-15 16:04:00]
Какая версия Delphi? Проверьте предложение uses во всех файлах проекта для UxTheme
; это старый менеджер тем из Майка Лишке в SoftGems, который был включен в VCL. Вы также можете искать XPMan
, который добавляет манифест в Delphi 7; это также от Майка. До включения в VCL он использовал его как бесплатную ОС на своем веб-сайте.
Вам также понадобится выполнить сборку Project- > Build, а не компиляцию (или после изменения настройки тем времени выполнения), чтобы принудительно перекомпилировать все юниты и полностью выполнить исполняемый файл воссоздан.