Как восстановить локальную справку в Visual Studio

С чего все началось

То было когда я пользовался Visual Studio Express 2010 (да, я пользуюсь именно Express). Я привык по 2008-й версии, что справка имеет свою оболочку и в ней можно искать, делать закладки … Но по каким-то непонятным соображениям справку в 2010-й сильно переделали. Но я об этом еще не знал.

Что меня удивило, но не напрягло — это то, что для справки не было отдельно скачиваемого образа диска. Зато можно было выбрать в оболочке справки что именно загружать.

Я выбрал и загрузил все что мне было нужно и приступил к работе. Как я удивился, когда справка открылась в браузере! Локальная! А еще больше я удивился, когда на следующий день все закладки в справке, которые я накопил, отказались работать! В итоге при такой организации приходилось каждый день начинать поиски с чистого листа. Конечно это мне надоело и я перешел к онлайн справке. Там хоть ссылки срабатывают на следующий день …

Локальную справку я удалил для экономии места. Когда я захотел снова ее восстановить (готовился к возможному перебою с Инет) меня постигла неудача. Проблему я уже не помню точно. Просто загрузка справки не сработала и все. Намаялся я сильно. Даже переустанавливал Visual Studio … Но толку не было.

На этом локальную справку я окончательно забыл до выхода первого сервис пака к Visual Studio 2010. Ключевой момент в этом обновлении — изменение справки. Снова оболочка, снова можно накапливать ссылки.

Реанимация справки в Visual Studio Express 2010 SP1

Проблема с обновлением справки из Инет меня достала снова. В этот раз я нашел текст сообщения об ошибке (в системных логах), но не понял ничего. Там была жалоба от BITS.

"Ошибка при обновлении локального содержимого: Microsoft.Help.CacheLib.CacheLibDownloadException: Ошибка при переносе службой BITS "http://packages.mtps.microsoft.com/development_frameworks_27295740_vs_100_ru-ru_1(91f0e43f-6aa5-03e9-d5cd-5466b9086337).cab" в "C:ProgramDataMicrosoftHelpLibrarycontentMicrosoftincominga93b9f4c-5af8-4e9c-b879-ddf2bcbbad42Development_Frameworks_27295740_VS_100_ru-ru_1.cab". Контекст ошибки: "RemoteFile", код ошибки: "0x80072efe"."

Я допустил чудовищную ошибку — удалил папку с локальным содержимым, целиком, без корзины! Я делал так и раньше, но как выяснилось позже, она восстанавливалась после установки системы помощи.

По умолчанию локальное содержимое хранится в папке C:ProgramDataMicrosoftHelpLibrary. Эта папка должна существовать и не пустая. По крайней мере, жалобы в логе на отсутствие файла cld-settings.

Требуемый системой файл cld-settings отсутствует или поврежден. Удалите локальное содержимое (C:ProgramDataMicrosoftHelpLibrary), а затем удалите и повторно установите средство просмотра справки (Microsoft).

Переустановка, это значит переустановка. Повторное применение сервис пака ни к чему не приводит (хотя вы увидите в процессе, что установка Help Viewer 1.1 идет). Меня спасла память. Оказалось, что при предыдущих мучениях я на всякий случай сделал архив папки HelpLibrary после установки Visual Studio и до загрузки справки. Без этого содержимого «рецепты» по установке справки не работают. А вот когда это содержимое есть, запуск с описанными там параметрами приводит к предложению указать место хранения справки и установить отдельные компоненты.

В поисках магической папки ProductDocumentation и файла HelpContentSetup.msha я провел много часов. Папки с документацией точно не найдется в ISO образах Visual Studio Express 2010 и сервис пака Visual Studio 2010 SP1. В итоге я скачал образ пробной версии Ultimate редакции. Там точно эта папка есть. Из нее я установил русскую версию справки. Английскую версию пришлось докачивать отдельно. Закачать образ диска намного быстрее и надежнее, чем устанавливать справку из онлайн-источника.

По наивности, я наделся, что как только я найду этот HelpContentSetup.msha, то сразу получится восстановить C:ProgramDataMicrosoftHelpLibrary с чистого листа. Но меня ждало разочарование (о нем я уже написал), быстрая установка русской справки — это было просто утешение.

Что в итоге

Установлены интересующие разделы справки из тех, что были в ISO образах Ultimate редакции Visual Studio 2010. Я качал два образа — русский и английский. Практика показывает, что в спорных случаях (когда слова и буквы русские, а смысла не видно) стоит обращаться к языку превоисточника.

Добавление дополнительных разделов справки из Инета приводит к тому, что сначала идет обновление уже имеющейся справки. В моем случае это 80 пакетов на 1,7 ГБ.

BITS и обновление справки из Интернет

Такой большой объем данных закачать довольно сложно, если не знать как работает эта загрузка. Диспетчер библиотеки справки (Help Library Manager) использует в своей работе службу BITS. Эта служба Windows носит гордое название Background Intelligent Transfer Service (Интеллектуальная служба фоновой передачи). Ее интеллект заключается в том, чтобы уступить Интернет основной задаче, когда ей это требуется. А когда Интернет свободен — грузить данные.

На запущенную ICQ, Mail.ru Агент, Skype (у меня отключен режим супернода), Psi эта служба не реагирует, если они просто дежурят. Вы будете смеяться, но если запущена программа Bitcoin и она занята генерацией монет (много вычислений и мало трафика), то BITS будет ждать. Так что логика этой интеллектуалки не вполне понятна.

Я просто отключил Bitcoin, выгрузил все программы, которые что-то качают и закачивают в массовом порядке. Только после этого справка начала загружаться и весь этот объем загрузился в разумное для моего подключение время.

Для справки

Вот с какими параметрами запускается диспетчер справки из Visual Basic (взято из журнала событий системы):

Help Library Manager launched with following arguments: /product VS /version 100 /locale ru-RU /brandingPackage dev10.mshc /launchingApp VS

Во избежание «очередного казуса с цыпленком Цыпой» (из м.ф. «Цыпленок Цыпа»), я предпочел запускать менеджер справки из командной строки (под админом).

"%programfiles%\Microsoft Help Viewer\v1.0\HelpLibManager.exe" /product VS /version 100 /locale ru-RU

Чтобы запустить «смотрелку» справки не запуская Visual Basic, я создал ярлык со следующим содержимым:

ms-xhelp://?method=page&id=-1&product=VS&productVersion=100
Запись опубликована в рубрике Программирование с метками . Добавьте в закладки постоянную ссылку.

Один ответ на “Как восстановить локальную справку в Visual Studio

  1. demonhare говорит:

    обычные злоключения для мелкомягкого юзверя!

Добавить комментарий