Как мне создать манифест для установщика Windows? - PullRequest
3 голосов
/ 11 сентября 2009

У нас есть установщик для нашего приложения, который должен быть загружен и запущен с правами администратора, как и многие другие установщики. Однако установщик не имеет названия «setup.exe», поэтому Windows не определяет его автоматически как требующий повышения прав для запуска.

Изменение имени установщика, чтобы сделать его должным образом правдоподобным, звучит довольно откровенно. В этой статье много говорится о UAC и повышении прав и говорится, что вы можете использовать манифест, чтобы сделать что-то, требующее авторизации.

Итак, мы просто хотели бы создать манифест для нашего установщика. Однако как мы можем гарантировать, что манифест присутствует? Если пользователь просто загружает our_application_v13.exe, как мы можем гарантировать, что он тоже получит манифест? AFAIK манифест должен быть файлом с именем «our_application_v13.exe.manifest» в этом случае.

Поскольку они просто скачивают файл с нашего веб-сайта, как мы можем быть уверены, что они тоже получили манифест? Можем ли мы каким-то образом встроить его в исполняемый файл или иным образом пометить исполняемый файл как требующий повышения прав? Мы используем инструмент инсталлятора, созданный сотни лет назад, который мы не можем изменить, поэтому у него нет соответствующих возможностей.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 11 сентября 2009

Если инструмент установщика позволяет вам изменять / прикреплять / редактировать ресурсы сгенерированного EXE-файла, вы можете добавить файл манифеста в качестве ресурса с типом ресурса 24 (RT_MANIFEST в заголовках Windows) и идентификатором ресурса: 1.

Если средство установки не имеет встроенного средства для вставки ресурсов, то вам может потребоваться написать средство для последующей обработки файла install.exe для вставки ресурса. Посмотрите API Windows BeginUpdateResouce и EndUpdateResource. У них есть некоторые ограничения - они, как правило, не работают, если EXE-файл вообще не содержит никаких файлов ресурсов, но большинство исполняемых файлов установочного инструмента содержат как минимум ресурс информации о версии.

Также, если установка имеет цифровую подпись, что необходимо будет сделать после вставки ресурса манифеста.


Кроме того, mt.exe , входящий в состав Platform SDK, и большинство версий Visual Studio имеют параметры для встраивания, извлечения и объединения ресурсов манифеста.

1 голос
/ 21 октября 2010

Существует Консоль тюнера ресурсов от программного обеспечения Heaventools.

Resource Tuner Console - это инструмент командной строки, который позволяет разработчикам автоматизировать пост-обработку вашего установочного exe-файла и вставлять ресурс манифеста. Более подробную информацию смотрите на странице Добавление манифеста :

1 голос
/ 11 сентября 2009

Манифест также может находиться в разделе собственных ресурсов приложения (внутри EXE-файла).

...