Записанное приложение Clickonce не работает: "имеет другой вычисленный хэш, чем указано в манифесте". Маг не может решить проблему
Я действительно борется с этим в течение нескольких дней. Я видел другие сообщения, такие как Ошибка развертывания ClickOnce: разные расчетные хэши, чем указано в манифесте, но решения, похоже, не работают для меня.
У меня есть действительный сертификат подписи кода, и я использовал его для подписывания своего приложения ClickOnce в течение нескольких месяцев. Я понял, что я не подписываю исполняемый файл и dlls, поэтому я пытаюсь это сделать. Теперь каждый раз, когда я публикую и запускаю файл setup.exe, он терпит неудачу: "Файл, xxxxxx.dll, имеет другой вычисленный хэш, чем указано в манифесте".
Если я не подписываю exe и Dll, я могу перераспределить. Я убедился, что перед публикацией все копии exe/dll подписываются во всех каталогах (Target, Obj). Я пробовал использовать Mage/MageUI, но не имел успеха. Можно ли настроить установку ClickOnce без подписанного кода, а затем опубликовать подписанный код? Кажется логичным, но, возможно, мне что-то не хватает.
Спасибо,
Gregg
Ответы
Ответ 1
Есть ли вероятность, что вы пытаетесь развернуть приложение WPF и использовать Visual Studio 2012 или более позднюю версию? Если это так, вы должны использовать параметр "AfterCompile" в файле проекта, чтобы подписать приложение, или вы получите несоответствие хеша.
Смотрите этот пост stackoverflow:
SignTool не подписывает приложение ClickOnce, используя SHA256, использует только SHA1
Какие ссылки на Robin отличное решение для блога:
http://robindotnet.wordpress.com/2013/04/14/windows-8-and-clickonce-the-definitive-answer-revisited/
Ответ 2
Удалите ссылку System.Deployment и добавьте ее обратно. У нас возникла проблема после перемещения проекта с VS2012 на VS2015, и это действие снова заработало после нескольких часов попыток разных идей.
btw - вот простое руководство по выполнению принятого ответа:
-
щелкните правой кнопкой мыши проект и выберите "Выгрузить проект"
-
щелкните правой кнопкой мыши проект и выберите "Изменить"
-
добавьте следующее перед тегом завершения заключительного проекта:
<Target Name="AfterCompile" Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Exec Command=""C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe" sign /f "C:\temp\myPFX.pfx" /p "admin" /v "$(ProjectDir)obj\$(ConfigurationName)\$(TargetFileName)"" />
</Target>
Ответ 3
Многие из моих проблем с clickonce и подписи кода с использованием Visual Studio 2013, включая эту конкретную проблему, были устранены путем установки vs2013 update 4.
(возможно, обновление 3 было бы достаточно, но после нескольких дней разочарования я установил обновление 4)
Я использую signtool с параметром /sha 1 в событии после сборки каждой сборки. (всегда запускать).