在接近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)