Задержка подписать с clickonce
У меня есть приложение ClickOnce, которое опирается на задержку подписанных (с.pfx) сборок. В настоящее время я полагаюсь на цель публикации моего проекта для создания своего развертывания ClickOnce и хотел бы сохранить его таким, если это возможно (избегайте мага).
Моя проблема в том, что упакованные сборки по-прежнему подписаны с задержкой, потому что при запуске публикаций у меня не было возможности запустить "sn -Rc ...". Есть ли способ подключиться к цели публикации, чтобы подписать мои сборки после того, как он собирается / перестраивается. Я мог бы также подписать сборки перед публикацией, если публикация не инициировала сборку.
Какие-либо предложения?
Некоторые причины, по которым я не знаю, как продолжать: - подписывать сборки в файлах.deploy; повторно использовать файлы.manifest и.application, созданные целью публикации, для создания нового развертывания с подписанными сборками.
Итак, как я могу повторно использовать (с или без мага).manifest /.application, сгенерированный целью публикации, для создания нового развертывания? Те же файлы, некоторые немного отличаются.
Спасибо Бенуа
2 ответа
Просто любопытно, в чем твоя проблема с использованием мага? Это то, для чего он предназначен, и легко подписать ваше развертывание. Вот статья, показывающая, как это сделать.
Если вы не хотите использовать mage, вы можете проверить приложение MMU, которое предоставляет Patterns and Practices, оно здесь: вы можете посмотреть код для этого; он создает пакет развертывания программно.
Публикация всегда делает сборку, вы ничего не можете сделать, чтобы остановить ее (многие пытались!).
Если вы хотите добавить файлы в свое развертывание после создания пакета публикации, отметьте "вариант 2" в нижней части этой страницы. IIRC, "Автоматически" означает использование MMU; Руководство означает использование Mage или MageUI.
Моя проблема в том, что упакованные сборки все еще подписываются с задержкой, потому что при запуске публикации у меня не было возможности запустить «sn -Rc ...». Есть ли способ подключиться к цели публикации, чтобы подписать мои сборки после ее сборки / восстановления.
Я довольно поздно с этим, но недавно я тоже столкнулся с этим и мне удалось вставить задачу в MSBuild, которая полностью подписывает сборки (а не манифесты) непосредственно после задачи сборки. Таким образом, отставка осуществляется перед публикацией.
Я процитирую соответствующие строки файла .targets ниже:
<PropertyGroup Label="ProjectInfo">
<AssemblyExtension Condition="'$(OutputType)' == 'Library'">.dll</AssemblyExtension>
<AssemblyExtension Condition="'$(OutputType)' == 'WinExe'">.exe</AssemblyExtension>
<AssemblyExtension Condition="'$(OutputType)' == 'Exe'">.exe</AssemblyExtension>
</PropertyGroup>
<PropertyGroup Label="Signing">
<!-- the build server keeps the private key a secret; the path to the key file also containing
the private key is injected via build server environment -->
<StrongNameKeyFile>$(STRONG_NAME_KEY)</StrongNameKeyFile>
<IsBuildServer>$(BUILDSRV)</IsBuildServer>
</PropertyGroup>
<Target Name="Hook_AfterBuild" AfterTargets="AfterBuild">
</Target>
<!-- Fully sign the delay signed assembly on the build server -->
<Target Name="FullySignAssembly" AfterTargets="Hook_AfterBuild"
Condition=" '$(IsBuildServer)' == 'true' And '$(DelaySign)' == 'true' And '$(SignAssembly)' == 'true' ">
<Exec Command="sn.exe -Ra $(OutputPath)$(AssemblyName)$(AssemblyExtension) $(StrongNameKeyFile)"/>
</Target>