Побеждаем ELMS Delivery Client

    Сначала объясню, о чем речь.
    Что такое ELMS? ELMS (e-academy License Management System) — это веб-сайт для распространения ПО, который каждый администратор программы может настроить в соответствии с потребностями своего подразделения. Факультеты-подписчики MSDN Academic Alliance всего мира могут пользоваться ELMS бесплатно, так что ее использование не приведет к дополнительным затратам.

    Зачем нужна ELMS? ELMS — это основанная на веб-технологиях система управления, упрощающая распространение ПО среди студентов в соответствии с политикой лицензирования программы MSDN AA.
    Ссылка

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

    Я столкнулся со следующими недостатками системы:

    1. Файл качается в один поток и довольно медленно.
    2. При обрыве соединения клиент нужно перезапускать вручную, а происходит это довольно часто.
    3. Далеко не всегда закачка возобновляется с того процента, на котором оборвалась.
    4. Часто происходят непонятные повреждения файла при закачке, из-за которых файл, докачавшись полностью, не проходит проверку CRC и смело удаляется Delivery Client-ом.

    После того, как описанное в четвертом пункте произошло со мной в третий раз, я послал несколько лучей ненависти в адрес мелкомягкой компании и решил, что надо что-то менять.

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

    Эксперименты проводились в Windows 7 и Windows XP SP3.

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

    1. Заказываем нужный продукт на сайте MSDN AA и скачиваем Delivery Client.
    2. Закрываем все ненужные программы, использующие сеть.
    3. Запускаем Delivery Client, выбираем папку для закачки.
    4. Открываем Wireshark. В разделе «Capture» стартовой страницы выбираем основной сетевой интерфейс.
    5. В Delivery Client нажимаем кнопку. Ждем, пока начнется загрузка (появится надпись «1%»).
    6. Закрываем Delivery Client.
    7. В Wireshark нажимаем Capture — Stop.
    8. Сортируем список пакетов по колонке Protocol.
    9. Ищем HTTP-пакеты, в колонке Info у которых значится GET и далее url, оканчивающийся на ".sdc". Таких запросов может быть несколько.
    10. Выбрав пакет, разворачиваем в нижней части окна секцию Hypertext Transfer Protocol. Нам нужна первая строчка (GET) и заголовок HOST. Их мы копируем (правой кнопкой мыши — Copy — Value), удаляем служебные символы и ставим значение HOST перед значением GET.

    У нас получилась ссылка. Если ее вставить в браузер, должна начаться загрузка файла с расширением sdc. Если файл большой, он бьется на несколько, они будут оканчиваться на ".01.sdc", ".02.sdc" и т.п. Кажется, файлы делятся по 2 Гб.

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

    Если файл был один, просто кладем его в папку, которую вы указали Delivery Client (по умолчанию C:\Temp).

    Если файлов было несколько, нужно сначала их склеить командой copy в консоли:
    copy /b file.01.sdc+file.02.sdc result.sdc
    Затем положить результат в папку загрузки Delivery Client и дать ему имя первого из файлов: file.01.sdc (файл с таким именем должен был создать сам Delivery Client при первом запуске).

    После запуска Delivery Client найдет наш файл и сразу начнет его распаковывать. Наша цель достигнута.
    Поделиться публикацией

    Похожие публикации

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

      0
      нетерпеливость делает чудо :)
      на счет wireshark что бы проще искать нужные пакеты там есть строка фильтра, для этого случая хватило бы фильтра «tcp && http»
        +1
        Дело не в нетерпеливости, а в том, что оно три раза скачало мне файл (по 4 часа качало) и удалило его.
        0
        В своё время «победил» эту горе-качалку, просто скачав оригинальный дистрибутив с Взора. Правда, у меня не обрывало, а требовало постоянно держать авторизацию на самом сайте ELMS, она сбрасывалась каждые 15 минут.
          0
          Неделю посылал лучи поноса акамаю, потом плюнул и скачал с сайта Action Pack. А требование держать сессию и каждые 15 минут рефрешить вообще идиотизм. Даже поставил специальный плагин в файрфокс, который страницу рефрешил — все равно не помогло.

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

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