Показаны сообщения с ярлыком Windows Store. Показать все сообщения
Показаны сообщения с ярлыком Windows Store. Показать все сообщения

четверг, сентября 03, 2015

Приключения с Windows 10, визуально-студийные

… или при Балмере такого не было.

Перенёс программку на Windows 10 – никаких особых изменений, только необходимые мелочи в интерфейсе. После сборки пакетов отправил их в магазин и после публикации попытался установить её на планшет. Облом – скачивается, но при установке случается ошибка 0х80073800. И больше ничего в магазине не говорят. Bing с Гуглем ситуацию почти никак не проясняют. 

Решил сделать по правилам – протестировать пакет в Студии. Да, эта ошибка проявляется, вываливаются “пояснения” и “рекомендации”:

image

Но от такой “информативности” ничуть не легче: что за локализация картинки? Где искать/редактировать эти ResourceMap и NamedResource? Как смотреть/редактировать файл resources.pri, если он бинарный и генерится во время сборки? В общем, бред какой-то…

Методом тыка выяснилось, что такую ошибку вызывает только файл, предназначенный для “Квадратного логотипа 150х150”, если в нём вводился текст (одна буква) в редакторе Студии. Буква, нарисованная кисточкой, та же буква в файлах для других логотипов, эмблем и сплешей, а также буква, введённая при помощи суперпрограммы “Paint”, никаких эмоций у инструмента не вызывает. Смешно, конечно, но очень уж длинный цикл выяснения, сглючит тот или иной файл, или пройдёт проверку.  Да и что тогда делает процедура тестирования в магазине, если этого недостатка пакета не отлавливает?

В итоге включил в пакет вариант от Paint’а, пакет стал устанавливаться.

В общем, что новая ОС, что средства разработки под неё – весьма своеобразные штуковины… Долго ещё вокруг кувыркаться будем.

 

среда, мая 27, 2015

Тотальный диктантор

Нравится мне эта затея – Тотальный диктант. Посмотрел материалы сайта, даже онлайновый тест потыкал (не разочаровался - с правописанием справился, только насчёт запятых у нас с Д. Быковым понимание оказалось разным). Писать в реальном режиме, когда акция проводится, не пробовал – опоздал, да и не сильно интересно, чтобы какая-то неизвестная мне училка оценку ставила…
А вот офлайновых возможностей организаторы предусмотрели маловато, особенно для первых акций. Пошарил на Youtube, там нашлись ролики с диктовками (это когда не просто зачитывается текст, а произносится чётко, по предложениям – как в школе), правда, не для всех диктантов. Тексты диктантов вывешены на сайте акции, там же есть комментарии по правописанию и пунктуации для некоторых диктантов. Пришёл к мысли, что можно это всё собрать в одном месте и дать возможность желающим поупражняться в по-настоящему сложных диктантах.
В итоге манипуляций с роликами, текстами, файлами комментариев, хостингом и т.п. получилась вот такая программка для Windows 8.1:


Доступные диктанты:



Процесс написания диктанта:

На десктопе с обычной клавиатуройНа планшете с сенсорным экраном

Результат проверяем самостоятельно!





Самым непростым оказалось размещение файлов с материалами – их набралось даже после урезания роликов с диктовкой до минимального пристойного разрешения (здесь сильно большого, вроде, и не требуется) ок. 400 Мб. Сложить их все в пакет для Магазина вполне можно, даже можно загрузить пакет в магазин на тестирование (загружался около 30 мин.), но вряд ли много пользователей спокойно вынесут такую долгую установку приложения… Решил, что в пакете оставлю набор только для одного диктанта – типа, ознакомительный – а остальные загружу после установки программы, когда юзер будет видеть, что происходит, с какого-нибудь бесплатного хостинга (не использовать же платный для бесплатной программы). Попутно выяснилось, что большинство бесплатных облачных хранилищ файлов (Яндекс.Диск, Облако Mail.ru, Google.Disk и др.) с таким подходом не согласны – формируют ссылки не файлы, а не страницы, с которых файлы можно скачать. “Вручную” файл загрузить можно, а вот программно – большой вопрос (можно, конечно, парсить эту страничку и пытаться выудить оттуда настоящую ссылку на файл, но тут придётся сражаться с фантазмами тамошних программеров/дезигнеров, которые выскочат неизвестно когда и в каком направлении – плавали, знаем). В итоге пришлось, всё же, воспользоваться платным сервисом – пока не найдётся подходящий бесплатный…
По требованиям Магазина пришлось соорудить “сайт программы” – спасибо Google, что пока не закрыл сервис страниц. По моде зачем-то открыл “страницу программы на Фейсбуке” – может, пригодится для чего-нибудь…

