由于开发中使用了OCX控件,如果目标机器上没有对应的OCX文件会造成应用程序无法正常运行,用InstallShield2009注册OCX控件时我走了弯路,最开始是使用INF文件,在InstallScript里写 rundll32 + INF文件名。这样可以正确加载OCX控件,但是在卸载时会把加载的OCX文件卸载掉。经过查找资料,发现InstallShield是自己带了自加载OCX等自动注册控件的功能。流程如下:
第一步:Project Assistant —> Application Files —>Windows目录下有3个子目录,Fonts Floder ,Windows System和Windows System(64bit)。如果是在32位操作系统机器上安装控件可以选择Windows System,这里我选择的是Windows System目录,点击AddFiles添加一个自注册文件到Windows System目录下,这样InstallShield在安装的时候就会把该控件安装到系统盘的system32目录下,如果你需要安装到系统盘的system32目录的子目录中,可以在Windows System目录下建立对应子目录。
第二步:在Installation Designer —>Orgnization—>SetupDesign—>Default Feature ,Default Feature目录下有SelfRegFiles目录,点击SelfRegFiles,右边就有SefRegFiles的属性,Shared 属性 选为 Ture,Uninstal 属性选为False,Self—Register属性选为Ture,这样你的注册控件就能顺利在目标机器上注册,能被其他程序锁使用,反安装的时候也不会被卸载掉。