Как стать автором
Обновить

Зеркало справочных архивов Visual Studio 2010

Время на прочтение2 мин
Количество просмотров3.2K

Введение

Одним из немногих полезных нововведений справочной системы Visual Studio 2010 (aka Microsoft Help System 1.1) является возможность установки и обновления архивов содержимого справки из онлайн-каталога. Однако, необходимость вытягивания порядка гигабайта архивов для каждой девелоперской машины может показаться накладной, поэтому было принято решение о создании локального зеркала онлайн-каталога. Найти официального способа решения данной задачи, к сожалению, не удалось.

Исследование

При помощи любого HTTP-сниффера (такого, например, как Fiddler) можно выяснить, что каталог расположен по адресу http://services.mtps.microsoft.com/ServiceAPI/products, при этом непосредственно архивы располагаются на сайте http://packages.mtps.microsoft.com/. Именно эти два ресурса и нужно будет зеркалировать.

Реализация

Для создания зеркала нам понадобится известная консольная утилита wget, а также web-server (я использовал nginx).Процесс создания зеркала состоит из следующих шагов:
  1. Подготовка. Первым делом нужно создать папку, которая будет хранить содержимое будущего зеркала, например D:\mtps.
  2. Загрузка каталога. В созданной папке необходимо выполнить следующую, довольно пространную команду:
    wget -r -k -x -nH -H -N -E -l inf -e robots=off -X /ServiceAPI/packages -R *fr-fr*,*pt-br*,*es-es*,*pl-pl*,*de-de*,*cs-cz*,*it-it*,*tr-tr*,*ru-ru*,*ja-jp*,*ko-kr*,*zh-tw*,*zh-cn* http://services.mtps.microsoft.com/ServiceAPI/products/
    после окончания работы которой, в папке окажется масса архивов, а также папка ServiceAPI. Стоит обратить внимание на параметр -R, который контролирует язык загружаемых архивов. В данном случае исключены все языки, кроме en-us.
  3. Настройка web-сервера. Для начала необходимо смонтировать созданную ранее папку в качестве корня web-сервера, после чего создать rewrite rule которое превращало бы ссылки вида http://services.mtps.microsoft.com/ServiceAPI/products/dd936256 в http://services.mtps.microsoft.com/ServiceAPI/products/dd936256.html поскольку именно таким образом wget сохраняет структуру каталога. В моем случае настройка сервера выглядела так:
    location / {<br/> root d:\mtps;<br/> index index.html index.htm;<br/> rewrite ^(.*/[a-z0-9-]+)$ $1.html last;<br/>}<br/>
  4. Настройка клиента. Поскольку утилита управления справочной системой ожидает каталог по адресу services.mtps.microsoft.com нужно отредактировать файл etc/hosts сопоставив данному домену адрес нашего локального зеркала. В моем случае достаточно было создания алиаса на localhost.
  5. Проверка. Теперь можно запустить Help Library Manager (меню Help -> Manage Help Contents в Visual Studio) и убедиться в том, что пункты «Check for updates online» и «Install content from online» прекрасно работают, используя содержимое локального зеркала.
Для обновления зеркала достаточно зайти в папку с архивами, удалить подпапку ServiceAPI и заново запустить wget с вышеуказанными параметрами, при этом ключ -N исключает повторное скачивание старых архивов. Можно также создать скрипт, автоматически выполняющий данную работу и запускаемый, скажем, раз в неделю с помощью планировщика.

Надеюсь, данное руководство окажется вам полезным.
Теги:
Хабы:
Всего голосов 36: ↑32 и ↓4+28
Комментарии3

Публикации