Русский
Русский
English
Статистика
Реклама

Менеджер приложений для Windows Mobile

Предисловие

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

Меня всегда волновало удобство установки программ на старые устройства. Я уже давно держу свой FTP сервер для этих целей, а клиенты есть практически подо все операционные системы, но это всё равно не слишком удобно, особенно для людей, не сталкивавшихся раньше с FTP. Поэтому около года назад мне пришла в голову мысль сделать что-то вроде магазина приложений, но у меня всё как-то не было времени и желания и достаточных знаний, возможно. И на самом деле проект включает в себя не только WinMobile, но кучу разных мобильных и десктопных систем, таких как Symbian, Mac OS (classic), старые версии Windows, DOS, Palm... словом все, к которым у меня есть доступ для отладки и которые можно вывести в сеть. Почему же я начал именно с WM? Всё очень просто. Так вышло, что моим любимым языком программирования является C#, а на WM есть свой собственный .Net, который, хоть и с большим числом ограничений, позволяет писать приложения.

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

Как вообще сейчас писать под Windows Mobile?

Способов на самом деле много, но в любом случае понадобится Windows Mobile SDK. Я использую версию для WM 5.0, но она позволяет собирать приложения и для WM2003 и для WM6. В качестве IDE я использую Visual Studio 2008, но видел мануалы по подключению SDK к студиям вплоть до 2017. С VS2008 этот SDK работает из коробки, поэтому я просто создал виртуальную машину с Windows 7 (потому что на Windows 10 такая старая студия уже не устанавливается), поставил студию и всё заработало.

Окно проекта VS2008Окно проекта VS2008

Писать можно как на Visual C++, так и на C# с .Net Compact Framework 3.5. Для КПК существует отдельный Smart Device Project. Отладка производится либо на встроенном в SDK эмуляторе, либо на подключенном через ActiveSync физическом устройстве.

Эмулятор с WM2003Эмулятор с WM2003Но я предпочитаю использовать HTC CruiseНо я предпочитаю использовать HTC Cruise

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

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

Список приложений на сервереСписок приложений на сервере

Страница приложения содержит некоторое количество информации о нём и позволяет загрузить и установить программу.

Страница приложенияСтраница приложения

На вкладке "Установленные" находится список уже загруженных на устройство приложений. Здесь же можно удалить их или узнать некоторые свойства, такие как место установки, дата установки и т.д.

Список установленных приложенийСписок установленных приложений

Для доступа к настройкам приложения требуется выбрать меню "Действия" -> "Параметры". Выбор вкладки "Обновить" того же меню приведет к загрузке списков доступных и установленных программ заново.

Параметры менеджераПараметры менеджера

С помощью меню "Справка" можно узнать информацию о приложении, авторе и получить помощь в работе.

О ПрограммеО Программе

Немного о внутреннем устройстве

Как я уже говорил выше, я уже давно использую FTP-сервер с хранилищем приложений для разных устройств, поэтому он же и лёг в основу всей системы. Причем мне нужно по сути всего 3 команды: листинг, скачивание файла и считывание размера файла. В Net CF почему-то нет поддержки FTP, так что мне пришлось искать стороннюю библиотеку. Сначала я использовал OpenNetCF.Net.FTP, но потом просто взял оттуда нужные функции. Я всё равно к этому времени уже переписал часть библиотеки для своего удобства, поэтому "ванильную" версию всё равно использовать было бы нельзя.

Так как все файлы на сервере лежат в виде zip-архивов, мне понадобилась библиотека распаковщика. В качестве оной я взял ICSharpCode.SharpZipLib. К сожалению та версия, что сейчас лежит на гитхабе уже давно не поддерживает WinMobile, но я нашел старую DLL-библиотеку, собранную ещё в 2008 году и она заработала без проблем.

Далее - установка. Я использую вызов стандартной утилиты wceload для установки Cab-файлов. Сейчас она запускается со своим интерфейсом, но в будущем я хочу сделать установку тихой, не прерывая работу менеджера. Если же программа представляет из себя одиночный exe или папку, то я копирую её в установочную директорию и "руками" создаю ярлык и инсталляционные записи в реестре.

И наконец список установленных приложений вместе со свойствами просто считывается из реестра из ключа HKLM\Software\Apps.

Кроме этого мне пришлось написать свой собственный диалог выбора папки, окно "О Программе" и некоторые методы (например, определение свободного места в памяти), потому что их тоже нет среди стандартных функций Net CF.

Итог

Я написал эту статью по большей части для того, чтобы оценить интерес людей к подобному проекту. Ну и привлечь к нему внимание, конечно. Учитывая, что это, по сути, только начало пути, я думаю, будут ещё статьи о работе над менеджером и сопутствующих вещах.

Этот проект, как и другие мои поделия можно найти на моём гитхабе.

Пожалуй и всё, что мне хотелось сказать сегодня.

Источник: habr.com
К списку статей
Опубликовано: 28.01.2021 18:09:16
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Net

Разработка мобильных приложений

Сетевые технологии

C

История it

Windows mobile

App

Программирование

Ретро

Кпк

Ftp

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru