Posted on 20. December 2018

Упаковка .NET Core приложения с помощью Desktop Bridge

Windows Desktop Bridge - это способ упаковки десктопных приложений для отправки в Microsoft Store или загрузки с любого ресурса. Это один из путей создания MSIX пакета. Вкратце: пользуйтесь им, как современным ClickOnce. Это формат упаковки с поддержкой автоматического обновления и пользователи уверены, что он не нанесет вред их системе и не загрязнит реестр.

Ранее Microsoft объявили о первых предварительных .NET Core 3 и Visual Studio 2019 версиях. Эти пробные варианты поддерживают создание графических ПК приложений с помощью .NET Core с использованием WPF и Windows Forms. Можно перенести существующее приложение из .NET Framework в .NET Core 3. Приложение, которое уже переключилось, – это NuGet Package Explorer; его открытый исходный код уже доступен на GitHub и служит отличным примером.

Если у Вас есть приложение, ориентированное на .NET Core 3, то у Вас могут возникнуть вопросы: «Как мне поделиться этим с моими пользователями?», «.NET Core 3 совершенно новый, у моих пользователей этого не будет!» «Мой IT-отдел не будет выпускать .NET Core 3 в течение года!»

Одна из действительно интересных вещей в .NET Core – это то, что он поддерживает полностью автономные приложения. То есть он не имеет внешних зависимостей. Вам не нужно ничего устанавливать, даже сам .NET Core. Вы можете скопировать вывод публикации проекта и передать его кому-нибудь для запуска. Это открывает огромные возможности, так как Вы, как разработчик, можете использовать нужные Вам фреймворки и рабочие версии, не беспокоясь о том, что помешаете другим приложениям, запущенным на компьютере, даже если рабочий вариант уже существует в box.

С полностью автономным приложением Вы сможете использовать Desktop Bridge для упаковки Вашей программы, чтобы пользователи легко могли её установить. На сегодняшний день шаблоны не поддерживают этот нестандартный сценарий, но, настроив должным образом, его можно запустить.

Вначале

Вам понадобится Visual Studio 2017 15.9 или, еще лучше, новый выпуск Visual Studio 2019 Preview. В настройках обязательно выберите рабочую нагрузку UWP для установки инструментов проекта упаковки. Загрузите .NET Core 3 Preview и создайте в нем первое WPF .NET Core приложение.

Подробно

В официальных документах описано, как добавлять проект упаковки в Ваше приложение. Microsoft советует начать с этого. В будущем, как только инструмент начнет работать, Вам будет достаточно этой информации. На данный момент, в качестве временного решения, в статье будут изложены основные принципы.

Здесь Вы можете ознакомиться с готовым продуктом. Различия, показывающие определенные изменения, здесь.

Цель состоит в том, чтобы проект упаковки сам выполнял публикацию в основном приложении, а затем использовал эти выходные данные в качестве входных данных для упаковки. Изменения необходимо внести в следующие файлы:

 

  1. Основной проект приложения, пример NetCoreDesktopBridgeApp.csproj.
  2. Проект упаковки, пример NetCoreDesktopBridgeApp.Package.wapproj.

 

Проект приложения

Начнем с основного проекта приложения, .csproj или .vbproj файла. Добавьте <RuntimeIdentifiers>win-x86</RuntimeIdentifiers> к первой <PropertyGroup>. Это гарантирует, что восстановление NuGet предоставит ресурсы, специфичные для среды выполнения, и поместит их в project.assets.json файл. Затем вставьте следующее:

 

<Target Name="__GetPublishItems" DependsOnTargets="ComputeFilesToPublish" Returns="@(_PublishItem)">
  <ItemGroup>
    <_PublishItem Include="@(ResolvedFileToPublish->'%(FullPath)')" TargetPath="%(ResolvedFileToPublish.RelativePath)" OutputGroup="__GetPublishItems"></_PublishItem>
    <_PublishItem Include="$(ProjectDepsFilePath)" TargetPath="$(ProjectDepsFileName)"></_PublishItem>
    <_PublishItem Include="$(ProjectRuntimeConfigFilePath)" TargetPath="$(ProjectRuntimeConfigFileName)"></_PublishItem>
  </ItemGroup>
