Как собрать LibreOffice в Windows используя Cygwin и MSVC: Приёмы и хитрости

From The Document Foundation Wiki
Jump to: navigation, search

Contents

Сборочные зависимости

Прежде чем начать модификацию LibreOffice на Windows, требуется выполнить некоторые шаги для создания сборочной среды в соответстии с приведенными ниже инструкциями.

Im-jabber.svg

Обратите внимание:
Самый простой путь - использовать LODE , который автоматизирует все что нужно, а затем установить Visual Studio и Java.
Если требуется более сложный путь... можно читать дальше...


Установка Cygwin

Для Windows в первую очередь требуется установить Cygwin отсюда www.cygwin.com.

Самый простой способ это сделать - загрузить установщик Cygwin setup-x86.exe (32-bit) или setup-x86_64.exe (64-bit).

  • В случае Windows 10 x64 version 1511 для установки Cygwin 64-bit требуется Cygwin 2.4.0-0.9 или новее (подробности см. в Cygwin mailing list).

Данная инструкция описывает в качестве примера версию 32-bit: Следует выполнить cmd и перейти в каталог, в который был загружен установщик Cygwin (если есть трудности с переходами по файловой системе в режиме командной строки, можно просто перетащить имя файла setup-x86.exe из окна Проводника в окно командной строки), затем скопировать и вставить команду, показанную ниже для запуска setup-x86.exe со списком заранее выбранных требуемых модулей.

  setup-x86.exe -P autoconf -P automake -P bison -P cabextract -P doxygen -P flex -P gcc-g++ ^
                -P git -P gnupg -P gperf -P make -P mintty ^
                -P nasm -P openssh -P openssl -P patch -P perl -P python -P python3 ^
                -P pkg-config -P rsync -P unzip -P vim -P wget -P zip -P perl_vendor 

В случае setup-x86_64.exe требуется заменить perl_vendor на perl-Archive-Zip, используя следующую команду:

  setup-x86_64.exe -P autoconf -P automake -P bison -P cabextract -P doxygen -P flex -P gcc-g++ ^
                -P git -P gnupg -P gperf -P make -P mintty ^
                -P nasm -P openssh -P openssl -P patch -P perl -P python -P python3 ^
                -P pkg-config -P rsync -P unzip -P vim -P wget -P zip -P perl-Archive-Zip

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

NOTE: путь для установки Cygwin не должен содержать символы, не включенные в таблицу ASCII, во избежание проблем с autogen.sh/configure (если такие символы есть, требуется изменить путь для установки Cygwin и соответственно обновить ярлыки в Windows и элементы в меню «Старт»).

Альтернативой является запуск утилиты setup-x86.exe или setup-x86_64.exe, переключение режима просмотра модулей в 'Full' нажатием на кпопку 'View' пока 'Full' отображается рядом с ней, а затем ручной выбор модулей для установки, перечисленных в команде выше.

При обновлении Cygwin может потребоваться выполнить команду rebaseall (это не требуется, если Cygwin установлен впервые):
Требуется закрыть все консоли Cygwin и выполнить c:\cygwin\bin\dash.exe, а затем в терминале запустить /bin/rebaseall.

Установка компонентов, требуемых для сборки в Windows

Вне зависимости от используемой версии Visual Studio, требуется

  • Java Development Kit (JDK). Следует убедиться, что для 32-bit Windows используется 32-bit SDK , а для 64-bit Windows используется 64-bit SDK (с директивой --enable-64-bit). JDK можно получить на http://www.oracle.com/technetwork/java/javase/downloads/index.html. Следует отметить, что сборка для 64-bit все еще экспериментальная и могут появиться вопросы (проблемы) при сборке. Если сборка выполняется впервые, следует выбрать 32-bit SDK и делать сборку для платформы 32-bit.

Также следует установить компилятор/среду разработки Microsoft Visual Studio, которая может быть найдена тут: http://www.visualstudio.com/en-us/downloads

Существует 2 различные бесплатные редакции этой среды разработки:

LibreOffice 4.4 требует как минимум Visual Studio 2012, в то время как LibreOffice 5.0 требует как минимум Visual Studio 2013.

Использование Visual Studio 2013

