Невозможно подписать исполняемый файл загрузчика (setup.exe) после внедрения манифеста

Мы используем 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>

Нет ошибки, если я подпишусь перед встраиванием манифеста, но это не сработает, так как любой файл требует отказа от подписи после изменений.

Я также пробовал следующие шаги:

  1. подписать setup.exe
  2. вставлять манифесты
  3. resign setup.exe (та же ошибка на этом шаге, что и выше)

Есть ли у кого-нибудь решение/обходной путь этой проблемы?


person Riken    schedule 21.02.2013    source источник
comment
кажется, что нет решения/обходного пути   -  person Riken    schedule 26.02.2013
comment
Вы пытались переподписать манифест с магом? msdn.microsoft.com/en-us/library/xc3tc5xx.aspx   -  person Rick Ratayczak    schedule 27.02.2013
comment
да, выдает ошибку. Я думаю, что маг не может быть использован для подписи exe, он используется для подписи манифестов приложений и файла .application   -  person Riken    schedule 27.02.2013


Ответы (2)


Я не могу найти источник для цитирования, но некоторое время назад я столкнулся с похожей проблемой, и вы не можете подписать файл setup.exe, который был ранее подписан. Вы можете создать загрузчик с нуля (см. MSDN), применить ваш манифест, а затем подпишите его (в первый раз!), и он должен работать.

person dee-see    schedule 08.11.2013
comment
Было бы полезно, если бы signtool действительно сказал нам об этом! Использование mt.exe было для меня отвлекающим маневром — я подписал, запустил mt.exe, понял, что подписание пропало, подписал его снова и выдал это неясное сообщение об ошибке. К счастью, вы указали причину, так что спасибо. - person GeoffM; 19.04.2017