Перенос программ Windows x86/64 на Windows 8 ARM

Эта статья (из группы инженеров Windows) говорит:

WOA [Windows On ARM] не будет поддерживать какой-либо подход к виртуализации или эмуляции и не позволит портировать или запускать существующие приложения x86/64.

Означает ли это, что я даже не смогу перекомпилировать приложение x86/64 из исходного кода для ARM?

Если да, то что именно мешает мне это сделать? Насколько я понимаю, Win32 API присутствует в Windows 8 рук.

Если нет, то что они имеют в виду, говоря о невозможности переноса приложений x86/64 на ARM?


person HighCommander4    schedule 06.03.2012    source источник


Ответы (3)


В Win8 для ARM поддерживается только часть Win32:

Если вы попытаетесь создать приложение, использующее неподдерживаемый API Win32, оно не будет создано, поскольку этого API не будет в библиотеке. Если вы попытаетесь создать собственную библиотеку для поддержки API, приложение все равно не будет использоваться, потому что единственный способ развернуть приложения для клиентов будет через магазин приложений MS, который, несомненно, проверит соответствие API.

Из Статья "Создание Windows для процессорной архитектуры ARM":

Потребители получают все программное обеспечение, включая драйверы устройств, через Магазин Windows и Центр обновления Майкрософт или Центр обновления Windows.

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

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

person Michael Burr    schedule 06.03.2012
comment
Я думаю, что все Win32 (приложения x86) должны быть преобразованы в API WinRT? Поскольку для создания приложения Metro (которое может работать на ARM) разрешено использовать только WinRT API, верно? - person onmyway133; 20.06.2013

Из статьи Windows, на которую вы ссылаетесь, второй цитируемый абзац является убийцей. Перенос существующих приложений определенно НЕ поддерживается.

Разработчики, желающие нацелиться на WOA, делают это, создавая приложения для WinRT (Windows API для создания приложений в стиле Metro) с использованием новых инструментов Visual Studio 11 на различных языках, включая C#/VB/XAML и Jscript. / HTML5. Собственный код, предназначенный для WinRT, также поддерживается с использованием C и C++, которые можно использовать для разных архитектур и распространять через Магазин Windows. WOA не поддерживает запуск, эмуляцию или перенос существующих настольных приложений x86/64. Код, использующий только системные службы или службы ОС из WinRT, можно использовать в приложении и распространять через Магазин Windows как для WOA, так и для x86/64. Потребители получают все программное обеспечение, включая драйверы устройств, через Магазин Windows и Центр обновления Майкрософт или Центр обновления Windows.

Если бы мы разрешили широкое портирование существующего кода, мы не смогли бы выполнить наше обязательство по увеличению времени автономной работы, предсказуемой производительности и, особенно, надежной работе с течением времени. Условные обозначения, используемые в современных приложениях для Windows, не обязательно предоставьте это, будь то фоновые процессы, циклы опроса, таймеры, системные перехватчики, программы запуска, изменения реестра, код режима ядра, права администратора, неподписанные драйверы, надстройки или множество других распространенных методов. Избегая этих конструкций, WOA может выйти на новый уровень удовлетворенности клиентов: ваш ПК с WOA будет продолжать хорошо работать с течением времени, поскольку приложения будут изолированы от системы и друг от друга, и вы по-прежнему будете контролировать, какое дополнительное программное обеспечение работает на нем. от вашего имени, при этом позволяя проявиться возможностям разнообразного оборудования.

person arx    schedule 06.03.2012
comment
Итак, что же конкретно пойдет не так, если я просто перекомпилирую существующее приложение для ARM? - person HighCommander4; 06.03.2012
comment
@HighCommander4: Как? MS хочет, чтобы вы ориентировались на WinRT, поэтому я думаю, что они не будут предоставлять библиотеки импорта и т. Д. Для win32 на ARM. Даже если вам удалось что-то взломать, приложения распространяются через Магазин Windows, поэтому я думаю, что MS отклонит это. - person arx; 06.03.2012
comment
@HighCommander4: Win32 НЕ поддерживается на процессорах ARM, если вы хотите разрабатывать «собственные» приложения C/C++, которые вам ДОЛЖНЫ быть ориентированы на интерфейс WinRT, представленный в Windows 8. - person madman1969; 06.03.2012
comment
@madman1969: Он не поддерживается, но он есть, так что на самом деле мешает мне его использовать? - person HighCommander4; 06.03.2012
comment
@HighCommander4: Две главные вещи. Во-первых, нет никакой гарантии, что какие-либо функции Win32 будут работать вообще или вести себя так, как вы ожидаете. Во-вторых, что более важно, приложения Windows 8 ARM будут распространяться только через Магазин Windows. Таким образом, если MS требует, чтобы такие приложения использовали WinRT как часть своих Условий, ваше приложение будет отклонено. - person madman1969; 07.03.2012

Они делают это предостережение немного дальше в вашей цитируемой статье:

Кроме того, разработчики с существующим кодом на C, C++, C#, Visual Basic или JavaScript могут свободно включать этот код в свои приложения, если он нацелен на набор WinRT API для служб Windows.

У них есть версии Office и IE; Я уверен, что это не были повторные реализации с нуля.

person sarnold    schedule 06.03.2012