</Target>

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

 

  
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <UseWPF>true</UseWPF>

    <!-- Use RuntimeIdentifiers so that the restore calculates things correctly
         We'll pass RuntimeIdentifier=win-x86 in the reference from the Packaging Project 
    -->
    <RuntimeIdentifiers>win-x86</RuntimeIdentifiers>
  </PropertyGroup>

  <!-- Add the results of the publish into the output for the package -->
  <Target Name="__GetPublishItems" DependsOnTargets="ComputeFilesToPublish" Returns="@(_PublishItem)">
    <ItemGroup>
      <_PublishItem Include="@(ResolvedFileToPublish->'%(FullPath)')" TargetPath="%(ResolvedFileToPublish.RelativePath)" OutputGroup="__GetPublishItems"></_PublishItem>
    <_PublishItem Include="$(ProjectDepsFilePath)" TargetPath="$(ProjectDepsFileName)"></_PublishItem>
    <_PublishItem Include="$(ProjectRuntimeConfigFilePath)" TargetPath="$(ProjectRuntimeConfigFileName)"></_PublishItem>
    </ItemGroup>
  </Target>
</Project>

Проект упаковки

Далее нужно добавить в (.wapproj) проект упаковки следующее, еще одно свойство:

<DebuggerType> CoreClr</ DebuggerType>

в <PropertyGroup>, которая включает DefaultLanguage и EntryPointProjectUniqueName. Так Visual Studio говорит применять .NET Core отладчик. Примечание: чтобы использовать этот параметр, после установки Вам, возможно, нужно будет разгрузить / перезагрузить проект для VS. Если после изменения этого свойства система выдаст странную ошибку отладки, перезапустите VS, загрузите решение, и все должно заработать.

 

Затем найдите <ProjectReference ... элемент. Если его нет, щелкните правой кнопкой мыши на Application node и добавьте ссылку на приложение в Ваш основной проект. Добавьте следующие атрибуты: SkipGetTargetFrameworkProperties = "true" Properties = "RuntimeIdentifier = win-x86; SelfContained = true". Полная ItemGroup должна выглядеть примерно так:

 

<ItemGroup>
  <!-- Added Properties to build the RID-specific version and be self-contained -->
  <ProjectReference
    Include="..\NetCoreDesktopBridgeApp\NetCoreDesktopBridgeApp.csproj"
    SkipGetTargetFrameworkProperties="true"
    Properties="RuntimeIdentifier=win-x86;SelfContained=true"></ProjectReference>
</ItemGroup>

 

Наконец, когда проект почти закончен, добавьте следующий фрагмент после строки <Import Project="$(WapProjPath)\Microsoft.DesktopBridge.targets"/>:

 

<!-- Additions for .NET Core 3 target -->
<PropertyGroup>
  <PackageOutputGroups>@(PackageOutputGroups);__GetPublishItems

 

В этом фрагменте измените NetCoreDesktopBridgeApp\NetCoreDesktopBridgeApp.exe, чтобы он соответствовал имени и исполняемому файлу Вашего основного проекта.

Обходное решение VCRedist

В качестве контрольной точки Вам нужно указать зависимость пакета от VCRedist в Package.appxmanifest файле. Добавьте в <Dependencies> элемент следующее:

<PackageDependency Publisher = "CN = Microsoft Corporation, O = Microsoft Corporation, L = Редмонд, S = Вашингтон, C = US" Имя = "Microsoft.VCLibs.140.00.UWPDesktop" MinVersion = "14.0.26905.0" />
. Когда пользователи установят Ваше приложение, Windows автоматически подтянет эту зависимость из хранилища.

 

Сборка и отладка

С указанными выше компонентами, Вы можете установить проект упаковки в качестве стартапа и выполнить отладку в обычном режиме. Он создаст программу и развернет его в локальном приложении. Выходные данные можно увидеть в bin\AnyCPU\<configuration>\AppX каталоге Вашего проекта упаковки. Он должен содержать больше файлов, чем в вашем главном приложении, поскольку в нем будет автономная .NET Core среда выполнения.

