Введение
Одним из немногих полезных нововведений справочной системы 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).Процесс создания зеркала состоит из следующих шагов:- Подготовка. Первым делом нужно создать папку, которая будет хранить содержимое будущего зеркала, например D:\mtps.
- Загрузка каталога. В созданной папке необходимо выполнить следующую, довольно пространную команду:
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. - Настройка 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/>
- Настройка клиента. Поскольку утилита управления справочной системой ожидает каталог по адресу services.mtps.microsoft.com нужно отредактировать файл etc/hosts сопоставив данному домену адрес нашего локального зеркала. В моем случае достаточно было создания алиаса на localhost.
- Проверка. Теперь можно запустить Help Library Manager (меню Help -> Manage Help Contents в Visual Studio) и убедиться в том, что пункты «Check for updates online» и «Install content from online» прекрасно работают, используя содержимое локального зеркала.
Надеюсь, данное руководство окажется вам полезным.