Задержка подписать с 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>
Другие вопросы по тегам