Ну, и добро пожаловать потестировать, поставить 5 звёзд и написать отзыв.

Версию для телефона делать не стал – не смог представить, как исхитриться писать диктант на телефоне…
Версию для десктопа возьмусь делать, только если она кому-то понадобится – всё же, на дворе 2015-й год и через пару месяцев обещают выпустить практически бесплатную для тех, у кого “семёрка”, Windows 10, на которой программка тоже работает.

четверг, октября 16, 2014

Игрушечка-8 или Windows 10

Как всё прогрессивное человечество, скачал и установил на виртуалку то, что все давно ждали – очень универсальную ОС Windows 10. Поудивлялся, что не “9”, но не долго (хозяин – барин, мой рояль, куда хочу, туда и ставлю). Установил из магазина свою программку и решил посмотреть, как использующиеся в ней разные технологии работать будут.
На втором же шаге выяснилось, что одна из SettingsFlyout, использующихся для настроек программы, не желает работать - другие вполне себе работают, а эта молча не показывается вовсе.
После запуска программки на windows 10  под отладчиком на проблемной страничке прямо в конструкторе получаю ошибку с сообщением "XAML parsing failed.". Вот и здрасьте...
Бля!!! Дело оказалось в задании значений для комбобокса:
<x:Int32>50</x:Int32>
<x:Int32>100</x:Int32>
Заменил целые на строки, и всё стало работать:
 <x:String>50</x:String>
<x:String>100</x:String>
Пришёл к выводу, что в дальнейшем такие вещи надёжней делать в коде, хоть в конструкторе XAML и удобней иногда. Мало ли, какие ещё глюки в XAML-парсер добавят. И как оно там будет, когда эту “универсальную” ОСь на телефон поставят…

воскресенье, июня 01, 2014

Игрушечка-4 или Sharing

В программке для отправки данных на сервис Last.fm использовал приём и обработку информации от других программ. Использовал тексты, которые парсятся при помощи регулярных выражений.
Достаточно случайно заметил, что некоторые программы могут делиться не только текстами и скриншотами, но и выделенными в них файлами:
image
Пришлось сделать обработку этих файлов – извлекать из них, если есть, медиа-информацию, и отправлять её на сервис. Благо, такая функция в программе уже была, только применялась для файлов, выбранных File Picker’ом.
При более внимательном рассмотрении выяснилось, что подобный фокус можно проделать также и с использованием “традиционных” файловых менеджеров – Explorer, Far – лишь бы они умели выполнять операцию копирования в clipboard. Для взаимодействия с моей программкой используется переходник – программа Clipboard (“Буфер обмена”):
image
В обоих случаях запускается обработка группы файлов:
image

среда, мая 28, 2014

Ничего нового…

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

Всё шло хорошо до момента сборки пакета для телефонного магазина (пакет для магазина Windows собрался без приключений). Телефонная сборка не удалась с сообщением "Ошибка 20: манифест приложения ссылается на изображение …, которое не имеет кандидата в главном пакете приложения." или  "APPX3210: App manifest references the image … which does not have a candidate in main app package.". Выяснилось, что к такому приводит использование “визуального редактора” манифеста, который “помогает” выбрать файл для графического ресурса. При этом файл переименовывается и иногда может записываться в папку телефонного приложения. Если же путь к файлу написать руками, никаких переименований-перемещений не будет, а работать программка будет и так.

image

 В проекте для Windows такого прикола нет, в итоге общая папка картинок для тайлов выглядит так (файлы с суффиксом .wp телефонные, остальные для windows):

image

Собственно, ничего необычного: здесь переименовали, там об этом позабыли, а тут - рыбу заворачивали (©).

 Если всё же удалось в передрягу с телефонными файлами попасть, надо переименовать файлы взад (убрать .scale-100), удалить папки \bin и \obj, переименованные файлы включить в разделяемый проект. Не болтай

