Issue 116035

Summary: msvcr90.dll not found, nothing works until manually copied DLL into ooo_path/program
Product: General Reporter: alec_y <m8r-ahjydf>
Component: codeAssignee: Olaf Felka <olaf-openoffice>
Status: CLOSED WONT_FIX QA Contact: issues@framework <issues>
Severity: Trivial    
Priority: P4 CC: bobt98, ingo.schmidt-rosbiegal, issues, markmiller66, markomlm, mdxonefour, merschmann, nesshof, ooo, orcmid, paul, rb.henschel, shenmux09, stephan.bergmann.secondary, wpiis
Version: OOo 3.3 RC7Keywords: regression
Target Milestone: ---   
Hardware: PC   
OS: Windows 2000   
Issue Type: DEFECT Latest Confirmation in: ---
Developer Difficulty: ---

Description alec_y 2010-12-10 09:49:08 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.
Comment 1 merschmann 2011-01-05 10:49:04 UTC
Confirming the failure, did not try the provided solution.

Raising priority as it stops the suite working.
Comment 2 merschmann 2011-01-10 11:10:59 UTC
Setting Keyword "Regression"
Comment 3 Olaf Felka 2011-01-10 12:29:49 UTC
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.
Comment 4 Olaf Felka 2011-01-11 10:42:15 UTC
reassigned
Comment 5 ingo.schmidt-rosbiegal 2011-01-11 11:12:57 UTC
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.
 
Comment 6 Olaf Felka 2011-01-11 11:46:16 UTC
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.
Comment 7 merschmann 2011-01-11 12:57:10 UTC
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.
Comment 8 ingo.schmidt-rosbiegal 2011-01-11 13:52:08 UTC
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.
Comment 9 ingo.schmidt-rosbiegal 2011-01-11 14:08:57 UTC
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.
Comment 10 merschmann 2011-01-12 22:16:47 UTC
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
Comment 11 ingo.schmidt-rosbiegal 2011-01-13 10:11:00 UTC
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.
Comment 12 merschmann 2011-01-13 19:40:30 UTC
volkerme -> is: The status window says the version of msiexec.exe is V.200.2600.1183
Comment 13 ingo.schmidt-rosbiegal 2011-01-14 08:34:26 UTC
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

Comment 14 merschmann 2011-01-17 10:02:06 UTC
volkerme -> is: I did. And the start of OOo still fails with the same messages.
Comment 15 Olaf Felka 2011-01-17 10:12:20 UTC
volkerme: Have you reinstalled the vcredist tool?
Comment 16 merschmann 2011-01-17 10:19:09 UTC
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.
Comment 17 ingo.schmidt-rosbiegal 2011-01-18 15:39:45 UTC
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. 
Comment 18 fyva 2011-01-18 21:59:32 UTC
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.
Comment 19 merschmann 2011-01-18 22:34:46 UTC
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.
Comment 20 fyva 2011-01-19 07:51:04 UTC
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 (?)
Comment 21 fyva 2011-01-19 08:06:30 UTC
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)
Comment 22 Stephan Bergmann 2011-01-20 16:42:39 UTC
@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>.
Comment 23 ingo.schmidt-rosbiegal 2011-01-20 16:54:11 UTC
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>
Comment 24 ingo.schmidt-rosbiegal 2011-01-20 17:14:47 UTC
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.

Comment 25 fyva 2011-01-20 19:57:02 UTC
fyva -> is: sorry, if I misled you.
Comment 26 fyva 2011-01-21 07:55:05 UTC
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.
Comment 27 ingo.schmidt-rosbiegal 2011-01-21 09:54:43 UTC
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.
Comment 28 Martin Hollmichel 2011-03-15 12:09:19 UTC
did we make any progress here ? Is Win2000 still relevant for us ?
Comment 29 Olaf Felka 2011-03-15 12:14:18 UTC
@ 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.
Comment 30 Martin Hollmichel 2011-03-15 12:16:37 UTC
as long as we are not able to reproduce this, lowering Prio to 4.
Comment 31 Olaf Felka 2011-04-11 05:40:31 UTC
*** Issue 117779 has been marked as a duplicate of this issue. ***
Comment 32 tracey002 2011-05-31 22:16:12 UTC
(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
Comment 33 paul 2011-07-23 13:32:16 UTC
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
Comment 34 Regina Henschel 2011-07-23 14:06:27 UTC
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.
Comment 35 Mark Miller 2012-01-18 22:26:30 UTC
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.
Comment 36 orcmid 2012-01-18 23:24:53 UTC
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.
Comment 37 Olaf Felka 2012-05-02 15:34:14 UTC
AOO won't support Win2000 any longer.