刘政道 - 应用程序框架

《31天学会CRM项目开发(C#编程入门及项目实战)》作者,IT经理,程序员
  博客园  :: 新随笔  :: 联系 :: 管理

如何替换exe程序中的某个文件?

Posted on 2011-07-07 10:25  刘政道  阅读(2067)  评论(0编辑  收藏  举报

我们公司有套业务系统,需要使用oracle的一个插件(Jinit22.exe),但使用过程中发现IE经常报异常,导致系统不能正常使用,很难解决。后来,有同事发现,将Jinit22.exe安装后的jvm.dll给替换成一个新版的jvm.dll文件就可以避免错误。方法是找到了,但是要求用户自己去替换这个文件想必还是很麻烦。最好是从源头解决这个问题。

 

思来想去,要是能够将Jinit22.exe中的jvm.dll直接替换掉就能彻底解决问题,事实上这样做是可行的。

1 先将Jinit22.exe用压缩软件解压到jinit22下,会发现里边有data1.cab和data2.cab两个文件。

2 通过InstallShield自带的cab viewer打开data1.cab可以看到要替换的文件jvm.dll。通过iscab.exe命令来替换jvm.dll,不报错,但是改造后的setup.exe无法运行。原来,iscab只能对10.0的有效,对于5.0或6.0版本的cab不能修改。

3 用WinPack也可以修改cab文件,尤其是适合解决InstallShield5.0或6.0生成的cab文件,果然修改后的文件可以正常运行。

4 由于解压后生成了好几个文件,原来的Jinit22.exe是安装程序,要是能把这些文件打包成可执行exe安装文件就好了。原来方法也是有的,居然通过winrar的自解压功能就可以,太神奇了。

 

通过上述方法,不用编程就改造了exe安装程序,大大方便了工作。