воскресенье, мая 25, 2014

Игрушечка-3 или Универсальные приложения.

Модное направление - как бы из одного кода получать приложения как для Windows 8.1 - десктоп, планшет – так и для смартфонов под Winphone 8.1.

clip_image001

Что называется, уговорили, черти красноречивые… Пришлось запустить вторую версию программки, теперь в технике “универсального” приложения. 

Microsoft для изготовления таких приложений выпустила специальное обновление для Студии 2013, которое, в общем-то, нормально в работе помогает - шаблоны проектов, ссылки на общие файлы, конвертация предыдущих проектов и т.п.

Самое большое, что пришлось переделывать – это вызов страниц типа “About program”, “Settings” и т.п. В предыдущей версии (для Windows) программы для этого использовались страницы типа SettingsFlyout с вызовом через системные средства:

2.settings

В телефонном API таких средств не находится, поэтому пришлось делать отдельные страницы типа Page и запускать их через системное меню:

form-2-green-2

Самое крупное, до чего не додумались почему-то в Microsoft – это условная компиляция XAML, наподобие #if … #endif в C#. Очень скоро выяснилось, что без этого жить сильно сложно - внешний вид в win- и wp-приложениях может (иногда и должен) сильно различаться: расположение и оформление контролов, даже разный их набор… Можно, конечно, разрулить кодом, но тогда зачем XAML?

Хорошие ребята, всё же, до нужного решения додумались - XAML Conditional Compilation. C этим решением возможны конструкции наподобие такой:

clip_image001

Студия, правда, не сильно это понимает, талдычит об ошибках там и сям и неправильно рисует внешний вид страниц в конструкторе. Иногда приходится по-разному называть контролы - по мнению Студии, имена используются дважды… Увеличивается количество строк в ресурсах для локализации… При сборке приходится дополнительно запускать очистку решения - но эти неудобства перекрываются тем, что не нужно писать массу "художественного" - для отрисовки - кода (которого и без этого хватает).
Выяснились некоторые другие проблемы отрисовки на телефоне некоторых элементов – AppBarButton, ComboBox.

Ещё выяснилось, что “просто так” шрифт для разных телефонов не масштабируется. Иногда на большом –  шестидюймовом - телефоне можно некоторые надписи и не рассмотреть.

В случае надписей “при полях ввода” достаточно установить стандартный стиль:

 

clip_image001

 

Для “заголовков”, которые хочется видеть “пожирнее”, стили нужны разные:

 

clip_image002

 

В итоге получается достаточно пристойно на разных устройствах. Становится хуже, если начать крутить в настройках телефона размер шрифта - можно на максимуме получить наползающие друг на друга строки и т.п. Как с этим бороться - ХЗ. Скорей всего, и не стоит: которые крутят на максимум - ССЗБ.

 

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

 

Гораздо смешнее оказалась ситуация с получением данных о проигрываемой музыке от других программ. Этот режим стал для меня лично основным режимом использования программы: слушаю на планшете, например, калифорнийское джазовое радио через турецкую программу RADYO,  периодически нажимаю кнопку шаринга и отправляю данные на Last.fm. Буквально 4 движения-нажатия. Набралось несколько и других программ, через которые иногда слушаю музыку.

Во второй, универсальной, версии, расширил перечень принимаемых при обмене форматов в попытке получить дополнительную информацию. Получилось извлечь нужную информацию из данных от программ  jamendo и 22tracks, в которых тоже есть неплохая музыка. Но всё это в Windows-окружении.

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

Те программы, аналоги которых на Windows работают как требуется, для телефонов либо отсутствуют, либо обмениваются только “текстом” с адресом страницы. Обмен в "нормальном" виде, с информацией о треке - только с Твиттером и Фейсбуком, чистый хардкод.

В принципе, для телефонов есть пара клиентов Last.fm, передающих информацию о проигрываемых треках, однако не все проигрыватели пользуются стандартными средствами и скробблеры их не понимают. Так что, для статистики на last.fm они потеряны.

 