Visual Studio 2013 поставляется с Windows SDK и DirectX SDK, включая компоненты .NET. Установка Visual Studio 2013 обеспечивает все что требуется.

При необходимости делать сборку для обеспечения работы с Windows XP, требуется использовать параметр --with-windows-sdk=7.1A

Visual Studio 2015

LO может быть собран с использованием нового компилятора. Дополнительные сведения приведены на странице:

Инструкции

Следует установить все сборочные зависимости, затем открыть командную строку Cygwin и выполнить седующие шаги:

Установка GNU make

GNU make 4.0+ для Win32 обеспечивает сборку LibreOffice и является необходимым для этого.

Проще всего поместить его в /opt/lo/bin, тогда configure автоматически его обнаружит; можно также использовать любое другое расположение, установив соответствующее значение переменной MAKE. Нужно или добавить /opt/lo/bin в переменную окружения PATH, или использовать альтернативный вариант вызова "make" с указанием абсолютного пути /opt/lo/bin/make (или другого пути) каждый раз при сборке LibreOffice. LibreOffice не может и не должен использовать /usr/bin/make из Cygwin.

  mkdir -p /opt/lo/bin
  
  cd /opt/lo/bin
  wget http://dev-www.libreoffice.org/bin/cygwin/make-85047eb-msvc.exe
  mv make-85047eb-msvc.exe make
  chmod a+x make

Установка ant и junit

Они могут быть распакованы куда угодно, поскольку не требуют установки. Если нет желания использовать Junit, модуль можно отключить потом, используя параметр --without-junit для сценария autogen.sh.

  mkdir -p /cygdrive/c/sources
  cd /cygdrive/c/sources
  wget https://archive.apache.org/dist/ant/binaries/apache-ant-1.9.5-bin.tar.bz2
  tar -xjvf apache-ant-1.9.5-bin.tar.bz2
  wget http://downloads.sourceforge.net/project/junit/junit/4.10/junit-4.10.jar

Клонирование репозиториев исходного кода LibreOffice

ЗАМЕЧАНИЕ: путь к исходному коду должен быть по возможности короткий, чтобы не превышать ограничения на длину имени файла (включая путь), а в пути назначения не должно быть пробелов.

  cd /cygdrive/c/sources
  git clone git://gerrit.libreoffice.org/core libo-core

Создание каталога для сборки, настройка и сборка

Сборку LibreOffice можно выполнять не в том каталоге, к который клонирован git. В этом случае исходный код не будет изменен и облегчается сборка нескольких версий, однако это препятствует интеграции с IDE Visual Studio.

Если сборка выполняется в отдельном каталоге (скажем, /cygdrive/c/build), требуется ввести следующие команды:

  mkdir /cygdrive/c/build
  cd /cygdrive/c/build

Иначе нужно перейти в каталог /cygdrive/c/sources/libo-core:

  cd /cygdrive/c/sources/libo-core

Затем следует запустить сценарий autogen.sh для настройки сборки:

  /cygdrive/c/sources/libo-core/autogen.sh \
               --with-external-tar=/cygdrive/c/sources/lo-externalsrc \
               --with-junit=/cygdrive/c/sources/junit-4.10.jar \
               --with-ant-home=/cygdrive/c/sources/apache-ant-1.9.5 \
               --enable-pch --disable-ccache \
               [дополнительные параметры, при наличии понимания последствий :-) ...]

Следует отметить, что для Windows не рекомендуется использовать ccache. Если модуль установлен в Cygwin-окружении, его можно безопасно отключить параметром --disable-ccache (как показано выше в примере команды).

Если сценарий autogen.sh сообщает, что невозхможно найти некоторые заголовочные файлы, это значит, что либо он не может обнаружить Windows SDK или что Windows SDK поврежден. Это можерт быть вызвано установкой на компьютер различных версий Visual Studio, особенно если устанавливались бета-версии, а также деинсталлящией Visual Studio. В таком случае следует использовать параметр типа --with-windows-sdk=7.1A, заменив по потребности 7.1A другой версией SDK для указания конкретной неповрежденной версии.

autogen.sh сохраняет последние использованные параметры настройки в файле с именем autogen.lastrun, так что при повторном запуске настройки с теми же параметрами достаточно просто запустить autogen.sh без параметров.

