spiiin: (2D)
Потребуется:
Microsoft Visual Studio 2012 Express for Windows 8
Windows SDK for Windows 8                     

1. Собрать приложение под архитектуру ARM.
Ключей для выбора выходной архитектуры нет, нужно использовать компилятор из папки winSdkDir/bin/x86_arm.

*не забыть добавить опцию -D"_DEBUG" компилятору чтобы работала OutputDebugString.
*не забыть отключить в DirectX creationFlags D3D11_CREATE_DEVICE_DEBUG, если не хочется устанавливать на девайс debug версию библиотек DirectX (я её вообще не нашел).


2. Слинковать как приложение магазина.
winSdkDir/bin/x86_arm/link.exe /MACHINE:ARM /APPCONTAINER

*не забыть добавить в пути к либам /x86_arm/

3. Создать манифест приложения
http://msdn.microsoft.com/en-us/library/windows/apps/br211476.aspx
*не забыть добавить в него раздел Capabilities и задекларировать набор возможностей, которые будет использовать приложение. В документации к WinRT API обычно указывается, для каких вызовов необходимо добавлять capability.
*для directx-приложений, использующих xaml-контролы, EntryPoint в манифесте должно быть установлено в YourAppClassName.App, где YourAppClassName - имя вашего класса приложения - наследника Windows::UI::Xaml::Application.

4. Упаковка в приложения в пакет.
Используется утилита MakeAppx из набора Windows 8 SDK.
MakeAppx.exe pack /d . /p YourApp.appx
Выходной формат - обычный zip-архив. Еще при упаковке проверяется правильность некоторых разделов манифеста.

5. Генерация сертификата.
Без подписывания приложения сертификатом оно не запустится.
http://msdn.microsoft.com/en-us/library/windows/desktop/jj835832%28v=vs.85%29.aspx

расписано в статье:
5.1. генерируем корневой самоподписанный сертификат.
makecert.exe -n "CN=name" -r -a sha1 -sv name.pvk name.cer –ss root
5.2. генерируем клиентский сертификат для подписывания, подписываем его корневым сертификатом и устанавливаем в раздел личный сертификатов:
makecert -a sha1 -sk "name" -iv name.pvk -n "CN=name" -ic name.cer -sr currentuser client.name.cer -ss My
5.3. смотрим sha-1 thumbprint клиентского сертификата с помощью PowerShell
PS C:\> dir cert:\CurrentUser\My

*не забыть установить корневой сертификат на устройстве с правами администраторa
certutil.exe -addstore root My.cer
*не забыть убедиться что имя издателя совпадает с полученным в Windows Store.
*убедиться, что имя сертификата ("CN=name") совпадает с тем, которое указано в манифесте приложения ( <Identity Publisher="CN=name">)

6. Подписывание приложения.
signtool.exe sign /fd sha256 /sha1 YOUR_CERT_THUMBPRINT YourApp.appx
YOUR_CERT_THUMBPRINT - отпечаток sha-1 вашего сертификата, подсмотренный в пункте 5.3.

7. Копирование скрипта установки из Visual Studio.
Собрать пакет для магазина Windows из бесплатной Visual Studio нельзя.
В платных версиях в контекстном меню проекта есть пункт "Проект -> Магазин -> Создать пакеты приложения". В выходной директории будет лежать запакованный appx-пакет приложения, и еще несколько файлов, один из которых надо скопировать в папку со своим приложением - Add-AppDevPackage.ps1.
Это командный файл PowerShell, который можно открыть почитать, но нельзя править, потому что он защищён подписью (комментарий в конце файла). Без неё скрипт на устройстве не выполнится, так как он вызывает команды, недоступные простым смертным разработчикам.

8. Вычисление и копирование DLL зависимостей для приложения.
Для отладки на устройство также необходимо вместе с пакетом приложения устанавливать набор библиотек для отладки из visual studio, собранные в package.
Выяснить, от чего зависит бинарник можно с помощью утилиты dumpbin из winSDK:
dumpbin /dependents YourApp.exe

Пакет с зависимостями можно взять из той же папки, что и скрипт установки, сгенерённый Visual Studio - скопировать всю папку Dependencies оттуда в папку со своим приложением (в подпапке arm можно распаковать appx, чтобы убедиться в том, что внутри лежат нужные версии DLL - дебажные или релизные).

*Не забыть добавить в манифест приложения раздел Dependencies и указать имя файла с зависимостями, иначе скрипт установки будет ругаться на несоответствие:
<PackageDependency Name="Microsoft.VCLibs.110.00.Debug" MinVersion="11.0.51106.1" />

9. Настройка Surface.
Устанавливать приложение можно по сети из расшаренной папки (минимально в ней должны быть - подписанное приложение, скрипт установки, папка с зависимосяти и сертификат разработчика).
Для запуска в контекстном меню для установочного скрипта выбрать Run with PowerShell, но так окно powershell будет закрываться до того, как можно будет посмотреть результат работы, чтобы выяснить причины возникающих ошибок (а любой программист электронно-вычислительных машин должен твёрдо усвоить, что ошибки будут).
Поэтому лучше создать командный файл, запускающий powershell и установить разрешение для запуска пользователем удалённых скриптов:
PS C:\> Set-ExecutionPolicy Unrestricted -scope CurrentUser

10. Установка приложения
в powershell указываем имя скрипта для выполнения. На устройствах без клавиатуры команды в командную строку вводить можно либо прямо с экранной клавиатуры (на которой нет стрелочки вверх для использования истории команд),либо втыкнуть в usb порт обычную клаву. выглядит по идиотски^w гиковски. Если установить пакет получилось с первого раза, ура! Иначе проверять сертификаты, манифесты и зависимости.

11. Установка на устройство средства удалённой отладки.
Remote debugging tools
дальше просто запустить и нажать кнопку "Настроиться", чтобы отладчик добавил себя в исключения файрвола.

12. Отладка.
В меню Visual Studio выбрать  "отладка -> отладка установленных пакетов" и вбить имя устройства для отладки, выбрать пакет приложения и нажать "начать".
Если всё было сделано правильно, отладочный вывод  приложения будет перенаправляться на консоль Visual Studio.
Tags:

Profile

spiiin: (Default)
spiiin

July 2017

S M T W T F S
      1
2345 678
9101112131415
16171819202122
23242526272829
3031     

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 24th, 2017 06:43 am
Powered by Dreamwidth Studios