Из функций программки, в итоге, телефону достаются только ручная набивка данных в форме и скробблинг по файлам на диске. До появления программ, разработанных под WinPhone 8.1, вовсе не обязательно “универсальных”.

 

Страница с описаниями -  https://sites.google.com/site/dyakovkm/lastfmuniwrite

 

Программы можно взять в магазинах:

 

  

пятница, апреля 18, 2014

Игрушечка-2 или LastFM Writer

Некоторое время назад начал делать программку для ручного скробблинга под Windows 8.1.

За прошедшие 3-4 месяца ничего, по большому счёту, в этой области не изменилось (если не считать появления плеера Duet with Last.Fm, который сам играет, сам и скробблит), то программка получила несколько дополнительных функций, надобность в которых возникла у меня самого.

Во-первых, добавил возможность извлекать информацию непосредственно из аудиофайлов. Использую в сценарии, когда запускаю проигрыватель на папке с аудиофайлами, а скробблинга по какой-либо причине не происходит. Обрабатываются, правда, только mp3- и wma-файлы – других WinRT не знает (или хорошо знания скрывает).

Во-вторых, добавил возможность принимать от других программ (по стандартному механизму “шаринга”) текстовые строки и выделять из них информацию по аудио-треку при помощи регулярных выражений. Использую в сценарии, когда какая-то мелодия, например, в радиоприёмнике, распознаётся программой Shazam, а результат передаётся в мою программку:

shazShar

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

Как для любой порядочной программы, пришлось завести сайт с описанием, на который понаставил ссылок в самой программе Winking smile.

Чуть ли не самое смешное в процессе разработки и публикации программы – тестирование перед отправкой и в магазине. При запуске тестов после сборки (Студия 2013 имеет соответствующую примочку) на рабочем десктопе регулярно получал отрицательный результат при тестировании перехода в suspend. Все остальные проходят, при самостоятельном запуске программки suspend на месте, а вот в тестах – хоть убейся. Водрузил на планшет express-версию Студии, делал сборку и тестирование там – тест проходил успешно. По прошествии некоторого времени, правда, глюк прошёл – и на Windows ставились обновления, и на Студию – что-то исправило ситуацию…

При прохождении тестов в магазине труднопреодолимым местом оказалась любовь тестеров к запуску программы на расхлябанной системе – в частности, с неверно выставленным временем. И даже не сам этот тест труден (нужно, конечно, и в такой ситуации вменяемо работать), а оказалось очень непросто обратить внимание тестеров на то, что программа в сообщении призывает поменять время на правильное. И даже сочинить раздел “Системные требования” на сайте программы.

Второй камень преткновения – любовь тестеров к переносу пароля из описание в поле логина могучим методом copy/paste, который часто делает не то, на что надеялся тестер. В результате программа возвращается на доработку в сопровождении рекомендации проверить, не закончился ли срок действия пароля на сервисе и прочей чепухи. Кончилось тем, что завёл на сервисе специальную тестовую учётку, а в программке подставляю для неё правильный пароль. В итоге тестер может переносить пароль любым самым бессмысленным способом - аутентификация на сервисе проходит нормально.

Собственно, на этом в развитии программки решил остановиться. Появятся потребности – начну версию 2.

WinStor

среда, января 29, 2014

Игрушечка.

Была у меня всегда (думаю, лет 8 уже) программка для "ручной" отправки данных на сервис Last.fm – если, например, хочется добавить к своей статистике трек, услышанный по радио, на youtube и т.п. Нашлась где-то библиотека под .NET с открытыми исходниками, и между делом соорудил такую программку (тем более, там и делать-то особо нечего…).
Конечно, основной способ пополнения музыкальной статистики – “скробблеры” для медиаплееров и до появления планшета под Windows 8 их вполне хватало и программкой пользоваться приходилось довольно редко. Но при попытке найти скробблер для metro-приложений был весьма озадачен их полным отсутствием. На WP8 есть, а на Win8 – нету… Даже популярная Shazam для распознавания мелодий функции отправки данных на сервис не предлагает. Смешно…
Пришлось поупражняться немного в сооружении “магазинных” приложений для Win8.1 и с какой-то попытки адаптированную под metro-интерфейс программку приняли в магазин Windows под гордым названием LastFM Writer. Ну, приняли – и хорошо, может, кому пригодится…
Сегодня получаю письмо, что программка-то - практически супер-пупер:
Your app "LastFM Writer" has been tested and rated by the BestWindows8Apps.net. Feel free to use Editor's pick award on your web page to show your visitors how highly we value your app.