Примечание. Иногда отладка проекта упаковки не приводит к восстановлению, если в нем были изменены некоторые файлы. Восстановление основного проекта приложения исправляет это, и Вы можете настраивать то, что ожидаете получить.

Развертывание приложения

Существует два основных варианта развертывания пакета:

 

  1. Загрузка с помощью AppInstaller файла. Это замена ClickOnce.
  2. Microsoft Store. Пакет может быть отправлен в Store для распространения.

 

Двойная загрузка

Начиная с Windows 10 1803, загруженные приложения могут автоматически обновляться с помощью .appinstaller файла. AppInstaller является альтернативой ClickOnce для большинства сценариев. В документации описывается, как создать этот файл при публикации и поместить его в UNC-путь, общую папку или HTTPS-папку.

Если Вы загружаете контент, то нужно использовать сертификат подписи кода, которому доверяют Ваши пользователи. Для предприятия это может быть документ внутреннего центра сертификации, для общественности он должно быть получен в государственном органе. У DigiCert есть отличное предложение для сертификатов подписи кода, $ 74 / год для обычного и $ 104 / год для EV по специальной ссылке. После получения сертификата Вам необходимо обновить Package.appxmanifest, чтобы использовать его. В данной статье нет информации об автоматической подписи кода, но Вы можете ознакомиться с проектом службы подписи кода здесь.

Microsoft Store

Microsoft Store – отличный способ, чтобы Ваши пользователи узнали о приложении. Он обрабатывает подписывание кода, распространение и обновление. Более подробная информация о том, как подать приложение в Store, здесь и здесь.

 

Источник



Exception: Object reference not set to an instance of an object.
Posted on 28. May 2018

Топ 4 Способа оптимизации страницы продукта в Microsoft Store

https://blogs.windows.com/buildingapps/2018/07/25/top-4-ways-to-optimize-your-microsoft-store-listing/#zpIPiCt4JAfZRJQt.97

Топ 4 Способа оптимизации страницы продукта в Microsoft Store

При публикации Вашего приложения в Microsoft Store используйте все преимущества на странице  заполнения продукта и сделайте ее уникальной. Красивые видео, текст и изображения помогут заинтересовать еще больше клиентов и увеличить покупки. Не забывайте, что Ваша страница в Microsoft Store - это первое впечатление для клиента. Уделите этому время и произведите хорошее впечатление!

Используйте возможности по максимуму

1. Добавьте видео трейлер

Видео трейлеры - Это короткие ролики, которые подчеркивают особенности Вашего продукта и показывают его ключевые функции. В среднем, добавление одного или нескольких видео трейлеров могут увеличить загрузку до 11%.

В качестве наглядного примера, просмотрите видео трейлеры Affinity Designer, Affinity Photo приложений, которые действительно показывают все возможности этих продуктов.

Советы по созданию видео трейлеров:

  • Сосредоточьтесь на высоком качестве, не продолжительности (рекомендовано 60 секунд или меньше).
  • Используйте разные подписи для каждого трейлера.
  • Показывайте ключевые моменты кратко и понятно в каждом кадре.
  • При добавлении видео трейлеров Вы также должны предоставить изображение с разрешением 1920 x 1080 пикселей (16:9) в разделе Promotional images на странице заполнения продукта в Microsoft Store. Добавленный видео ролик будет отображаться в самом верху страницы продукта, а изображение сразу по окончанию трейлера.

Обратите внимание, что видео трейлеры отображаются только пользователям с девайсами под управлением Windows 10 версии 1607 или выше (включая Xbox).

См. дополнительную информацию и советы здесь.

2. Напишите классное описание

Описание - это первое, что клиент читает о Вашем приложении в Microsoft Store, и оно также может отображаться в результатах поиска и списках алгоритмов, поэтому опишите Ваш продукт как можно лучше. 

Несколько полезных советов:

  • Для начала задайтесь вопросом, почему клиент должен приобрести именно этот продукт?
  • Сосредоточьтесь на простом и доступном для всех описании.
  • Локализируйте текст для всех рынков.

Подробнее читайте здесь.

3. Создайте запоминающийся логотип

