在接近final-build的时候,突然发现当前版本从上一个版本upgrade的时候,需要写到GAC (Global Assembly Cache)的assambly会写失败掉。但是只会在特定的Microsoft OS (我的重现环境是Win7)下会有这样的问题。

失败的具体情况为:

upgrade在卸载前版本的时候,GAC是清理干净了;

安装新版本的过程时,GAC会写不进去;

这种情况下,打开新版本,在task manager可以看到两个叫MSIEXEC.exe(windows installer进程)的进程被创建了;

 

纠其原因,是upgrade的时候,一些程序需要的global assembly不能正常的写到GAC。

这时候打开程序时,运行到引用这些global assembly的程序逻辑时,会发现这些assembly的缺失,所以新建了windows installer进程试图从installer中重新拿到global assembly去写入GAC。

但是程序逻辑没有停止,会发现引用失败,导致程序失败。只有windows installer把所有的global assembly写完了,再重新打开,程序才能正常启动。

 

这个是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)

GAC write failed when upgrade with InstallShield的更多相关文章

  1. Failed to upgrade Oracle Cluster Registry configuration(root.sh)

        近期在给客户基于Suse 11 sp3安装Oracle 10g RAC,在安装完clusterware运行/u01/app/crs/root.sh时收到错误提示.Failed to upgra ...

  2. Failed to upgrade AX 2012 R3 Retail channel database from CU9 to CU11 if SQL Server version was lower than 2012

    I tried to upgrade AX 2012 R3 Retail channel database from CU9 to CU11 for client. after generated n ...

  3. SQL SERVER 2012启动失败 because upgrade step 'SSIS_hotfix_install.sql' 失败

    有台数据库服务器(开发服务器),开发人员邮件告诉我,SSMS连接不了这台服务器,远程登录后,发现SQL SERVER的服务停止了,启动服务时报错,服务启动不了.检查错误日志发现下面一些信息 2015- ...

  4. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...

  5. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part2:clusterware安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part2:clusterware安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 3.安装Clus ...

  6. 使用DOS工具修复数据库

    当SQL Server 实例出现异常,无法远程链接时,数据库管理员需要登陆到SQL Server实例机器上,通过命令行工具,修复异常. 一,使用net命令行启动数据库 通过net start 命令启动 ...

  7. RAW+ASM 的RAC 安装文档

    实验平台:Oracle 10gR2 RAC + RHEL 4.0 +VMWare GSX 3.2.0 安装步骤: 1.安装前准备及OS安装配置 2.安装Oracle 10gR2 clusterware ...

  8. kubectl插件管理工具krew

    文章转载自:https://blog.51cto.com/loong576/2452592 一.k8s核心组件 Kubernetes 主要由以下几个核心组件组成: etcd 保存了整个集群的状态: a ...

  9. AX2012 R3 Data upgrade checklist sync database step, failed to create a session;

    最近在做AX2012 R3 CU9 到CU11的upgrade时 (用的Admin帐号), 在Date upgrade 的 synchronize database 这步 跑了一半,报出错误 说“fa ...

随机推荐

  1. [021]转 C++ Pimpl机制

    出处:http://www.cnblogs.com/gnuhpc/ 1.简介 这个机制是Private Implementation的缩写,我们常常听到诸如“不要改动你的公有接口”这样的建议,所以我们 ...

  2. Hibernate: Truly Understanding the Second-Level and Query Caches--reference

    I've written multiple articles here at Javalobby on the Hibernate O/R mapping tool, and they are usu ...

  3. Input

    Input Basic Input Old Input Files Please note that both Input and Request do NOT sanitize your data, ...

  4. multithread synchronization use mutex and semaphore

    #include <malloc.h> #include <pthread.h> #include <semaphore.h> struct job { /* Li ...

  5. div 块跟随 鼠标点击

    js: $(document).ready(function () { $(".company-contact ul li").click(function (ev) {      ...

  6. hadoop安装包的目录结构

    初次接触Hadoop,了解了Hadoop安装包的目录结构,和大家分享下: bin:Hadoop最基本的管理脚本和使用脚本的目录,这些脚本是sbin目录下管理脚本的基础实现,用户可以直接使用这些脚本管理 ...

  7. 关于JFace中的输入值(InputDialog)对话框类

    格式: InputDialog(Shell parentShell, String dialogTitle, String dialogMessage, String initialValue, In ...

  8. JavaScript 零散知识点1 (正则表达式+定时器+hover)

    1.clear:both清楚浮动影响//css中 2.正则表达式 search方法 :指明是否存在相应的匹配,如找到一个返回一个整数值,表明这个匹配距离字符串开始的偏移位置,如果没有找到匹配返回-1f ...

  9. 다음에 적용될 Auto_increment 값 알아 내기 (计算下一个Auto_increment的值)

    Mysql 4.X <------ SHOW TABLE STATUS FROM [DB_NAME] LIKE '[TABLE_NAME]';     Mysql 5.X ----------- ...

  10. ASP实现用年月日时分秒和两位随机数字来作为上传文件名的函数

    Public Function GetNewFileName() dim ranNum dim dtNow dtNow=Now() randomize ranNum=int(90*rnd)+10 Ge ...