Ну вот, так и придётся какие-то усовершенствования вносить…Turtle

четверг, июля 11, 2013

Компьютер для матери

Решили на "семейном совете" организовать "компьютеризацию" своей матери (старше 80 лет, компьютерного опыта нет совсем), живущей в не самом развитом областном центре. Цель - обеспечить более "тесную", чем телефонная, связь, дать матери возможность получать информацию не только из телевизора и казённого радио (в городе никакого "Эха Москвы" нет и в помине, "оппозиционные" газеты или не продают совсем, или их весьма сложно купить).

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

Железо и ОС.

Выбор, собственно, был из двух вариантов: notebook или планшет. Под Windows 8.
Десктоп отмели сразу - очень уж громоздкая штуковина для наших целей.
iOS отмели по причине дороговизны на ровном месте (а также собственного слабого знакомства с огрызочными штучками).
Windows 8 выбрана после наблюдений за женой (у неё десктоп под Windows 7) и внучкой (она иногда копается в планшете под Windows 8) - у внучки получается более ловко.

В итоге выбрали 15" notebook ASUS - X55A:

clip_image001

Достаточно мощный, с довольно большим экраном, с очень полезным, как позднее оказалось, Ethernet-входом… Ну, и невысокая цена тоже играла свою роль - при неудаче всего предприятия не так уж и жалко выбросить, по сравнению с втрое более дорогим планшетом. А там посмотрим…

Дополнили девайс беспроводной мышкой и недорогим, но весьма функциональным WiFi роутером - собственно, всё готово, уложились в $350.

Софт

Для входа используется account на Outlook.com, вход после загрузки настроил без запроса пароля. Админские права исключил, для управления настроил отдельный админский локальный account с паролем.

Восьмёрка, так восьмёрка - решил сделать основной упор на использование метрошных программ.

Для связи - Skype из Windows Store и Facebook в IE10. Accounts - те же, что для входа.

Для информации и развлечений - приложения из Store Ivi.ru, Дождь, Радио, Литрес, Кинопоиск, Twitter с настройками на чтение некоторых газет.

Погода - через "встроенную" программу "Погода", программа ТВ - на Яндексе в IE10. Для нормальной работы зарегистрировался на Яндекс.почте.

Для удалённого управления установил десктопного клиента TeamViewer с автоматической загрузкой. Установил для админского account'а несколько утилит - 7zip, Foxit reader, Far, Procexp, Autostart, Ccleaner.

"Внедрение"

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

Самым сложным оказалось научить пользоваться мышкой или тачпадом - попасть курсором в нужное место и нажать кнопку, чтоб курсор не упрыгнул… С клавиатурой тоже не легче - глаза разбегаются на сотне клавиш, да ещё нажатия с модификаторами… Представляю, что было бы в Windows 7 с её меню, двойными кликами, рамками и кнопками окон, прочими прелестями. Нам-то привычно, а вот новому человеку гарантировано отвращение надолго…

Пробовал в процессе обучения подсовывать 10" планшет с тачскрином, но он обучаемую не впечатлил - экран заметно меньше, а глаза уже не соколиные :-(

Итог

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

Через TeamViewer несколько раз наблюдал достаточно уверенное хождение по разделам на ivi.ru в поисках фильма.

В общем, мероприятие можно считать удачным.

четверг, мая 02, 2013

Sharepoint и Windows Store - 4

Как, в общем-то, и ожидалось, прислали из магазина отлуп:

Нам не удалось сертифицировать SPExplorer для Магазина Windows, так как мы обнаружили проблему. Чтобы узнать, в чем дело, просмотрите отчет о сертификации с помощью инфопанели

Естественно, в этой “панели” рассказывается про использование “неправильного” API.

Последняя возможность соорудить, всё же, программку для работы с Sharepoint в Windows 8 – использование для получения данных REST-интерфейса (сервиса).