Полезно сохранить копию последних используемых настроек в файл autogen.input:

  mv autogen.lastrun autogen.input

В отличие от autogen.lastrun, autogen.input не будет перезаписан сценарием autogen.sh, использующим другие параметры. Если autogen.sh вызывается повторно без параметров, он заберет входные параметры из autogen.input, если этот файл имеется.

Следует изучить вывод сценария autogen.sh. Если отсутствуют сообщения об ошибках и существенные предупреждения, все что затем остается сделать -- запустить корректную версию make для сборки LibreOffice:

   /opt/lo/bin/make gb_COLOR=1  # gb_COLOR=1 обеспечивает вывод с выделением цветом

Если процесс сборки сбиваектся в этом месте с ошибкой error C3861: 'InetPtonW': identifier not found, это происходит из-за ошибки в процессе сборки для Windows SDK 8. Ошибку можно обойти, используя параметр --with-windows-sdk=7.1A.

Запуск LibreOffice

Если сборка завершилась без ошибок, можно запустить свежую версию LibreOffice командой

   instdir/program/soffice.exe

Интеграция проекта в Microsoft Visual Studio

Система сборки LibreOffice может создавать файлы проекта для различных IDE, включая -- благодаря прекрасной работе Honza Havlíček -- Microsoft Visual Studio: (следует отметить, что это не позволяет выполнить полную сборку, так что все равно придется использовать Cygwin)

Создание файла проекта для Visual Studio

Сценарий интеграции с IDE написан на python3, который не устанавливается автоматически (при использовании метода LODE), поэтому его требуется установить в Cygwin перед выполнением команды make. После успешного завершения полной сборки LibreOffice, следует выполнить указанную ниже команду для создания файла проекта Visual Studio для Visual Studio 2013:

  $ ../../opt/bin/make vs2013-ide-integration


Если проект создан успешно, получившийся файл решения LibreOffice.sln будет помещен в корневой каталог сборочного дерева и может быть открыт с помощью Microsoft Visual Studio.

Для обеспечения корректного открытия файла решения в Visual Studio сборка LibreOffice должна выполняться в том же каталоге, в котором размещен исходный код; разделение каталогов исходного кода и сборки не позваоляет обеспечить интеграцию с IDE.

Почему MSVC?

Существуют часто задаваемые вопросы, обычно от пуристов free software, почему используется проприетарный компилятор вместо свободных компиляторов (например, gcc).

  • Обратная совместимость ABI для скомпилированных расширений. Это обеспечивает их сопротивляемость к поломкам.
  • MSVC позволяет получить более быстрые и более маленькие двоичные файлы.
  • Существуют некоторые особенности кода, которые не могут быть скомпилированы при использовании MinGW. They use API that MinGW does not provide headers for etc.
  • Существуют открытые вопросы о выполнении unit-тестов в окружении MinGW при кросс-компиляции.
  • Существуют открытые вопросы о качестве работы gdb на Windows; отладчик MSVC C++ вполне достаточно хорош.

Параметры autogen

Для получения работоспособной сборки в файле autogen.input должно быть нечто похожее на приведенное ниже:

--disable-odk
--with-junit=/cygdrive/c/sources/junit-4.10.jar
--with-ant-home=/cygdrive/c/sources/apache-ant-1.9.5
--enable-pch
--disable-ccache

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

Также требуется указать путь к ant с помощью параметра --with-ant-home=<путь к ant в Cygwin>.

Если используется бесплатный Visual Studio Express, следует использовать параметры --disable-activex и --disable-atl, поскольку только полная версия Visual Studio содержит заголовочные файлы, требуемые для поддержки ActiveX и ATL.

Следует помнить о необходимости перезапуска оболочки после установки инструментов Microsoft, перед запуском autogen.

Сборка в Visual Studio 64-bit

Порт для Windows 64-bit работает в основной ветке LibreOffice: для сборки используется параметр --enable-64-bit при настройке.

Компилятор Visual Studio 2012

Visual Studio 2012 в настоящее время используется для сборок ветки 4.4, в то время как основная ветка требует 2013.

Компилятор Visual Studio 2013

Visual Studio 2013 используется в текущей основной ветке LibreOffice и для всех отлаживаемых версий (tinderboxes).

Компилятор Visual Studio 2015