Логотип - Это основное изображение, которое отображается на Windows 10 и Xbox девайсах, а также при поиске или в коллекциях Microsoft Store, и Microsoft настоятельно рекомендует предоставить изображения как в размере 9:16, так и в 1:1. Хороший логотип произведет впечатление и привлечет больше клиентов.

Microsoft рекомендует добавлять эти логотипы для создания оптимального внешнего вида страницы продукта. В частности, изображение размером 9:16 требуется для коректного отображения на Windows 10 и Xbox устройствах. У Вас также есть возможность загружать дополнительные логотипы, которые будут использоваться в Microsoft Store (вместо изображений, взятых из пакетов Вашего приложения).

Советы по созданию логотипа:

  • Укажите название приложения в качестве ключевой части изображения.
  • Предоставьте .png файлы размером не более 50 МБ.
  • Предоставьте все форматы и размеры для отображения на разных устройствах.

Подробнее о параметрах отображения здесь.

4. Регулярно обновляйте Ваш продукт

При обновлении приложения будет полезно сообщить пользователям, что Вы улучшили в последней версии, особенно если это исправления ошибок или добавление новых функций на основе пожеланий Ваших клиентов. Используйте раздел «Что нового» на странице заполнения продукта, чтобы поделиться этой информацией с Вашими пользователями. Это не только уведомит Ваших клиентов об улучшениях, но и покажет потенциальным клиентам, что Вы принимаете во внимание отзывы и продолжаете добавлять новый функционал.

Начните уже сейчас

Публикуете Ваш продукт в первый раз или обновляете текущее приложение в Microsoft Store? Надеемся, что эти советы будут полезными для Вас. Для изучения более подробной информации о всех параметрах заполнения, а также дополнительными советами, как создать красивую страницу продукта в Microsoft Store, читайте здесь.

Источник



Exception: Object reference not set to an instance of an object.
Posted on 26. May 2018

Обновленное Соглашение с Разработчиком Приложений для Microsoft Store и GDPR

23 мая команда Microsoft Store обновила Соглашение с Разработчиком Приложений для Microsoft Store (App Developer Agreement). При следующем входе в панель управления в Dev Center Вам будет предложено повторно изучить данное Соглашение, прежде чем Вы сможете обновлять или управлять Вашими приложениями.

В новой версии соглашения Microsoft внесли несколько изменений, чтобы ознакомить Вас с ограничениями по использованию и хранению личной информации в соответствии с Общим регламентом по защите данных (GDPR). Для получения дополнительной информации Вы можете полностью просмотреть Соглашение с разработчиком приложений для Microsoft Store и Журнал изменений Соглашения с разработчиком приложений.

Обратите внимание: Это обновление НЕ включает новую новая структуру дохода в Microsoft Store, которая была представлена на конференции Microsoft Build 2018.

Что такое GDPR?

25 мая 2018 года вступил в силу принятый Европейским Союзом Общий регламент по защите данных (GDPR).

GDPR налагает новые правила на компании, государственные учреждения, некоммерческие организации и другие организации, которые предлагают свои товары и услуги жителям на территории Европейского союза (ЕС) или собирают и анализируют их персональные данные. GDPR применяется независимо от того, на какой территории находится та или инная организация.

Что является персональными данными в соответствии с новым регламентом GDPR? 

Для получения дополнительной информации, Вы можете перейти на официальный сайт Европейской Комиссии по защите персональных данных, но Microsoft рекомендует Вам и Вашей юридической или регулятивной группе обратиться с конкретным вопросам, которые у Вас возникли, к команде Microsoft.

Узнайте больше о GDPR


Microsoft также рекомендует Вам обратиться к Microsoft.com/GDPR за ресурсами и методами для соответствия требованиям GDPR. Вы даже можете оценить Ваше соответствие новому регламенту GDPR с помощью быстрого, интерактивного опроса из 10 вопросов.



Exception: Object reference not set to an instance of an object.
Posted on 10. May 2018

Новая доля дохода от Microsoft Store

