Показаны сообщения с ярлыком address. Показать все сообщения
Показаны сообщения с ярлыком address. Показать все сообщения

12 апреля 2017 г.

Часть 2. Clickonce приложение. Создание с нуля используя утилиту mage.exe.

Оглавление


Первым делом стоит ответить на вопросы:
  • Насколько клиенту важна Security политика и выводимые предупреждения у пользователей при установке? 
  • На сколько администраторы компании готовы вам содействовать в настройке?
Потому, что для повышения безопасности приложения в политиках домена придется раздать всем клиентам корпоративной сети заказчика сертификат с подписью манифеста и добавлением вашего сайта в доверенные.
При чем тут вообще сертификаты и прочее? Дело в том, что каждая сборка ClickOnce приложения подписывается или не подписывается сертификатом. В случае если подпись имеется, это дает возможность клиенту быть уверенным, что получив файлы приложения по сети они были созданы поставщиком, а так же в ходе хранения у заказчика не были заражены или изменены. Это достигается путем подсчета контрольной суммы не только файлов вашего решения, но и файлов ClickOnce приложения. В полном объеме это все описано в статье Общие сведения о развертывании доверенных приложений, если вы уже попробовали развернуть и запустить ClickOnce приложение у себя, то уже заметили данное сообщение при запуске:


На нем ясно написано, что Publisher (Поставщик) не известен, хотя поле могло бы быть заполнено вашей организацией. Так же снизу написано предупреждение объясняющее, к чему может привести пренебрежение безопасностью. Если для клиента главный девиз "Что бы работало", то пропускайте заморочки с постоянным сертификатом и используйте временные сертификаты  если они необходимы или же не используйте цифровую подпись.

Приведу пример запуска приложения с полностью настроенной политикой безопасности и подписью:

Важно понимать! Что если у заказчика нет домена, то установка сертификатов придется делать вручную. То же самое относится к компьютерам, которые являются портативными и не введены в домен.

Практичные способы развёртывания.

Известные мне способы создания развёртываемых ClickOnce приложений приведены ниже:
  1. Используя Visual Studio, но как мне известно, студия не умеет делать приложения без подписи.
  2. Используя утилиты Mage.exe / MageUI.exe - идущие в поставке Windows SDK. С их помощью можно создавать приложение с нуля, подписывать сборки и обновлять их.
    Приведу известные мне проблемы:
    • Самый главный минус, то что mage.exe не умеет проставлять атрибут mapFileExtensions при создании .application. Поэтому не получится создать ClickOnce приложение с использованием файлов с расширением .deploy
    • Еще один минус, это отсутствие возможности поменять стратегию обновления. По умолчанию значение:
      <deployment install="true" mapFileExtensions="true">
          <subscription>
            <update>
              <expiration maximumAge="0" unit="days" />
            </update/>
          </subscription>

        </deployment>
      Это соответствует поведению, когда при появлении новой версии она будет загружена во время работы, а не перед запуском программы. Соответственно подменить на beforeApplicationStartup обновление при создании с нуля придется самому.
  3. Создание своей утилиты, которая наполняет msbuild  скрипт <Project /> содержащий <GenerateApplicationManifest /> и <GenerateDeploymentManifest />. Данный способ является велосипедом, но дает возможность упростить создание ClickOnce приложения, сведя к минимуму задаваемые настройки. Самый главный плюс это возможно создавать не подписанные файлы манифестов, задания MapFileExtensions и прочих свойств. Как это сделать используя студию и Mage.exe я не нашел.
  4. Используя Microsoft.Build.Tasks.v4.0.dll реализовать работу по созданию ClickOnce приложения минуя msbuild (как делает mage.exe).
Теперь остановимся на каждом пункте поподробнее.