1

我们创建了一个更新 TrueType 字体 (.TTF) 文件的 MSP 补丁,但它会导致 1603(安装后需要重新启动。)这是 MSI 日志:

MSI (s) (5C:48) [23:33:56:432]: Executing op: FileCopy(SourceName=TestFont.ttf,SourceCabKey=testfont.ttf,DestName=TestFont.ttf,Attributes=20480,FileSize=34880,PerTick=65536,,VerifyMedia=1,,,,,CheckCRC=0,Version=1.3.0.0,,InstallMode=58982400,HashOptions=0,HashPart1=1022639218,HashPart2=1170530421,HashPart3=1359995143,HashPart4=-948212544,,)
MSI (s) (5C:48) [23:33:56:432]: File: C:\Program Files (x86)\TESTDIR\TestFont.ttf;  Overwrite;  Won't patch;    Existing file is a lower version
MSI (s) (5C:48) [23:33:56:433]: Source for file 'passtrue.ttf' is compressed
InstallFiles: File: TestFont.ttf,  Directory: C:\Program Files (x86)\TESTDIR\,  Size: 34880
MSI (s) (5C:48) [23:33:56:434]: Re-applying security from existing file.
Info 1603. The file C:\Program Files (x86)\TESTDIR\TestFont.ttf is being held in use.  Close that application and retry.
MSI (s) (5C:48) [23:33:57:765]: Verifying accessibility of file: TestFont.ttf

我确定该文件未在使用中。(在应用此补丁之前重新启动机器。)

谢谢!

4

1 回答 1

3

最可能的原因是该字体作为永久字体安装,即它在注册表中列出。相关的注册表项是:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts

字体安装和删除中所述:

从 %windir%\fonts 文件夹以外的位置安装的字体在任何活动会话(包括会话 0)中加载时都无法修改。因此,任何更改、替换或删除的尝试都将被阻止。[...] 永久字体在重新启动后仍然安装,并由所有创建的会话加载。

您可以通过在%windir%\fonts目录中安装字体或将其设为临时字体来解决问题。

(请注意,此行为相对较新,已在安全更新 MS14-045中引入。)

于 2015-08-23T04:22:37.403 回答