Microsoft Store продолжает развиваться, чтобы стать лучшим магазином Windows 10 приложений для каждого пользователя. Все приложения проходят предварительную проверку Microsoft, поэтому Microsoft Store предлагает Вам только качественные и продуктивные приложения. Microsoft Store также является лучшим магазином для продажи и распространения Windows 10 продуктов, где у каждого разработчика есть возможность охватить новую аудиторию и привлечь больше клиентов. Microsoft сосредотачивается на инфраструктуре, поэтому Вы можете сфокусироваться на создании лучшего приложения и развитии Вашего бизнеса в качестве разработчика. Основываясь на этих целях, Джо Бельфиор объявил о новой структуре взимаемой платы в Microsoft Store, которая будет доступна уже в этом году.

Лучшая доля дохода для разработчиков

Уже в этом году потребительские приложения (не включая игры), проданные в Microsoft Store, предоставят разработчикам 95% дохода, полученного от приобретения Вашего приложения или от внутренних покупок в Вашем приложении, которые были осуществлены с помощью перехода по внешним гиперссылкам. В случае, если Microsoft поставляет Вам клиента посредством любого другого метода, например, из раздела Collections в Microsoft Store или любых других объектов, принадлежащих Microsoft, Вы получаете 85% дохода от покупки приобретения Вашего приложения или от внутренних покупок в нем.

Новая структура взимаемой платы применима к покупкам с Windows 10 компьютеров, Windows Mixed Reality, Windows Phone и Surface Hub, за исключением Xbox консолей.

Новые способы монетизации для разработчиков

Эти изменения в текущей структуре оплаты в Microsoft Store представляют собой новый способ монетизации на Windows платформе. С новой структурой взимаемой платы, Microsoft будет получать дополнительную плату только в том случае, когда они сделали вклад в приобретение нового пользователя Ваших продуктов. Эти изменения позволят создать магазин приложений, в котором разработчики будут вознаграждаться за каждого пользователя, которому нравятся Ваши продукты.

Структура взимаемой платы будет подробно описана в предстоящем пересмотре договора App Developer Agreement в конце этого года. Посетите эту страницу для получения более подробной информации и зарегистрируйтесь для получения уведомления, когда новая структура взимаемой платы вступит в силу. А также Вы можете узнать больше в разделе часто задаваемых вопросов.

Для каких приложений будет применяться новая структура взимаемой платы?

Новая структура будет применяться к любому потребительскому приложению, за исключением игр, которое опубликовано в Microsoft Store для ПК, Windows Mixed Reality, Windows Phone или Surface Hub.

Когда новая структура взимаемой платы вступает в силу?

Новая структура взимаемой платы вступает в силу уже в этом (2018) году. Microsoft предложит Вам принять новую версию App Developer Agreement, в котором будет подробно описана структура платы в Microsoft Store. Новая структура взимаемой платы будет применяться к покупкам, сделанным после даты, указанной в App Developer Agreement.

Будет ли новая структура взимаемой платы применяться к играм или игровым подпискам?

Нет, не будет. Новая структура взимаемой платы будет применяться только к потребительским приложениям для ПК, Windows Mixed Reality, Windows Phone или Surface Hub. Приложения, классифицированные как Игры в Microsoft Store, не будут применимы к новой структуре, даже если они доступны для этих устройств.

Как будет распространяться взимаемая плата за подписки и покупки внутри приложения в Microsoft Store?

Новая структура взимаемой платы будет применяться к не-игровым подпискам и покупкам внутри потребительских приложений. Плата, взимаемая с этих покупок, будет определяться тем, как пользователь первоначально приобрел приложение. Новая взимаемая плата в размере 5% будет применяться ко всем транзакциям на торговой платформе Microsoft, и если Ваш клиент использовал внешнюю гиперссылку для приобретения Вашего приложения, с Вас будет взиматься только 5% от его общей стоимости. Дополнительная 10% взимаемая плата будут применяться в том случае, если Microsoft поставляет Вам клиента посредством любых других методв, например, из раздела Collections в Microsoft Store или любых других разделов, принадлежащих Microsoft.

Все будущие приобретения подписок или покупок внутри приложения будут оцениваться с той же проценттарностью, которая была оценена, когда пользователь первоначально приобрел приложение.

