使用专用程序集修复现有应用程序

从 Windows XP 开始,可以创建专用程序集并将其提供给特定应用程序。 此功能可用于修复与更新不兼容的应用程序。 例如,升级操作系统后,应用程序与最新版本的 MSVCRT.DLL 不兼容。 在这种情况下,你无法选择替换系统版本,因为 MSVCRT.DLL 是 Windows 受保护的文件。 可以创建 MSVCRT 的专用程序集,并将其安装在应用程序文件夹中,而不必重写应用程序以使用新版本的 MSVCRT。 请注意,并非每个共享组件都是专用并行程序集的合适候选项,并且某些组件对其组件的安装位置具有许可限制。 组件需要满足并行组件的条件。 询问组件的发布者是否可以提供合适的程序集。

专用程序集的清单和应用程序的清单都应与应用程序的可执行文件安装在同一文件夹中。 应用程序运行时,它会查阅应用程序清单,并加载应用程序专用的 MSVCRT 版本。

对于此示例,私有程序集将包括 MSVCRT.DLL 和 MSVCIRT.DLL,如以下程序集清单中所示:

<?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>

下面是一个可能的应用程序清单的示例。

<?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>