Как установить windows phone на virtualbox

Время на прочтение4 мин

Количество просмотров51K

Приветствую.

Не знаю как вам, но мне сначала совершенно не хотелось ставить новую Windows 8. А смысл? Смысла не было, семёрка отлично работала и продолжила бы работу, но… Умные люди из Microsoft любят всё переделывать заново и в этот раз они конкретно переборщили.

Дело в том, что новая версия эмулятора WP,

Windows Phone Emulator (XDE), использует технологию Hyper-V, которая в семействе настольных Windows появилась только начиная с Windows 8.

У меня возникла идея любой ценой установить этот SDK себе в VS2012 под Windows 7 и выжать из него максимум возможностей.

Внимание!

  • Эмулятор будет доступен только для WP 7.1 и ниже;
  • Blend будет доступен только для WP 7.1 и ниже, а значит XAML под WP 8 придётся писать руками;
  • Это just for fun, ведь нормальные герои всегда идут в обход!

Под катом я вкратце расскажу, как устроен установщик WP8 SDK и покажу кривой путь через болотце для тех, кто не хочет расставаться с Windows 7, но хочет продложить разработку под новые версии Windows Phone.

Копаемся в пакете

Загрузив с официального сайта установщик WPexpress_full.exe, я попробовал его запустить. Он меня послал, сказав что я должен переустановить винду (вот не ожидал!) на что-нибудь поновее, например Windows 8. От такой дерзости я опешил и недолго думая обновил ту самую картинку с собакой, на всякий случай, чтобы было чем отмахиваться в идеологических спорах с друзьями.

Всё подозрение пало на маркетологов.

WPexpress_full.exe отлично распаковывается с помощью WinRAR, внутри обнаружились следующие файлы:

0: XML document text
u0: PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit
u1: PE32 executable for MS Windows (DLL) (console) Intel 80386 32-bit Mono/.Net assembly
u10: PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit
u11: PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit
u12: XML  document text
u13: XML  document text
u14: exported SGML document text
u15: UTF-8 Unicode (with BOM) text, with very long lines, with CRLF line terminators
u16: PNG image data, 63 x 63, 8-bit/color RGBA, non-interlaced
u17: HTML document text
u18: XML document text
u2: XML document text
u3: exported SGML document text
u4: XML document text
u5: MS Windows icon resource - 3 icons, 16x16, 16-colors
u6: MS Windows icon resource - 3 icons, 16x16, 16-colors
u7: MS Windows icon resource - 3 icons, 16x16, 16-colors
u8: PE32 executable for MS Windows (DLL) (console) Intel 80386 32-bit Mono/.Net assembly
u9: XML  document text

После изучения файла 0, который являлся заголовочным для этого пакета, выяснилось, что инсталлятор сделан с помощью тулкита Windows Installer XML (WiX) toolset. Выкачал инструменты этого WiX, среди них была утилита dark.exe, отвечающая за распаковку .msi пакетов, собранных дефолтным инструментарием WiX. Утилита подошла и к этому пакету.

Он распаковался:

.
├── AdminDeployment.xsd
├── BootstrapperApplicationData.xml
├── BootstrapperCore.config
├── BootstrapperCore.dll
├── HighContrastThemes.xaml
├── License.htm
├── LocalizableStrings.xml
├── ManagedUx.dll
├── SkuResources.xaml
├── Themes.xaml
├── manifest.xml
├── mbahost.dll
├── mbapreq.dll
├── mbapreq.png
├── mbapreq.thm
├── mbapreq.wxl
├── res
│   ├── info.ico
│   ├── stop.ico
│   └── warn.ico
└── sqmapi.dll

После прочтения доков и осмотра XML файлов стало ясно, что установщик делался с кастомным интерфейсом, с использованием ManagedUx и Bootstrapper (Burn) из WiX SDK (в архиве wix36-sources.zip есть пример такого проекта — WixBA).

Проще говоря, то что у нас есть — без воссоздания WiX проекта в Visual Studio пересобрать обратно в установщик нельзя. Как минимум

manifest.xml является

<BurnManifest xmlns="http://schemas.microsoft.com/wix/2008/Burn">

и как собирать такие манифесты — ни одна утилита из стандартного набора WiX не знает.

Поэтому не смотря на очень привлекательную строчку в

BootstrapperApplicationData.xml

<UxBlocker ShortName="CheckX64runningWin2008ServerOrWin8" Type="Stop" Condition="(VersionNT < v6.1) OR ((VersionNT = v6.1) AND (NTProductType < 3)) OR (NOT VersionNT64)" DisplayText="#loc.Win8X64Block"/>

которую можно удалить, такой способ придётся оставить.