Будет ли новая структура взимаемой платы применяться к покупкам, сделанным в Microsoft Store for Business и Microsoft Store for Education?

Нет. Новая структура взимаемой платы будет распространяться только на частные приобретения потребительских приложений для ПК, Windows Mixed Reality, Windows Phone или Surface Hub. Если Вы разрешаете распространение Вашего приложения через организационное лицензирование в Microsoft Store for Business и / или Microsoft Store for Education, текущий налог в магазине будет продолжать применяться к этим покупкам.

Что касается приложений (не игр), которые доступны на Xbox?

Любые покупки, сделанные на Xbox консолях, будь то приложение или игра, будут использовать текущую структуру взимаемой платы.

Что касается приложений, которые доступны как в Microsoft Store for Windows 10 PC, так и в Microsoft Store for Xbox One?

Новая структура взимаемой платы будет применяться к приобретению не-игровых потребительских приложений частными лицами в Microsoft Store for Windows 10 PC (и других устройствах, упомянутых выше). Текущая структура платы останется прежней к приобретениям в Microsoft Store for Xbox One устройств.

Какой будет структура взимаемой платы для приложений, доступных для более ранних версий ОС (Windows 8.x и / или Windows Phone 8.x)?

Новая структура взимаемой платы будет также применяться к приложениям, доступным в Microsoft Store, для более ранних версий ОС (Windows 8.x и / или Windows Phone 8.x).






Exception: Object reference not set to an instance of an object.
Posted on 3. May 2018

Новое имя UWP Community Toolkit: Windows Community Toolkit

Уже в следующем обновлении UWP Community Toolkit будет переименован на Windows Community Toolkit. Это действительно большой шаг в развитии инструментария и сообщества.

Впервые инструментарий был выпущен более полутора лет назад с 26 различными функциями. С тех пор Microsoft добавили пять новых пакетов в девять новых выпусков, каждый из которых включает в себя новые элементы управления, помощники, службы, расширения, объектные модели и многое другое - большинство из элементов поступает сразу из сообщества. Сегодня существует более 100 различных функций. Вы можете сравнить количество элементов управления (и категорий) на примере приложения с первоначальной версии:

UWP Community Toolkit Sample App (версия 1.0)

UWP Community Toolkit Sample App (версия 2.0)

Когда Microsoft выпустили UWP Community Toolkit, было много отзывов о добавление возможности для разработчиков, поделиться компонентами инструментария с другими инфраструктурами, такими как WPF, WinForms, Xamarin, .NET Core и другими. С помощью сообщества, в версии 2.0 Microsoft идентифицировали компоненты, которые могли быть учтены в библиотеках .NET Standard, и создали новые пакеты .NET Standard для того, чтобы все разработчики могли воспользоваться преимуществами работы сообщества. Сегодня многие из сервисов, помощников и парсеров являются кросс-платформенными и могут использоваться везде. Более того, Microsoft продолжает работать над тем, чтобы добавить еще больше преимуществ.

 

Главная цель сообщества - привлечение большего количества разработчиков, поэтому, начиная со следующей версии Windows Community Toolkit, Microsoft предоставят возможность другим Windows разработчикам, работающим на Windows 10 платформе, использовать все преимущества компонентов инструментария. Таким образом, новое имя привлечет всех Windows разработчиков.

Microsoft с энтузиазмом работает над следующим обновлением инструментария, которое планируется на конец мая. Работа над обновлением доступна для всех, и Microsoft приглашает всех разработчиков принять участие и внести свой вклад. Чтобы начать работу с самым грандиозным обновлением уже сегодня, посетите GitHub репозиторий и погрузитесь в код. Или, если Вы предпочитаете работать с NuGet пакетами, они будут опубликованы для предварительного просмотра в NuGet перед конференцией Microsoft Build. Microsoft будет обновлять документацию и пример приложения одновременно, пожалуйста, обратите внимание, что это пакеты предварительного выпуска, и они могут измениться в окончательной версии. 

Чтобы присоединиться к беседе в Twitter, используйте хэштег #windowstoolkit. Microsoft также будут рады видеть Вас на конференции Microsoft Build 2018!



Exception: Object reference not set to an instance of an object.