Side by Side Private Assemblies

今天終於解掉一個困擾我已久的問題,原來解答是這麼簡單!

我用 VS2005 SP1 寫了一個程式,拿到完全沒有安裝 CRT/MFC 的電腦上跑,基本上是跑不起來的!會有如下的錯誤訊息:


由於我知道程式使用了 CRT/MFC 8.0.50727.762 版本的 release run-time library,讓程式正常執行,可以這樣做:

1.
找一台裝有 8.0.50727.762 版本的電腦,到 C:\WINDOWS\WinSxS 底下,找到這兩個目錄:

x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700
x86_Microsoft.VC80.MFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_3bf8fa05

2.
再到 C:\WINDOWS\WinSxS\Manifests,找到這兩個檔案:

x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700.manifest
x86_Microsoft.VC80.MFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_3bf8fa05.manifest

3.
再到 C:\WINDOWS\WinSxS\Policies,找到這兩個目錄:

x86_policy.8.0.Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_x-ww_77c24773
x86_policy.8.0.Microsoft.VC80.MFC_1fc8b3b9a1e18e3b_x-ww_0f75c32e

4.
將前三個步驟找到的目錄及檔案,複製到目標電腦的相同地方,就大功告成啦!

由於這邊我的程式是 release 版本;如果是 debug 版本的程式,記得要複製以 Debug 開頭的檔案/目錄。以 manifest 來說,就是:

x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f.manifest
x86_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_257740a4.manifest

其實這個問題我之前就嘗試解過一次了,只是那次竟然忽略了 Policies 這個目錄裡的東西。看來以後要更細心點!

留言

熱門文章