Парсим manifest.xml

В

manifest.xml прописаны все пакеты, которые устанавливаются установщиком, а так же URI источников. Я написал ruby-скрипт, который парсит и скачивает всё необходимое, затем поочерёдно устанавливает.
Порядок установки пакетов такой же, как они следуют в XML манифесте, надеюсь это не важно.

Исходные тексты на GitHub

Там же есть папка с готовым бинарником (скрипт + зависимости + ruby 1.9.3, собрано с помощью ocra), нужно просто перетянуть на него

WPexpress_full.exe и наблюдать.

Готовый к употреблению архив в ZIP

Tips & Tricks

Редактор XAML будет пытаться запустить Blend, тот в свою очередь — компонент эмулятора WP8, отчего сам же Blend будет вечно падать. Я сразу переключил редактор XAML на тот что без визуальщины, автокомплит там работает и ладно.

В сухом остатке имеем:

  • Полноценный рабочий SDK для Windows Phone 7.1
  • Нерабочий эмулятор Windows Phone 8
  • Нерабочий редактор интерфейсов Blend для WP 8
  • Неполноценный, но таки рабочий (!) SDK для WP 8

Факт: Windows Phone 8 запускается в VirtualBox на той же Windows 7, но нет курсора мышки и сети, так что пока ничего полезного это не дало.

Желаю удачи с этим делом!

~ Xlab

— UPD: Если у вас была ошибка с бинарником