Visual Studio 2015 используется в текущей основной ветке LibreOffice, включая режимы 64bit (--enable-64-bit) и 32bit. Единственное исключение: --disable-firebird-sdbc. Для более подробной информации см. сообщение в upstream: [1].

Переключение компилятора по умолчанию

Можно указать, какая именно версия Visual Studio будет использоваться, если установлено несколько версий.

При отсутствии явного указания, порядок выбора -- 2013, 2015.

--with-visual-studio=2015

ATL и ActiveX

Существует версия "Visual Studio Community 2013", которая может быть использована для создания кода в открытых проектах, и она включает в себя заголовочные файлы для ATL и ActiveX (таким образом, лучше устанавливать эту версию вместо вариантов "Express").

Visual Studio Express: отключение ATL

Если используется Visual Studio Express, файл atlbase.h отсутствует. Нужно использовать параметр (директиву) --disable-atl, иначе процесс сборки будет прекращен на этапе embedserv. Дополнительно нужно использовать параметр (директиву) --disable-activex , если сборка прекращается на этапе extensions\source\activex\.

Обеспечение работы ATL в Visual Studio Express

ATL используется для объектов OLE из внешних приложений, например для формул Math Type. Благодаря замечаниям от Mathias Bauer [1] стало возможным собрать LibreOffice с работающим ATL.

  • Нужно загрузить "Windows Driver Kit Version 7.1.0" (ссылка по состоянию на 13.11.2011)
  • Далее нужно записать файл на CD, потом установить программное обеспечение. При настройках по умолчанию бадет создан каталог C:\WinDDK.

В настоящее время (ноябрь 2011) не существуует ппараметров, которые следует указать для настройки пути в каталогам с ATL. Пути нужно указывать вручную. Для этого требуется выполнить следующие шаги.

  • Запустить autogen.sh без параметра --disable-atl. Не следует продолжать процесс сборки немедлено.
  • Открыть в редакторе файл Config_host.mk корневом каталоге исходного кода. Найти строки, начинающиеся с ATL_LIB, ATL_INCLUDE, MFC_LIB, и MFC_INCLUDE.
  • Изменить в этих строках пути к каталогу WinDDK как показано ниже.
 
ATL_LIB="C:/WinDDK/7600.16385.1/lib/ATL/i386"
ATL_INCLUDE="C:/WinDDK/7600.16385.1/inc/atl71"
MFC_LIB="C:/WinDDK/7600.16385.1/lib/Mfc/i386"
MFC_INCLUDE="C:/WinDDK/7600.16385.1/inc/mfc42"
  • Продолжить процесс сборки, запустив make.

Нужно заметить, что использование параметра (директивы) --disable-activex без --disable-atl заставляет autogen предполагать, что заголовочные файлы и библиотеки ATL размещаются в подкаталогах SDK, а не в подкаталогах VC. Это может приводить к ошибкам при использовании полнофункционального Visual Studio SKU (типа Community edition). В таком случае следует либо вручную исправить Config_host.mk, либо избегать использования --disable-activex.

Известные проблемы

Cygwin Shell

В течение всего процесса сборки требуется использовать Cygwin Bash Shell. Поэтому нужно установить все сборочные зависимости перед запуском оболочки и autogen, поскольку autogen использует значения переменных окружения для поиска соответствующих инструментов.

Если при выполнении autogen.sh появляется сообщение об ошибке, похожее на приведенное ниже

   $'\r': command not found

это означает, что проблемы у Cygwin Shell вызывают символы перевода строки в стиле Windows. Способом исправления являеься создание переменной окружения SHELLOPTS используя следующее:

   (set -o igncr) 2>/dev/null && set -o igncr;

Список проблемных приложений

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

Собираемость ветки 'master'

If you are building the Windows build for the first time, it is recommended that you check the current state of http://tinderbox.libreoffice.org/MASTER/status.html . If you see recent "green" builds, it is a good time to try - otherwise it might happen to you that you'll have to fix the build yourself. The buildability on Windows has improved recently with the introduction of the MinGW and more stable native Windows tinderboxes, but still there might be a day or two when 'master' is not buildable on Windows.

The usual recommendation is to just pull and try again, and once you have a build, don't pull in the tree any more, but do your hacking in it. Clone a different tree and iterate pulling and building in that until it again works, then switch. Repeat.