В магазине обнаруживается приложение “SharePoint REST Toolkit”, которое, правда, не соединяется с сервером SP 2010, но содержимое узлов SP 2013 показывает исправно. Написано приложение на jscript. На codeplex можно найти пример, как можно написать похожее приложение на CSharp, которое нацелено на работу с Sharepoint Online (в приложении используется лишь тот способ аутентификации, который нужен на SPOnline).

Собственно, доработать аутентификацию (учесть FBA и WinAuth) больших научных подвигов не требует – и вот, приложение соединяется с любыми (по крайней мере, доступными мне) серверами SP2010 и SP2013 и получает ответ на запрос к сервису /_vti_bin/ListData.svc (данные SP-списков). Ура!

Правда, довольно скоро выясняется, что в случае SP 2010 все радости этим и ограничиваются. В SP2013 способы REST-работы изменены радикально – используется сервис /_vti_bin/client.svc (/_api), который есть и в SP2010, но используется там только через CSOM. Собственно, тут и конец всей истории – программка для просмотра только списков мне лично не нужна (трудов – море, а толку – чуть), а для SP2013 написать полноценный SP-браузер, может, и можно (надеюсь, API позволяет), но для этого надо - ни больше, ни меньше – написать для REST-вызовов обёртку наподобие CSOM. Думаю, в следующей версии SharePoint такая обёртка появится. Ну, или изменятся отношения между подразделениями, занимающимися Sharepoint и “безопасностью” WinRT и мы увидим версию CSOM, пригодную для использования в “магазинных” программах для планшетов и телефонов.

Если, конечно, вся эта затея с WP-телефонами и Windows-планшетами до тех пор не помрёт тихой смертью…

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

вторник, апреля 09, 2013

Sharepoint и Windows Store - 3

Буквально через три дня после предыдущего поста на эту животрепещущую тему  обнаружилась прекрасная наводка от Mark Racley на решение проблемы использования CSOM-библиотек для подключения к удалённому серверу Sharepoint. Действительно, Windows Runtime Component с подключёнными SP-сборками выполняет подключение к ферме, запрашивает и отдаёт данные:

 image

Сборки использовались от Sharepoint 2013, 2010-е использовать невозможно из-за конфликта версий .NET (очень уж древней оказалась версия, использованная в SP-2010). Сам компонент стандартным образом подключается в проект для Windows Store:

image

Код для доступа к удалённым SP-узлам тот же, что в утилите SpfExplorer. Были некоторые сомнения относительно передачи и использования в CSOMWinRTComponent делегатов из SPExplorerCSOM Win8 (CS) (всё же, версии framework’ов, вроде бы, разные). Но всё обошлось, делегаты передаются и узлы деревьев благополучно рисуют.

Следующее возникшее сомнение – при выборе средств построения пользовательского интерфейса. Вариантов, собственно, два – C# + XAML или HTML + JS

При использовании C# нужно бороться с ужасной хренью в виде XAML с его жуткой моделью элементов интерфейса. "Стандарты" в виде студийных проектов предполагают использование MVVM с биндингом данных. В случае же "деревянных" данных, как в SP, слабо представляется, что и как там надо привязывать. Да и дерева там, собственно, нет, все советуют реализовывать его самостоятельно…

При использовании JS есть надежда, что борьбу с ним можно ослабить при использовании TypeScript, а строить дерево на HTML когда-то все умели… Правда, при внимательном рассмотрении выясняется, что и на HTML программы предлагается делать так же, как на XAML (через специфические атрибуты). Может, конечно, и "обычный" HTML пойдёт, но экспериментировать с этим как-то не сильно хочется…

В итоге, с учётом всех мнений, выбран вариант C# + XAML, дерево для вывода данных – собственного изготовления. После долгих кровопролитных сражений с XAML (о ходе и результатах сражений как-нибудь попозже в отдельных постах) получилась программка, пригодная для эксплуатации на планшете с использованием пальцетыканья. Нормально подключается к серверам SP-2010 и SP-2013 и выводит данные в виде дерева:

8. tree and buttons

Следующая, совсем отдельная задача – размещение программки в магазине Windows 8 (а другого официального способа распространения и нет, вроде бы). Здесь вовсе уж цирк – проверка в Студии на соответствие требованиям не проходит:

