GAC write failed when upgrade with InstallShield

在接近final-build的時候,忽然發現當前版本從上一個版本upgrade的時候,須要寫到GAC (Global Assembly Cache)的assambly會寫失敗掉。可是隻會在特定的Microsoft OS (個人重現環境是Win7)下會有這樣的問題。windows

失敗的具體狀況爲:ui

upgrade在卸載前版本的時候,GAC是清理乾淨了;orm

安裝新版本的過程時,GAC會寫不進去;進程

這種狀況下,打開新版本,在task manager能夠看到兩個叫MSIEXEC.exe(windows installer進程)的進程被建立了;ip

 

糾其緣由,是upgrade的時候,一些程序須要的global assembly不能正常的寫到GAC。get

這時候打開程序時,運行到引用這些global assembly的程序邏輯時,會發現這些assembly的缺失,因此新建了windows installer進程試圖從installer中從新拿到global assembly去寫入GAC。io

可是程序邏輯沒有中止,會發現引用失敗,致使程序失敗。只有windows installer把全部的global assembly寫完了,再從新打開,程序才能正常啓動。form

 

這個是windows的已知bug,而且Microsoft已經給出了補丁。只要在出現問題的環境安裝補丁就能夠解決這個問題。補丁下載地址以下下載

Package:引用

-----------------------------------------------------------

-----------------------------------------------------------

KB Article Number(s): 981929

Language: All (Global)

Platform: x64

Location: (http://hotfixv4.microsoft.com/Windows%20Vista/sp3/Fix314138/6000/free/410051_intl_x64_zip.exe)

-----------------------------------------------------------

KB Article Number(s): 981929

Language: All (Global)

Platform: i386

Location: (http://hotfixv4.microsoft.com/Windows%20Vista/sp3/Fix314138/6000/free/410048_intl_i386_zip.exe)

相關文章
相關標籤/搜索