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)

相关文章
相关标签/搜索