image

Собственно, уговорить разработчиков Sharepoint исправить ситуацию с использованием “не того” API (а список неправильных вызовов довольно длинный) я не могу, остаётся только удивляться, почему это некоторый вызов “не поддерживается для данного типа приложений”, если в программке он наверняка используется и вполне себе работает… Щас отправлю пакет, поглядим…

воскресенье, февраля 10, 2013

Sharepoint и Windows Store - 2

Как-то смешно выглядит невозможность сделать приложение для WinRT, работающее с Шарепойнтом – прямо из серии “такого не может быть…”. Должна же быть какая-то возможность…
При рассматривании SDK попадается на глаза “ECMAScript Class Library” – библиотека для работы с CSOM на языке ECMAScript (JavaScript, JScript). Отлично, щас попользуемся…
Раскопки на MSDN показывают, что программу для WinRT тоже можно соорудить на JavaScript (+ HTML5, CSS 3 etc). Совсем здорово, начинаем пробовать практически, тем более, даже книжка бесплатная на эту тему существует.
Делаем по книжке, примеры работают, начинаем смотреть, как оно вообще устроено, и …приходим в ужас: написать руками  код на JScript длиннее 50 строк и сложнее вызова alert(“Hello!”) можно только после двух месяцев тренировок…
Выходим из прострации, обращаемся к Гуглю и выясняем, что для облегчения жизни существует язык TypeScript – масштабируемый, с типизацией, поддерживается MS. Ура, мы спасены! Тем более, к языку приложено довольно приличное приложение для WinRT. Ну, немного кривоватое, но к мелочам зачем же цепляться…
Делаем новое приложение, добавляем туда js-скрипты из папок Шарепойнта, в файле script.ts пишем долгожданное
clientContext = SP.ClientContext.get_current();
На этом эксперименты с TypeScript заканчиваем: выясняется, что JS-библиотеки языком TypeScript не воспринимаются, а библиотек с определениями типов (*.d.ts-файлов) никто пока не сделал и в общее пользование не предоставил.
При попытках продолжить эксперименты уже на JavaScript выясняем, что “ECMAScript Class Library” вовсе не предназначена для работы вне страниц, полученных с сервера Sharepoint: в отличие от C#-библиотеки, js-объект SP.ClientContext не имеет средств для логина пользователя и не позволяет коннектиться к произвольному УРЛ. И это не только в версии 2010, но и в новейшей 2013-й… Можно, наверное, эти библиотеки дополнить соответствующим функционалом – но это уже другая песня.
Остаётся, конечно, ещё одна возможность – REST-сервисы. Но что-то в 2010-й версии Шарепойнта лично у меня с ними отношения не сложились, а 2013-й Sharepoint пока не сильно интересует…
В общем, подождём развития событий. А WinRT пока поживёт без Шарепойнта (особенно, в версии для ARM).

четверг, февраля 07, 2013

Sharepoint и Windows Store

Прочитал книжку Сергея Пугачёва с соавторами и вдохновился соорудить метрошную программку для просмотра Шарепойнт-сайтов. С использованием клиентской модели, которую немного освоил…
Естественно, облом случился - Шарепойнт-то на .NET 3.5, а проект строится на 5.0.5 и никаких переключений версий не предполагает.

По идее, надо пробовать сборки от 2013-го Шарепойнта… Как они, любопытно, будут работать с 2010-м Шарепойнтом?  В принципе, должно быть без разницы…

C 2013-ми сборками - тоже облом.
В тексте программки написал:
 using Microsoft.SharePoint.Client;
…
private Web web = null;

При компиляции получаю сообщение:
Ошибка - Не удаётся найти тип System.ComponentModel.MarshalByValueComponent в модуле System.dll.       

При расследовании выясняется, что сборка System.dll, подключённая к проекту (подключение называется ".NET for Windows Store apps"), какая-то урезанная и помянутого типа там, и вправду, нет, а подключить нормальную сборку не дают - её, дескать, и без вас подключили… И удалить то, что подключено, не предполагается…

Похоже на то, что программы для работы с пупер-флагманским продуктом Sharepoint 2013 в Windows Store не сильно-то и требуются…
Вот про салаты или коктейли - это да…