Alternatively, if you find a known good state (a green box) for Windows on the Tinderbox side back in history, you can do:

git checkout -b my_workbranchname ${last_good_commit}

to start working on a branch starting at the last good state.

BitDefender / другие антивирусы / средства безопасности останавливают сборку

Если сборка останавливается с сообщениями об ошибке "невозможно найти файл", например The system cannot find the file specified: '../../../dist/out/bin\\example.exe', вполне возможно, что используемый антивирус удалил или перевел в "карантин" важные файлы.

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

При желании выполнить такие тесты следует отключить проверку антивирусными средствами временных каталогов сборочной среды <root of repo>\*\pass и C:\cygwin\tmp. Для Windows 8.1 следует отключить запуск Windows Defender - найти и запустить 'defender' в командной строке.

Можно также использовать параметр --disable-cve-tests для autogen, чтобы пропустить тесты, приводящие к известным проблемам.

Также следует заметить, что антивирусные средства могут существенно замедлять процесс сборки. Если неободимо проводить сборку быстро, требуется остановить слежение антивирусными средствами за каталогом с деревом исходного кода и каталогом с временными файлами C:\cygwin\tmp.

Norton Antivirus останавливает сборку

Norton Antivirus и Symantec Endpoint Protection жалуются на некотореы файлы, которые возникают в процессе сборки. Эти антивирусы обнаруживают следующие файлы (если сборка производится без параметра "--enable-dbgutil" )

Malware: Suspicious.Cloud
D:\bld\rel\workdir\UnpackedTarball\icu\source\bin\genrb.exe*
Malware: Suspicious.Cloud.5
D:\bld\rel\workdir\UnpackedTarball\nss\nss\lib\zlib\out\example.exe*
D:\bld\rel\workdir\UnpackedTarball\nss\dist\out\bin\example.exe* 
D:\bld\rel\instdir\program\reg4allmsdoc.dll
D:\bld\rel\instdir\program\sdqsmsi.dll
D:\bld\rel\instdir\program\sellangmsi.dll

Файлы, обозначенные * нужны для сборки - их требуется исключить из сканирования на вирусы!

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

D:\bld\rel\instdir\program\RCX????.tmp
D:\bld\rel\instdir\program\RCX????.tmp
D:\bld\rel\instdir\program\RCX????.tmp

Текущее решение: Не следует собирать релизы (если нет желания и возможности отключать сканирование на вирусы).

Системная переменная PATH вызывает странные сбои при сборке

При сборке импортируется системная переменная PATH для обеспечения поиска DLL. Если наблюдаются странные сбои сборки, которые не объясняются другими причинами, следует проверить переменную PATH и убрать лишние пути. Следует заметить, что для использщвроания при сборке нового значения переменной PATH требуется перезапуск сценария настройки. Например, наблюдались ошибки при сборке в модуле оболочки из-за наличия в переменной PATH путей к файлам старой версии OOo, среди которых были DLL с теми же именами, что и используемые при сборке.

Windows Update автоматически перезагружает систему в процессе компиляции

Иногда Microsoft Windows перезагружается в процессе компиляции. Это происходит из-за того, что Windows Update обновляет операционную систему и затем перезагружает её. Для отключения обновлений Windows, в командной строке можно ввести следующую команду:

C:> net stop wuauserv

Такая команда останавливает службу Windows Update.

Другие известные проблемы

  • Пути, содержащие /opt, вызывают проблемы с некоторыми внешними модулями; лучше всего избегать наличия /opt в дереве исходных текстов или использовать параметр --disable-orcus, чтобы обойти (пропустить) этот каталог.
  • В сборках с азиатской локалью иногда происходят сбои из-за проблем с кодировкой в исходном тексте; в таких случаях приветствуются патчи для решения этих проблем. Альтернативным вариантом является настройка Windows на локаль US.


Сборка из веток прошлых выпусков

В то время как основная ветка, ветки libreoffice-4-5 (версии 4.5.x) и последующие требуют Visual Studio 2013, собирать LibreOffice из веток более старых выпусков необходимо с использованием более старых версий Visual Studio.

Установка Visual Studio 2012

Только для версий LibreOffice новее чем 4.0:

Visual Studio 2012 поставляется с Windows SDK и DirectX SDK, включая компоненты .NET. Установка Visual Studio 2012 обеспечивает все что требуется.

При необходимости делать сборку для обеспечения работы с Windows XP, требуется установить VS 2012 update 1 (или новее, на конец 2015 года имеется update 5) и использовать параметр --with-windows-sdk=7.1A

Установка Visual Studio 2010

Поскольку Visual Studio 2010 не включает в себя все необъодимые компоненты, эти компоненты нужно установить дополнительно.

  • Windows SDK
    Для совместимости с Windows XP и более новыми версиями требуется использовать SDK для Windows 7. SDK можно загрузить с сайта MSDN http://msdn.microsoft.com/en-us/windows/bb980924.aspx

Дополительные компоненты

Если есть желание собрать Mozilla из исходного текста (не прилагается к кодовой базе основной/текущей веток), то требуется

Установка GNU make

Предупреждение: «Родной» GNU make для Win32 применим только для сборки основных веток, следующих за версией 4.4; для сборки версий из веток 4.3 и более ранних, требуется GNU make из Cygwin (брать здесь).

Компилятор Visual Studio 2010

Замечание: Текущие версии LibreOffice невозможно собрать с Visual Studio 2010; последние выпуски, которые собирались в VS 2010 -- версии ветки libreoffice-4-3 (4.3.x).

С 31.10.2012 соборочная среда работает на Windows Server 2008 64 bit (текущая основная ветка). Если возникает ошибка конфигурации "checking string.h... no", это означает отсутствие некоторых C-HEADER в каталоге <install_visual_studio_dir>\VC\include. Для исправления требуется переустановить VS 2010 и проверить реестр, как описано здесь: http://stackoverflow.com/questions/12460307/installation-of-visual-studio-2010-any-edition-installs-only-2-files-in-the-c и здесь http://connect.microsoft.com/VisualStudio/feedback/details/774158/re-installed-visual-studio-2010-and-c-standard-headers-are-missing

Visual Studio 2008 compiler

Замечание: Текущие версии LibreOffice невозможно собрать с Visual Studio 2008; последние выпуски, которые собирались в VS 2008 -- версии ветки libreoffice-4-0 (4.0.x).

Если используется Windows SDK 7+ с VS2008 Express, его требуется зарегистрировать после установки. Для этого выполняется ПУСК>Программы>Microsoft Windows SDK v7.1>Visual Studio Registration>Windows SDK Configuration Tool. Если это не работает, нужно открыть консоль SDK (один шаг вверх) и выполнить: WindowsSdkVer.exe -version:v7.1 -legacy (Большое спасибо инструкциям по сборке Chromium).

Дополнительные требования для сборки коннектора к Mozilla Address Book

Сборка полного комплекта Mozilla из исходных текстов в настоящее время невозможна. Если требуется использовать уже скомпилированную Mozilla, например, если нужен доступ к старому коннектору адресной книги Mozilla (параметр --enable-win-mozab-driver), требуется Visual C++ 2005 runtimes в отдельном каталоге с распакованным архивом.

Возможно, эти файлы уже имеются на компьютере, поскольку они устанавливаются с другими приложениями. Можно посмотреть подкаталог Windows\winsxs, имена нужных файлов начинаются на x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b.

Другой путь -- использоввание 'Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)', который обнаруживался последний раз в этом месте. К сожалению, с ним не поставляется файл MICROSOFT.VC80.CRT.manifest. Однако поскольку это чисто текстовый файл, его можно создать в любом редакторе. Требуется использовать переводы строк в стиле DOS и кодировку UTF-8. Пример содержания показан ниже, но он может быть не совсем корректным. (В этом месте находятся свежие рантаймы VC++ , включая 2005, и в качестве версии нужно использовать версию из vcredist 2005.)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <noInheritable/>
    <assemblyIdentity 
        type="win32" 
        name="Microsoft.VC80.CRT" 
        version="8.00.50727.6195" 
        processorArchitecture="x86" 
        publicKeyToken="1fc8b3b9a1e18e3b"
    />
    <file name="msvcr80.dll"/>
    <file name="msvcp80.dll"/>
    <file name="msvcm80.dll"/>
</assembly>

См. также