/src/application.rb:76:in `require_relative': cannot load such file — /src/chain (LoadError)

скачайте новую версию с github, пофикшено.

Как использовать OAuth2 со Spring Security в Java

Javaican 14.05.2025

Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .

Анализ текста на Python с NLTK и Spacy

AI_Generated 14.05.2025

NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .

Реализация DI в PHP

Jason-Webb 13.05.2025

Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .

Обработка изображений в реальном времени на C# с OpenCV

stackOverflow 13.05.2025

Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .

POCO, ACE, Loki и другие продвинутые C++ библиотеки

NullReferenced 13.05.2025

В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .

Паттерны проектирования GoF на C#

UnmanagedCoder 13.05.2025

Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .

Создаем CLI приложение на Python с Prompt Toolkit

py-thonny 13.05.2025

Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .

Конвейеры ETL с Apache Airflow и Python

AI_Generated 13.05.2025

ETL-конвейеры – это набор процессов, отвечающих за извлечение данных из различных источников (Extract), их преобразование в нужный формат (Transform) и загрузку в целевое хранилище (Load). . . .

Выполнение асинхронных задач в Python с asyncio

py-thonny 12.05.2025

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

Работа с gRPC сервисами на C#

UnmanagedCoder 12.05.2025

gRPC (Google Remote Procedure Call) — открытый высокопроизводительный RPC-фреймворк, изначально разработанный компанией Google. Он отличается от традиционых REST-сервисов как минимум тем, что. . .

mpack

Site Moderator
Posts: 39134
Joined: 4. Sep 2008, 17:09
Primary OS: MS Windows 10
VBox Version: VirtualBox+Oracle ExtPack
Guest OSses: Mostly XP

Re: Hyper-V in VirtualBox or other ways to run Windows Phone

Post

by mpack »

Hyper-V is the name of a product. Only Hyper-V supports Hyper-V.

OTOH hardware virtualization support is called VT-x (or AMV-v), and yes, VirtualBox supports it. No, no guest will see it whether or not it’s enabled (it’s a feature of the host) — and I’d have thought the same was true in VMWare.

Andrew Brehm

Posts: 44
Joined: 28. Mar 2012, 17:19

Re: Hyper-V in VirtualBox or other ways to run Windows Phone

Post

by Andrew Brehm »

mpack wrote:Hyper-V is the name of a product. Only Hyper-V supports Hyper-V.

OTOH hardware virtualization support is called VT-x (or AMV-v), and yes, VirtualBox supports it. No, no guest will see it whether or not it’s enabled (it’s a feature of the host) — and I’d have thought the same was true in VMWare.

I guess I wasn’t clear enough in my question. I wasn’t asking about VTx or AMD-v support in VirtualBox.

Hyper-V, incidentally, does not support Hyper-V. Only bare metal does, or so I thought, but apparently VMware does too (perhaps because of their binary translation feature).

Whether VirtualBox supports (i.e. runs on or requires) VT-x wasn’t the question. I was asking whether it is possible, somehow, to run Hyper-V within VirtualBox, since it is required for the Windows Phone SDK and since VMware supports such a configuration (unofficially).

I understand VirtualBox does some binary translation for real mode and ring compression but I am not sure about the extent and whether complete binary translation and hence support for Hyper-V (or other VT-x-using hypervisors) is possible at all. It never mattered to me before.

mpack

Site Moderator
Posts: 39134
Joined: 4. Sep 2008, 17:09
Primary OS: MS Windows 10
VBox Version: VirtualBox+Oracle ExtPack
Guest OSses: Mostly XP

Re: Hyper-V in VirtualBox or other ways to run Windows Phone

Post

by mpack »

AFAIK, there is no hardware feature called Hyper-V. Hyper-V is the name of a VM product, a bare metal hypervisor. The underlying hardware feature is called VT-x, and VirtualBox supports it. You cannot run a VirtualBox VM inside a Hyper-V VM.

I must say that the blog you’ve found does appear equally confused about terminology: the blurb shows VT-x being enabled, but I’m not sure why the author thought this equivalent to enabling Hyper-V.

Andrew Brehm

Posts: 44
Joined: 28. Mar 2012, 17:19

Re: Hyper-V in VirtualBox or other ways to run Windows Phone

Post

by Andrew Brehm »

mpack wrote:AFAIK, there is no hardware feature called Hyper-V. Hyper-V is the name of a VM product, a bare metal hypervisor. The underlying hardware feature is called VT-x, and VirtualBox supports it. You cannot run a VirtualBox VM inside a Hyper-V VM.

I must say that the blog you’ve found does appear equally confused about terminology: the blurb shows VT-x being enabled, but I’m not sure why the author thought this equivalent to enabling Hyper-V.

I really don’t know where you got the idea that by «Hyper-V» I was referring to a hardware feature.

The Nokia article I linked to doesn’t do that either.

There was also nothing about running a VirtualBox VM inside a Hyper-V VM either.

The article I linked to is not confused. It simply explains how to run Hyper-V in a VMware VM. Apparently using binary translation (I assume) VMware can virtualise VT-x. I wanted to know whether the same feat is possible in VirtualBox.

I didn’t refer to a hardware feature as Hyper-V, I didn’t talk about running a VirtualBox VM in a Hyper-V VM, I have no idea how you came up with any of those things.

Petr Vones

Posts: 89
Joined: 27. Dec 2012, 01:20
Primary OS: MS Windows 10
VBox Version: VirtualBox+Oracle ExtPack
Guest OSses: Windows 10 64-bit
Location: Czech Republic

Re: Hyper-V in VirtualBox or other ways to run Windows Phone

Post

by Petr Vones »

Actually there are more blocking issues. Microsoft states that «There are known compatability issues for XAML designer when running in Virtual Box, we don’t support this scenario.»

noteirak

Site Moderator
Posts: 5232
Joined: 13. Jan 2012, 11:14
Primary OS: Debian other
VBox Version: OSE Debian
Guest OSses: Debian, Win 2k8, Win 7

Re: Hyper-V in VirtualBox or other ways to run Windows Phone

Post

by noteirak »

What you are asking is : «Can I run into a Virtualisation product another Virtualisation product from another editor?»
There will always be only one answer : Not supported, never will be supported.

i686

Posts: 1
Joined: 13. Apr 2013, 08:03

Re: Hyper-V in VirtualBox or other ways to run Windows Phone

Post

by i686 »

Late post, but i thought it might be interesting for some people. (Maybe, maybe not, who knows…)

Anyway, nested virtualization has been supported in ESXi and VMWare workstation for a long time. Those are the only type1 and type2 (respectively) hypervisors i know of p.t. that supports this. For many sysadmins (me included) this is a vital feature that will allow us to test different scenarios without having to ask our bosses (at work or at home ) to spend anything from a few thousand to tens of thousands on hardware for creating a test platform for hypervisors. Those of you who have been working as sysadmins for some years know the need for having a good testing environment to test stuff before putting it into prod. So virtualized vt-x must and will come. I always used virtualbox, even after oracle bought it and am very happy with it, but i’m seriously considering switching to vmware and buy a license only because of this feature (must use workstation because i have to much ram… bummer… ).

And thats the way the cookie crumbles…

midix

Posts: 5
Joined: 8. Oct 2012, 14:32

Re: Hyper-V in VirtualBox or other ways to run Windows Phone

Post

by midix »

I have been running Windows Phone 8 emulator in VMWare Player without problems. Yes, it required manual editing of .vmx file, but is works reliably and without any problems at all.

I really miss this feature on VirtualBox because I find VMWare Player to be bloated and it slows the host system down much more than VirtualBox does.

Запуск Windows Phone  на виртуальной машине Virtualbox

Содержание

  • 1 Запуск Windows Phone  на виртуальной машине Virtualbox
    • 1.1 Где взять эмулятор Windows Phone?
    • 1.2 Зачем запускать Windows Phone 8.1 на виртуалке?
    • 1.3 Как установить Windows Phone на виртуальную машину
    • 1.4 Управление Windows Phone на виртуальной машине

Для начала краткая вводная, предыстория, так сказать.

Поступил, значит, запрос от клиента «поднять» VPN. Да не простой, а такой, чтобы можно было подключаться с любых устройств и в первую очередь с мобильных. Особенно интересовал клиента Windows Phone, поскольку у него именно такой.

В мобильных устройствах есть нативные (т.е. «родные», встроенные в ОС)   VPN-клиенты, но они поддерживают подключение к VPN IPsec, по протоколу IKEv2.  Поэтому на linux-сервере клиента  был настроен именно такой VPN, с помощью Strongswan. Настроили подключение из Android, IOS и с обычной десктопной Windows — все работает.

А клиент со своего виндофона подключиться не может, хоть застрелись. Неделю бились. А это же еще нужно тестировать, а виндофона, разумеется, нету ни у меня, ни у  коллеги,  с которым это всё поднимали.  На тестирование приходится дёргать самого клиента.  А это время, это неудобство для клиента.   Стал искать возможность  запустить эмулятор Windows Phone. Оказалось такая возможность имеется, но только под винду — есть эмулятор для разработчиков приложений под Windows Phone.   А у меня Linux на рабочем ноутбуке.


Подумалось, что можно запустить виртуальную машину c Windows 10, например, а в ней этот эмулятор.  Но это не сработало, ибо тулкит затребовал поддержки Hyper-V, которого конечно же на виртуальной машине не будет. Для этого нужно установить Windows на «железо» — что мне не подходит.

winphone-emulator-fail

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

Идея проста. Нужно создать виртуальную машину и подключить к ней вместо диска уже готовый образ VHD (виртуального диска) с Windows Phone 8.1 на борту. Благо этот образ можно выдернуть из официального эмулятора WP 8.1  от Microsoft.

Зачем запускать Windows Phone 8.1 на виртуалке?

Ну если, например, как в моем случае  — вы работаете из под Linux или MacOS.  Или если вам нужно предоставить доступ к одной системе с  виндофоном для нескольких разработчиков по сети. Или вам нужно еще какие-то извращения вроде, прости хоспаде, запуска бота на смартфоне с Виндовс… В общем, мало ли. Да и вообще, это наше trueЪ путь — запускать с как можно меньшими «костылями» коими в нашем случае по-умолчанию является сама по себе Windows.

Как установить Windows Phone на виртуальную машину

Итак, с теорией разобрались, пора приступать.  Для начала понадобится установить Virtualbox.

Процесс наглядно показан вот в этом видео. Но тут кроме самой установки и запуска также показан процесс извлечения VHD из тулкита от MS.

Нам нужно создать машину с Windows 8.1 (32-bit).   При выборе в списке ОС она может быть без указания битности.

Когда Virtualbox начнет спрашивать про диск — выбирайте вариант — существующий.

ustanovka-windows-phone-virtualbox

Далее выбираем тот самый файл, который был скачан по ссылке и распакован.  В моем случае он был объемом около 1,8 Gb.

После создания заходим в настройки и выставляем 1 Gb оперативной памяти (можно было задать сразу) и 2 ядра процессора (CPU).

nastroika-cpu-windows-phone

Теперь всё готово, запускаем и  всё

vpn-windows-phone-emulator

Управление Windows Phone на виртуальной машине

При запуске на виртуалке включается клавиатура. Вот информация о маппинге клавиш для управления виндофоном с клавиатуры.

Активируется по pgUp или Pause/Break. Но ничего толкового с имеющимися клавишами сделать не удается. Нужно управлять пальцем.

А вот с этим большая проблема, если у вас не touch-устройство. Потому что запустить то её не проблема, но чем туда тыкать  — это вопрос.

Потому как курсора мыши конечно же вы не увидите. Хотя мышь вполне себе работает,  но управлять придётся «наощупь». А это очень сложно и долго. Как решить эту проблему я не разобрался. В итоге даже  не смог протестировать то что собирался.

vpn-windows-phone

Весь мой прогресс  — за час я добрался до настроек VPN и его включения.

windows-phone2

Но как создать профиль или уж тем более подключиться — это я не осилил. Бросил баловство и переключился на другие задачи.  Если знаете как решить этот вопрос — расскажите пожалуйста, буду

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • The tribez for windows
  • New windows terminal install
  • Как включить диспетчер устройств на windows 10 клавишами
  • Online driver windows 10 pro
  • Обновить карты навител для windows ce