Мы используем Nant для подготовки установки нашего программного обеспечения с помощью Clickonce.
Использование signtool для подписи dll(s) и exe(s).
команда signtool : signtool sign /f ${certFile} /p ${certFilePwd} {path of setup.exe}
Использование Mt.exe для встраивания манифестов в исполняемые файлы.
Команда Mt : mt -manifest {manifest file} -outputresource:{filepath};#1
У нас есть два exe-файла. Один из них — наш app.exe, а второй — setup.exe (загрузчик, созданный clickonce).
Нет проблем с app.exe при подписании после внедрения манифестов.
Но подписание манифеста setup.exe после внедрения дает следующую ошибку:
SignTool Error: SignedCode::Sign returned error: 0x80070057. The parameter is incorrect.
файл манифеста содержит:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<ms_asmv2:trustInfo xmlns:ms_asmv2="urn:schemas-microsoft-com:asm.v2">
<ms_asmv2:security>
<ms_asmv2:requestedPrivileges>
<ms_asmv2:requestedExecutionLevel level="asInvoker"
uiAccess="false"></ms_asmv2:requestedExecutionLevel>
</ms_asmv2:requestedPrivileges>
</ms_asmv2:security>
</ms_asmv2:trustInfo>
</assembly>
Нет ошибки, если я подпишусь перед встраиванием манифеста, но это не сработает, так как любой файл требует отказа от подписи после изменений.
Я также пробовал следующие шаги:
- подписать setup.exe
- вставлять манифесты
- resign setup.exe (та же ошибка на этом шаге, что и выше)
Есть ли у кого-нибудь решение/обходной путь этой проблемы?