圖
我研究了很多第三方的主題,無意發(fā)現(xiàn),主題語言文件對應的語言包文件名與主題文件名不匹配,是導致主題不能用的一個原因。以我現(xiàn)在使用的 Aero 5048為例,主題文件夾下的視覺樣式文件名為Aero 5048.msstyles,而對應的語言包(en-US或zh-CN)中的語言文件為Aero.msstyles。
這就導致了 Windows 在加載主題時候,讀取不出正確的語言文件(要找的是Aero 5048.msstyles.mui而非Aero.msstyles.mui),從而導致主題無法加載。為什么在安裝更新之前都可以加載呢?原因就在于 Windows 緩存了這些語言文件,裝載主題的時候不需要從aero.msstyles.mui當中讀取對應語言數(shù)據,所以使用一直沒有問題。
正確的解決辦法是:
進入對應的語言文件夾,將aero.msstyles.mui 更名為視覺樣式對應的文件名。以 Aero 5048為例,將aero.msstyles.mui更名為Aero 5048.msstyles.mui,然后重新打開“個性化”,選擇需要更換的主題即可。所以,這不存在什么微軟打擊第三方主題的問題。下圖附件是安裝了更新之后,正常啟用的啟用第三方主題(注意玻璃效果)。
總結原因:
這是就在于Windows Vista 的多語言機制(MUI)上。在 Vista 中,MUI的原理是默認搜尋當前語言版本的文件夾(中文版是zh-CN),如果沒有發(fā)現(xiàn)或者是文件夾下的MUI文件不符合,則進一步en-US文件夾下對應文件。如果en-US下的對應文件再不符合,則加載失敗。如果各位發(fā)現(xiàn)主題加載失敗,可試著建立一個 zh-CN文件夾,把en-US下的同名文件的拷來看看。
最后,在主題文件和語言包不對應的情況下,如果把C:\Windows\rescache下面的全部東西都刪掉,就會發(fā)現(xiàn)同樣的問題。