Compartir a través de


Corregir una aplicación existente mediante un ensamblado privado

A partir de Windows XP, puedes crear un ensamblado privado y ponerlo a disposición de una aplicación específica. Esta funcionalidad se puede usar para corregir una aplicación que se vuelve incompatible con una actualización. Un ejemplo sería una aplicación que deja de ser incompatible con la versión más reciente de MSVCRT.DLL después de actualizar el sistema operativo. En este caso, no tiene la opción de reemplazar la versión del sistema porque MSVCRT.DLL es un archivo protegido de Windows. En lugar de tener que volver a escribir la aplicación para que funcione con la nueva versión de MSVCRT, puede crear un ensamblado privado para MSVCRT e instalarlo en la carpeta de la aplicación. Tenga en cuenta que no todos los componentes compartidos son un candidato adecuado para un ensamblado privado en paralelo y algunos componentes tienen restricciones de licencia sobre dónde se pueden instalar sus componentes. El componente debe cumplir los criterios de un componente en paralelo. Pregunte al publicador del componente si puede proporcionar un ensamblado adecuado.

El manifiesto del ensamblado privado y el manifiesto de la aplicación deben instalarse en la misma carpeta que el ejecutable de la aplicación. Cuando se ejecuta la aplicación, consulta el manifiesto de aplicación y carga la versión de MSVCRT que es privada para la aplicación.

En este ejemplo, el ensamblado privado incluiría tanto MSVCRT.DLL como MSVCIRT.DLL como en el siguiente manifiesto de ensamblado:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity type="win32"
      name="Microsoft.Windows.PrivateCPlusPlusRuntime" 
version="6.0.0.0" 
processorArchitecture="x86"/>
    <file name="msvcrt.dll"/>
    <file name="msvcirt.dll"/>
</assembly>

A continuación se muestra un ejemplo de un posible manifiesto de aplicación.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
<assemblyIdentity 
    version="1.0.0.0" 
    processorArchitecture="x86" 
    name="APPLICATION" 
    type="win32" 
/> 
<description>Description of Application</description> 
<dependency> 
    <dependentAssembly> 
       <assemblyIdentity 
           type="win32"
           name="Microsoft.Windows.PrivateCPlusPlusRuntime" 
           version="6.0.0.0" 
           processorArchitecture="x86"/> 
    </dependentAssembly> 
</dependency> 
</assembly>