Apache OpenOffice (AOO) Bugzilla – Issue 116035
msvcr90.dll not found, nothing works until manually copied DLL into ooo_path/program
Last modified: 2012-05-02 15:34:35 UTC
After installing Ooo 3.30 RC7 on Windows 2000 no part of Ooo would start, the OS failed to find msvcr90.dll The error occured at program load stage since all binaries in program/ appear to be linked with MSVCR90.DLL in their PE import table. I do have the DLL in my system in %windir%\winsxs\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.4148_x-ww_d495ac4e but not on PATH. Manually copying MSVCR90.DLL into (ooo_dir)/program/ solved the issue.
Confirming the failure, did not try the provided solution. Raising priority as it stops the suite working.
Setting Keyword "Regression"
I can't reproduce. I've installed OOo 3.3 RC9. No parameters, keeping the default settings of the Installer except disabling the quickstarter. I've had no C++ redistributables on the system before installing OOo.
reassigned
is -> volkerme: If you say this is a regression. Which version of OpenOffice.org could you install successfully? There seems to be a problem with the installation of the vcredist_x86.exe on your Win 2000 system. The file in "winsxs\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.4148_x-ww_d495ac4e" is good. But I also can find the msvcr90.dll in "c:\winnt\system32". And that file is used by the Office. Can you see the Redistributable in your Add-Remove-Software-Applet? There must be an entry for: "Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.4148". Can you remove this successfully? It is immediately installed again, when you start the setup.exe from the OpenOffice.org installation set.
I've retried with OOo 3.3 RC2. I can't reproduce also. msvcr90.dll is installed in the mentioned places and OOo works fine.
volkerme -> is: I have installed on 3.2.1 successful, see http://wiki.services.openoffice.org/wiki/DE/3.2.1_Release_Test I am using a VM for this tests and will look after your hints asap.
is -> volkerme: In OOo 3.2.1 we use vcredist.exe in the version 9.0.21022.218 . In OOo 3.3 we updated this to 9.0.30729.4148. At at least the msvcr90.dll in the winsxs folder is installed successfully on your system. Unfortunately not the important one in c:\winnt\system32.
is -> volkerme: vcredist_x86.exe supports logging of the Windows Installer processes. So you can change into the "redist" directory of your OpenOffice.org installation set and start the vcredist_x86.exe inside a shell with parameter "/l" and full path to the log file. cd redist vcredist_x86.exe /l c:\temp\mylog.txt You should uninstall all Microsoft Visual C++ 2008 Redistributable installations in the Add-Remove-Software Applet before. Maybe we can get some hint from the log file, why you do not get the msvcr90.dll installed into the system32 folder.
volkerme -> is: If I try the above after the installation of RC2, I always get failure dialog which says (for german version) "Der Prozedureinsprungpunkt "HeapSetInformation" wurde in der "KERNEL32.DLL" nicht gefunden." This happens also if I try to start vcredist_x86 without parameters. A log file hasn't been written. In my virtual test system I only installed the SP4, Firefox 3.6, Java 6 Update 22 and the Guest Additions for VirtualBox 3.2.10
is -> volkerme: No log file? What a pity. But one more idea. Which version of Windows Installer you have on your system? Just open a command shell and type: "msiexec.exe" This opens a Window. In the first row you find the version of your Windows Installer.
volkerme -> is: The status window says the version of msiexec.exe is V.200.2600.1183
is -> volkerme: This seems to be a Windows Installer in version 2.x. This is sufficient for the msi database of the OpenOffice.org. There we take care of using only feature from Windows Installer 2.x. But it seems that the installation of vcredist_x86.exe requires a Windows Installer in version 3.x. Are you willing to test this? You can download the Windows Installer 3.1 for example here: http://www.microsoft.com/downloads/details.aspx?displaylang=de&FamilyID=889482fc-5f56-4a38-b838-de776fd4138c
volkerme -> is: I did. And the start of OOo still fails with the same messages.
volkerme: Have you reinstalled the vcredist tool?
volkerme -> of: I uninstalled OOo and checked if the directories had gone. Then updated the installer and after a system restart installed again. The message at the end of the installation also appeared and OOo did not start.
is -> volkerme: And starting "msiexec.exe" from a command line verifies that you have installed Windows Installer version 3.x ? This is really a strange problem of the vcredist_x86.exe installation.
The msvcr90.dll version in manifests and executables (9.0.21022.8) differs from what is installed by OOo during installation. The program searches Windows/winsxs for the correct msvcr90.dll file version (?). These seems to affect also the python scripts. The scripts written in Python don't run on Windows XP and Vista. Try to run one of the preinstalled Python scripts. (Not sure about this, this is checked by not me, but another person.) If you copy the msvcr90.dll and manifest to python folder, the macro seems to work again. The Python uno-components in extensions however seem to work fine on Windows without any additional workarounds.
volkerme -> is: Sorry, it states Windows ® Installer. V 3.01.4000.1823 Maybe it would be useful to upload the image of the VM somewhere. volkerme -> fyva: My comments are about a triage in the process of quality assurance. We want to find out how this can be fixed in the default installation. A workaround is known as you can read from the bug reporter.
This issue seems to be reproducible with Windows XP and Vista if you uninstall all msvcr90.dll's and remove all msvcr90.dll's with their manifests from Windows/winsxs. Then the OOo should not find the required version of msvcr90.dll (because the version installed by OOo (9.0.30729) differs from version of msvcr90.dll in soffice.bin's manifest (and perhaps other manifests) (9.0.21022). <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> </dependentAssembly> Also, the vcredist_x64.exe seems to be redundant on 64 bit Windows (?)
OOo first searches for the correct registered vcredist, if not found it searches the folder of the executable for the correct version, then if not found it is going to Windows /winsxs (?). oracle-pdfimport.oxt 1.0.4 have Microsoft.VC90.CRT.manifest msvcm90.dll msvcp90.dll msvcr90.dll in its folder (perhaps due to this issue?) So, the extension have the libraries integrated. (download it at http://extensions.services.openoffice.org/ru/project/pdfimport) (this issue seems to result in Pyhton scripts not working also on some fresh Windows systems - in this case the libraries should be copied to the folder with python executable)
@fyva: "oracle-pdfimport.oxt 1.0.4 have [...] in its folder (perhaps due to this issue?)" No, it is unrelated; that C++ extensions bundle compiler runtime libraries is a general requirement, see <http://extensions.openoffice.org/servlets/ReadMsg?list=dev&msgNo=1322>.
is -> fyva: If you say, that we do not start on Win 2000, Win XP and Win Vista, this would really be a very big problem. Fortunately, if you install vcredist_x86.exe in version 30729 you will find a policy file in c:\windows\winsxs\policies that redirects requests of version 21022 to 30729. The following is the content of the policy file: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!-- Copyright (c) Microsoft Corporation. All rights reserved. --> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity type="win32-policy" name="policy.9.0.Microsoft.VC90.CRT" version="9.0.30729.4148" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"/> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"/> <bindingRedirect oldVersion="9.0.20718.0-9.0.21022.8" newVersion="9.0.30729.4148"/> <bindingRedirect oldVersion="9.0.30201.0-9.0.30729.4148" newVersion="9.0.30729.4148"/> </dependentAssembly> </dependency> </assembly>
is -> volkerme: Two more questions: You have written, that you do not get a log file after cd redist vcredist_x86.exe /l c:\temp\mylog.txt after you have installed RC2. But it is very important that you uninstalled the redistributable in your Add-Remove-Software-Applet before. There must be an entry for: "Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.4148" after you have installed the RC2. Please remove this and start installation of the redistributable. This has nothing to do with an installed Office. Second: When do you get the error message (for german version) "Der Prozedureinsprungpunkt "HeapSetInformation" wurde in der "KERNEL32.DLL" nicht gefunden." When starting the vcredist or when starting the Office application? We found out, that this might be caused by a missing Windows 2000 Hotfix. Please have a look here: http://msdn.microsoft.com/en-us/library/aa366705%28VS.85%29.aspx Looking in my Add-Remove-Software applet, I cannot see that the Hotfix "KB 816542", but maybe this patch is included in one of the other patches I have on my system. Maybe you can try to install this Hotfix.
fyva -> is: sorry, if I misled you.
fyva -> is: on our forum there is a person (they don't speak english), they say that it is still an error (on Win XP 64bit). They say, that if the OS doesn't have registered version of the vcredist library and you manually add the version installed by OOo to WinSxS (the dll and the manifest) - the OOo doesn't start. Then if you manually add version 9.0.21022.8 OOo starts fine. Now if you want to remove the first added dll with the manifest - the system allows you to do this. But if you want to remove the version 9.0.21022.8 - the system forbids to do this. I.e., the OOo still uses the old dll's, you can check this by trying to remove corresponding dll's from Windows/WinSxS.
is -> fyva: But why do you, or the other person, install msvc libraries and manifest files by hand? I think, this is really a bad idea. In the OpenOffice.org installation set you find a sub folder "redist". There are redistributables for the runtime libraries for 64 bit and 32 bit systems. Looking into the msi database of the vcredist_x86.exe I can see that it contains 127 (!) files at 59 components and 43 CustomActions. You do not expect to get a valid installation if you only copy these files. In your example you do not mention the policy file. But this is essential. The soffice.bin was built with msvcr90.dll in version 21022. Therefore this version is written into its manifest file. And if you install the vcredist.exe correctly you get installed the msvcr90.dll in version 30729 together with a policy file that says the Windows system, that if an application requires the msvcr90.dll in version 21022, it can use the version 30729 because this is obviously downward compatible. So the correct installation of vcredist.exe is absolutely necessary that all this Windows internal processes can work successfully.
did we make any progress here ? Is Win2000 still relevant for us ?
@ mh: We haven't found a way to reproduce this problem. As long as Win2000 is listed in the system requirements it has to be relevant.
as long as we are not able to reproduce this, lowering Prio to 4.
*** Issue 117779 has been marked as a duplicate of this issue. ***
(In reply to comment #30) > as long as we are not able to reproduce this, lowering Prio to 4. I just had this issue (for the first time): I installed 00330m20 and this issue appeared when I tried to use sWriter or sCalc!!! Just FYI, Tracey
vanilla install of win2000 + updates then installed OOo3.3 ( windows, downloaded today). Message on installation "the procedure entry point HeapSetInformation could not be located in the dynamic link library kernel32.dll" Installation proceeded. On starting Oo , missing MSVCR90.dll error message . FWIW MSVCR90.dll doesn't exist on my win2000 system
Please have a look into the folder with the installation files. This was generated in the first step of the installation process. There should be a folder 'redist' which should contain a file 'vcredist_x86.ex' to install the missing libraries. You can get them directly from Microsoft too, find the link in the readme shipped with OOo.
I recently was about to recycle an old laptop and decided to reinstall it's original Windows 2000 Professional OS. The machine was wiped clean and Win 2000 Pro installed. It was an SP2 version so I went to Microsoft and updated to SP4. I'm stating so it's clear this was a completely clean machine with no other installs. I then tried to install OpenOffice 3.3. Initally, I got an error related to a call in kernel32.dll. The error was: The procedure entry point HeapSetInformation could not be located in the dynamic link library KERNEL32.dll. I decide to continue with the install and ran into the msvcr90.dll problem as described here. I looked in my winsxs for msvcr90.dll and found the latest version here was msvcr80.dll. It appears Windows 2000 Pro cleanly installed with SP4 does not install msvcr90.dll. I assume this runtime library is part of the OpenOffice install and did not get installed because of the KERNEL32.dll error. I ended up finding a copy of msvcr90.dll and putting in the ooo_dir/program area and it runs fine so far.
The kernel32 error means that the code is accessing an Windows API entry point that was introduced later than the kernel32 that is on the machine. For Windows 2000, it tends to mean that the, although SP4 is installed, there are missing updates: http://www.computing.net/answers/windows-2000/heapsetinformation-problem/65496.html Run Windows update to ensure that the Win2k SP4 is fully patched. The VC90 CRT issue may be an independent problem.
AOO won't support Win2000 any longer.