Вопрос

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

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

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

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

Спасибо!

Это было полезно?

Решение

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

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

Кроме того, если установка имеет цифровую подпись, это необходимо будет сделать после вставки ресурса манифеста.


Также, mt.exe включен в Platform SDK, и большинство версий Visual Studio имеют возможности для встраивания, извлечения и объединения ресурсов манифеста.

Другие советы

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

Есть Консоль настройки ресурсов из программного обеспечения Heaventools.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top