Среда MS Visual C++ [РЕШЕНО]

Автор ape, 15 ноября 2010, 07:00

0 Пользователи и 1 гость просматривают эту тему.

ape

Начиная с версии ООО-3.2 в дистрибутивы, кроме Go-OO, стал включатся установщик среды Microsoft Visual C++ 2008. Для чего (работы каких компонентов, совместимости форматов и т.д.) он необходим?
Смысл вопроса - нужен ли этот компонент флэш-версии ООо. Различные версии Офиса устанавливают разные пакеты, наследуемые ОСью (т.е. не удаляются при деинсталляции/замене Офиса), поэтому отсутствие компонента пользователи флэш-версии под ОС_Windows, скорее всего, не заметят. У пользователей ОС_Linux, тестирующих из-под Wine OOo-флэш, могут, имхо, появляться ошибки работы программы, не свойственные ни полной Win-версии, ни Linux-версии.

------------------------------
Итог - в последнем топике.

ape

#1
Ответ:
ЦитироватьMS Visual C++ 2008 используется для компиляции и сборки LibreOffice (отсюда - http://wiki.documentfoundation.org/Development/How_to_build#Windows_Dependancies). Начиная с версии 2008 программы собранные MSVC требуют установленной в системе среды выполнения (рантайма). Т. е. переносимая (портабельная, флеш) версия просто не запустится, если в системе не будет установлен рантайм.
- комментирую скриншотами.

bormant

#2
Это Вы runtime -- библиотеки времени выполнения -- средой обозвали?
В флеш версии необходим, если на целевой машине не установлен (будет ошибка времени выполнения), и наоборот.
Каким конкретно бинарникам какие конкретно dll-ки -- Dependency Walker Вам в помощь.

Разрядность рантайма, как и java,-- сообразно разрядности версии OOo (насколько помню, для Windows собирают только 32 бит)
Автору на яд. Поддержать форум.

ape

#3
Я привёл лишь полученый ответ, прокомментировав его запущенной флэш-версией в системе с удалёнными компонентами прилагаемыми скриншотами. vcredist_ есть и для _х64. В 64-битовых системах обязательна установка обеих версий, при этом, отдельные kb идут только для одной из версий.
В Windows принято, чтобы инсталлятор программы проверял систему на совместимость (nVidia, GIMP). Если система не удовлетворяет требованиям, основная программа не устанавливается и появляется сообщение, какие компоненты необходимо установить/обновить, либо предложение - установить их из дистрибутива. Расплачиваясь объёмом дистрибутива, отдельные программы (VLC-плеер, Avidemux) эту проблему обходят стороной, устанавливая необходимые версии библиотек в свою папку, например программа/share/DLL_стороннего производителя, путь к которой ехе-шник знает, например, по файлу exe.ini.
имхо, если бы ООо/ТДФ пошли по второму пути, хотя бы в "Оконном" случае, то избавили бы и себя и нас ("самоваров") от периодически подтверждаюшихся багов и головной боли - почему перестал работать... В этом случае установщик представлял бы из себя самораспаковывающийся архив с батником, регистрирующим программу, файловые ассоциации и деинсталлятор в реестре.
---------
P.S. Мой вопрос связан ещё и с тем, что автообновление Java (включено у подавляющего большинства пользователей) и Windows (вкл. у "кошерных" юзеров) может привести к нарушениям функционала ООо/программ, привязаных к определённым версиям DLL cторонних производителей. В моём случае использование java выше u03 приводит к вылету оболочки-медиацентра.
Ну а мнение "самовара" по "среде" - я знаю нескольких переводчиков английского, которые разницу между "muzzle sight" и "front sight" не улавливают.
 ;D

ape

#4
README.txt сказал:
ЦитироватьЕсли Вы выполняете административную установку с помощью команды setup /a, Вам следует убедиться, что в системе присутствует и зарегистрирована библиотека msvc90.dll. Она необходима для запуска OpenOffice.org после окончания административной установки. Библиотека может быть загружена с сайта Microsoft по адресу http://www.microsoft.com/downloads/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF
Примечание: для выполнения процесса установки необходимы права администратора.
Т.е. установка компонента необходима для регистрации единственной библиотеки, обеспечивающей Административную установку программы (всего-то).

bormant

#5
Цитата: ape от 16 ноября 2010, 00:50
Цитировать
Она необходима для запуска OpenOffice.org после окончания административной установки.
Т.е. установка компонента необходима для регистрации единственной библиотеки, обеспечивающей Административную установку программы (всего-то).
Не видите противоречий?
Выходит, после установки запускать его не надо -- поставили и пусть себе лежит ;-)
Хинт: посмотрите на зависимости файла program\soffice.bin, URE\bin\sal3.dll (да и всех остальных PE файлов) -- среди них легко обнаруживаются импорты из msvcr90.dll (Microsoft Visual C Runtime Library).
Автору на яд. Поддержать форум.

