Менеджер приложений для 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.

    Итог

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

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

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

    Средняя зарплата в IT

    120 000 ₽/мес.
    Средняя зарплата по всем IT-специализациям на основании 5 897 анкет, за 1-ое пол. 2021 года Узнать свою зарплату
    Реклама
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее

    Комментарии 24

      +3
      Лампово. Спасибо.
        0
        Огнененно! А что будет, если запустить на Винде?)
          +2
          Ничего не будет. Не запустится.
            0
            Так, интересно. С чем это связано? У Net CF 3.5 есть свои API? Т. е. это не подмножество .NETF 3.5? Жаль, что тогда не было NetStandard.
              0

              Не знаю, я не разбирался. Но у меня не запускалось.

              0

              Странно. В своё время писал софтинку для учета своей зп на .net cf — у меня оно запускалось на десктопе. Может нет .net 3.5 ?

                0

                Да нет, всё на месте. Может я что-то не так делаю. Но я не разбирался. Меня устраивает то, что приложение работает на целевой платформе

                  0
                  Почини! Давай помогу!
            0
            С моей точки зрения заниматься разработкой под Windows CE примерно то же, что программировать на Fortran. И то, и другое уже отыскать очень сложно, хотя Windows CE официально еще не похоронен.

            Пару дней назад видел эту ОС в Пятерочке на сканере шрих-кодов. И, как мне кажется, это исторически так сложилось. На данный момент сканер можно сделать из ESP8266 + модуль камеры. Тащить операционку для такой задачи ни к чему.
              +5

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

                0
                Есть некоторые кадры (не я), которые пишут на Fortran, плюс баги на компилятор заводят.
                  +1

                  Каждый сходит с ума по своему

                  0
                  Куча ТСД на винСЕ остались. И учитывая их надежность — будут еще доооолго работать на местах.
                  +2
                  А когда это 2008 студия на Windows 10 перестала ставиться? Вроде ставилась и работала.
                    0

                    Почему выбрали именно FTP для скачивания приложений, а не загрузку с веб-сервера через HTTP? В этом случае и листинг и метаданные и учёт числа загрузок можно было бы реализовать через нормальное полноценное API.

                      +1

                      Потому что, как я говорил, FTP сервер работает у меня уже давно, настроен и т.д. и т.п. Веб сервер можно, конечно, поднять, но не вижу смысла в двух серверах на одной железке, копирующих по сути друг друга. Тем более пробный вариант приложения я набросал под десктопную Винду и там всё было нормально… И кто же мог знать, что Майкрософт решит по какой-то причине выбросить поддержку FTP в мобильном .Net.


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

                        0
                        Но в Net CF изначально поддержки нет. В таком случае действительно нет же разницы? А вот возможности HTTP действительно, позволяют прикрутить кучу действий, вплоть до профилей, индивидуальных списков приложений и установки списка приложений в один клик (например при начальной настройке кучи устройств). Ну и учет всего этого на сервере, статистика и т.п.
                          0

                          Почему нет разницы? Я взял стороннюю библиотеку (и существенно её переписал) так что всё работает. FTP клиенты для WinMobile есть в любом случае. HTTP действительно удобнее для загрузки, но не переделывать же мне всю свою давно настроенную сеть ради этого? К тому же я уверен, что половины поддержки того, что вы перечислили все равно нет в NetCF.

                            0
                            То что я перечислил относится скорее тому, что дает использование «умной» серверной части. А на клиенте только использование этих возможностей.

                            К тому же я уверен, что половины поддержки того, что вы перечислили все равно нет в NetCF.

                            Поддержка http как транспорта — есть. Остальное — код приложения. Итого на одну внешнюю зависимость меньше получается.
                              0

                              Ещё раз. Мне придется переделывать всю серверную часть, а вместе с этим перенастраивать кучу клиентских устройств. И кроме того — переписывать код приложения. И всё это при условии работоспособности программы уже сейчас.

                      +1

                      Ностальгия… У меня только самые позитивные воспоминания о КПК на win mobile. После symbian это казалось был прям полноценный комп) А вот андроид и iOS меня разочаровали в свое время. Первый смарт на андроиде 2.1 HTC hero был. По сравнению с менее мощным КПК этот hero совсем не радовал скоростью работы и автомоностью. Многозадачность была такой, как будто её не было. Часто, при переключениях с одного приложения на другое предыдущее перезапускалось. Ну и стабильность у андроид была точно не лучше чем у win mobile в то время. Да и вообще, было ощущение, что из за пальцеориентирования случился даунгрейд по функциональности. Программы на wm были богаче по функциям чем на андроиде. Стилус позволял делать элементы UI меньше по размеру, а потому все необходимое помещалось на одном экране и было всегда под рукой. В андроиде же приходилось переносить элементы все в менюшки или на другие экраны, чтоб уместить все нужное. В общем, у меня тогда юзер экспириенс упал с переходом на андроид.

                        0
                        Hero зато прикольный сам по себе. Необычный из-за изгиба и трекбола. Я недавно отремонтировал себе экземпляр и рад этому.
                          0
                          Desire с оптическим трекболом не лучше?
                            0

                            Может и лучше, но я его никогда не щупал.

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                      Самое читаемое