用HTML应用启动CD

本文介绍一种用HTML应用来启动CD的方法。HTML应用即HTML Application,也称为HTA应用,这是一种从IE 5.0开始出现的应用形式。HTML应用与普通HTML页面不同,它能够读写文件系统和注册表,由于它在本地运行,所以能够调用各种COM组件——即使COM组件没有适当的安全标记也可以。HTML应用运行时不会显示出IE的工具条和菜单,所以它看起来不象Web页面,而是象一个“真正的”程序。

一个设计专业、精美的CD启动器能够给用户留下良好的印象。启动程序可以为用户提供软件安装和光盘内容的说明,提供帮助,检查必要的第三方软件和对操作系统的要求,甚至还可以乘机向用户推荐你的其他产品,最重要的是,启动程序能够简化软件安装过程。Microsoft把支持CD“自动播放”作为兼容“Designed for Windows”标记的必备功能,软件易用性的重要程度由此可见一斑。

一、CD的启动方式

支持CD“自动播放”的启动器有多种实现方法,除了HTA,至少还包括:

 ▲ 编写一个简单的Visual Basic程序。采用这种方式的主要问题在于,目标系统上必须有VB运行库。虽然可以用临时安装VB运行库的办法解决,但这种方法看起来比较笨拙。

 ▲ 直接启动CD上软件的主安装程序(下面我们称之为setup.exe)。如果不想提供帮助信息、产品说明以及检查目标环境是否符合要求,直接启动setup.exe也是一种选择。

 ▲ 使用商业启动程序。有不少商业的(以及共享的)产品能够创建CD启动器。采用这种方式与自己编写HTA一样有许多优点,但采用商业产品要求你花时间了解该产品,同时还要有一定的投资。如果采用HTML应用,你可以方便地运用HTML、脚本代码构造用户界面,运用COM组件扩展HTA的功能。

 ▲ 使用html文件。HTML文件不能读写注册表,而且它在启动主安装程序时会引起安全警告。

对于要求不高的场合,软件安装过程完全可以由HTA应用独立完成,不再需要主安装程序。

二、AUTORUN.inf文件

要让CD具有自动播放功能,CD的根目录下必须有一个AUTORUN.INF文件,内容如下:

[autorun]

OPEN=

ICON=

如果不想显示图标,可以忽略ICON这一项。Windows的自动播放功能不调用Win32 ShellExecute() API,因此在OPEN这一项中只能填.exe、.com或.bat文件。因为我们想用.hta文件,这是一个小麻烦。不过解决办法很简单,只需创建一个调用ShellExecute()的autorun.exe文件就可以了。

autorun.exe是一个stub程序,它有一个命令行参数——要求运行的文件名字。例如,如果要求autorun.exe启动autorun.hta应用,在AUTORUN.INF文件中指定“OPEN=autorun.exe autorun.hta”即可。

如果ShellExecute()函数返回错误,autorun.exe在资源管理器中打开CD根目录。

下面就是AUTORUN.EXE的源代码,用VC ++ 6.0编译只有36K(可以使用其他任何Windows的C编译器):

#include int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){HINSTANCE result;// 启动命令行指定的文件result = ShellExecute(NULL, "open", lpCmdLine, NULL, NULL, SW_SHOWNORMAL);// 检查结果if ((int)result 欢迎使用

系统检查:已检查所有的安装条件 开始安装