http://groups.google.com/groups?q=g:...%40tkmsftngp04
Among other things, the thread talks about the C Runtime files such as
MSVCR71.DLL, and seems to indicate that they should be installed in
our applications directory, and not in the System32 directory.
Specifically, Brandon states the following about installing the C
Runtime library in the System32 directory:
Basically, we don't want these files to fall under system file protection.If that were to happen, these DLLs are either "known DLLs" or transitivelyso. If this were to happen, only the operating system could service thesefiles and doing so would be incredibly difficult for app compatibility.It's just better that every application use its own version of these DLLs bystoring them with the rest of the files in the application directory. Thatway the application is guaranteed to remain working even if the CRT or MFCis serviced in other applications.
--
Cheerio!
Brandon Bray Program Manager in the Visual C++
Compiler Team
I created a merge module for our application which installs in lets
say \Program Files\OurApp. Our merge module has a dependancy on the
MSVCR71.DLL merge module VC_USER_ATL_RTL_X86_---.MSM. As well as
using our merge module within our own installation, we also give it
out to third parties who write thier own application which integrate
with our application. They would then write thier own installation
program which would install thier application to \Program
Files\ThierApp, and would include our merge module for our product
functionality. During installation, thier application is installed to
\Program files\ThierApp, and our components are installed to \Program
Files\OurApp (as directed by our merge module).
Both our application and thier application requires MSVCR71.DLL, and
in the past the install program would simply install MSVCR71.DLL to
the System32 directory. However, if it is Microsofts desire for us to
install the C Runtime library into our own application directories,
then it will be necessary to copy the file to both application
directories. The problem is that MSI does not provide any way to
retarget a merge module to more than one location.
This issue raises the following questions:
1. Where can I find an official anouncement from Microsoft indicating
that we should be installing the C Runtime in our application
directory, instead of the System32 directory?
2. Using the example given above, how can we retarget the C Runtime
merge modules so that they can be installed in both application
directories?
3. If applications are required to install the C Runtime into thier
own application directory, then why is Visual Studio not obeying the
rule, and instead installing MSVCR71.DLL into the System32 directory?
4. Is it safe for us to continue to install MSVCR71.DLL to the
System32 directory, using Microsofts merge module
VC_USER_CRT_RTL_X86_---.MSM?
Regards,
Sijmen.