采用.net 4.0框架开发的一个桌面应用程序在某学校的一体机(Windows7的32位操作系统)上做安装部署时抛出异常,安装程序回滚,多次尝试仍不成功。
Error 1001. 在初始化安装时发生异常 System.BadImageFormatException:未能加载文件或程序集”....“或它的某一个依赖项。
异常截图如下:
该程序在Windows7的64位操作系统环境下安装部署均正常,应用程序的生成目标平台为了兼容32位机器,选用的是X86
项目的安装工程的属性程序集配置如下:
项目安装工程的属性--系统必备如下:
好了,就是这样了,生成的安装包在上面提到的一体机上安装抛出异常,在其他设备上安装正常;
下面就是我的解决方案了:
第一步:我们检查了机器的.net 4.0框架是否安装完整;我们将机器上的.net 4.0框架卸载了重新安装,再尝试安装异常依旧(排除了.net 4.0框架的问题);
第二步:我们检查了机器的Windows组件是否安装完整,打开机器的控制面板--程序--打开或关闭Windows功能,
我注意到用户机器上的Windows Process Activation Service组件没有安装,我将“.NET环境”选中,点击”确定“,等待系统安装该组件;
做完上面的步骤,似乎看到了曙光,以为已经解决了问题,可是重启机器后再尝试重新安装我们的应用程序,发现还是无法安装成功;异常提示依旧。
原来Windows process activation service Windows进程激活服务似乎和我们的windows桌面应用程序是否能正常运行无关,只是通过删除对 HTTP 的依赖关系,可统一 Internet 信息服务 (IIS) 进程模型。
此时,我们决定做个小测试,发现不仅我们的应用程序无法安装,用.net 2.0 和 3.5分别编写了一个简单的控制台小程序,在该机器上依旧不能运行;
几近崩溃啊!真是快崩溃了!
第三步:杀毒
我们检查了一下用户机器的任务管理器,发现有一些不明程序在运行, 由于用户的一体机上没有安装杀毒软件,莫非是中了病毒造成的?于是,我们对用户机器进行了杀毒,一杀不要紧,竟然有376个文件感染了木马,查杀出了十几个木马,杀毒的过程当时忘记截图了,就不上图了;
杀毒完成,重启机器后,我们再尝试安装我们的应用程序,这次竟然成功了,成功了!
所以,程序员苦逼,原因莫过于如此了,很多时候,遇上都是非程序本身的问题,遂发文以纪念!