ape

#6
Противоречия вижу:
1. Ванильный OOo_3.2.1_Win_x86_install_.exe содержит \redist (х86 & х64) - содержит; Го-ОО и сборка Инфра-ресурс - нет ("ноги" вопроса растут отсюда).
2. OOo_xxx_Win_x86 - 64-битовых версий нет - redist_х64 присутствует.
3. Если нужна одна (максимум - 3) библиотеки и каждой версии ООо-3.х своя(и) - почему их не разместят в Программной папке, почему установщик, не спрашивая меня (позволяя выбрать как компонент), лезет в "личную жизнь" моей ОСи и при деинсталляции программы не удаляет (предупреждает, что хочет удалить) установленные им компоненты? Но это скорее вопрос к разработчикам, не к Вам. Им, имхо, "в лом" заниматься этим - надо 2 ини-файла ковырять, а это дело - не царское.
Работа над ошибками, конечно, в Оракл ведётся: инсталлятор DEV300m93, например, при отказе Яве в качестве устанавливаемого компонента, услужливо, на всякий случай, положил jre-windows-i586.exe (u22) в \JRE.

По JRE. ООо для детей в этом вопросе пошёл своим путём: необходимые компоненты устанавливаются в \JRE, в диалоге выбора компонентов пункт Java отсутствует, но это уже другая тема.


ape

#7
Прочитав сегодня сообщения об ошибках ООо-3.3.0rs9, нашёл "заявку" на включение msvcr90.dll в состав пакета. Аргументация - не стартует на Windows_2000, а система vcredist_x86.exe из пакета ООо не устанавливает. Замечу, что если и в старших ОС Windows этот пакет не устанавливался, а инсталляция Офиса проводилась из предварительно распакованного дистрибутива исполнением файла libreoffice33.msi (так называемая, "серверная" установка), то Офис так же не запустится. Поэтому излагаю всё, что удалось "накопать".
---------------------------------------------
1. В состав дистрибутивов ветви ООО-330 (и все DEV_OOO-300) вендоры дружно включили не ту версию (SP-1) vcredist_x**.exe, на которую ссылаются ресурсы _.manifest из ЕХЕ-файлов.
2. Офис при запуске проверяет зарегистрирована ли библиотека. Если она зарегистрирована, то, не обращая внимания на версию  x86_Microsoft.VC90.CRT, он её использует. Если библиотека не зарегистрирована, то Офис в %windir%\WinSxS\Manifests ищет файл  x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375.manifest и, найдя его, переходит в одноимённый подкаталог %windir%\WinSxS\... откуда и загружает необходимые библиотеки.
3. Ошибка:
ЦитироватьПохоже, что в портируемой версии ООо-3.2.1 от Инфра-ресурс файлы скомпилированы иначе. В этой версии soffice.exe и soffice.bin необходимые манифест и библиотеки находят сразу (им так "приказано") - в программной папке.
4. Отсюда два способа заставить работать Офис:
- создать вручную (копированием) необходимые ресурсы в %windir%\WinSxS\
- взять из дистрибутива OOo_3.2.1_Win_x86_portable_ru_infra необходимые файлы и разместить их в "Упрямом_Офисе";
- дополнительно разместить Microsoft.VC90.CRT.manifest и msvcr90.dll в: "___Office"\program\...; "___Office\Basis\program\... и "___Office\URE\bin\... .
---------------------------------------------------
Оба способа мной проверены и работают во всех сборках ООО-330 и ООО-300m96. Однако следует помнить, что это мой личный экспериментальный (хотя пока - удачный) опыт, а не решение, предлагаемое Вендорами.
Примечательно, что ОАО "Оракл" выпустила обновлённую версию расширения oracle-pdfimport.oxt для своего ООо, который содержит указанную библиотеку. Т.е. расширению Манифестом приказано искать "гулящую" библиотеку внутри своей папки, а остальному Офису - в чужой.
Так вот работают - как всегда, а говорят, что будут работать - как надо...  ;D