您的位置:首页资讯网络应用 → 用HTML应用启动CD

用HTML应用启动CD

时间:2004/10/8 16:35:00来源:本站整理作者:蓝点我要评论(0)

    

  本文介绍一种用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=<在Windows资源管理器中显示的图标>


  如果不想显示图标,可以忽略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 <= 32)
{
// 运行HTA文件出现错误,可能是由于
// 该机器上没有IE 5或更高版本
// 打开资源管理器,显示CD内容
ShellExecute(NULL, "explore", "", NULL, NULL, SW_SHOWNORMAL);
return 1;
}
else
{
// 启动成功
return 0;
}
}


三、常见的任务


  除了显示用户界面、与用户交互以外,CD启动器可能需要执行的任务还包括:


  1、启动一个Windows Installer的安装程序(MSI)。假设安装程序是setup.msi,用VBScript实现的代码如下:


set msi = CreateObject( "WindowsInstaller.Installer" )


msi.InstallProduct("setup.msi")


set msi = nothing


  2、启动一个EXE文件。参见本文后面的例子。


  3、读取注册表内容。


  有时候需要检查目标机器上是否已经安装了必要的支持软件,这可以通过检查注册表中是否有相应的ProgID来实现。以Access 2002为例,它的ProgID是Access.Application.10。下面是检查目标系统上是否已经有Access 2002的VBScript代码:


On Error Resume Next
set wscript = CreateObject("WScript.Shell")
if IsNull(wscript.regRead ( "HKCR\Access.Application.10\clsid\" )) then
msAccessDetect.InnerText = "不能找到Access 2002。你需要安装Access 2000才能运行本软件。"
else
msAccessDetect.InnerText = "已找到Access 2002。"
end if
set wscript = Nothing


  如果用户禁止运行脚本(在浏览器选项中选择了禁用脚本选项),会出现什么样的情形呢?我试验了一下,什么异常也没有出现。看来HTML应用忽略了Internet安全设置,因为HTML应用被视为“本地”应用,不受Internet安全设置的限制。


四、应用实例


  图一是一个CD启动器的实例。窗口布局用HTML代码实现。主要包括:用背景图片把整个窗口分成左右两大区域,左边上方是待安装的软件名称(“工资软件 Access版”),左边下方是一个广告。右边是主显示区域,显示内容由VBScript脚本更新。



图一


  HTML应用的编写方式与编写HTML页面很相似,但扩展名要改为.hta。HTML应用允许通过HTA:Application标记控制应用的行为,这个标记必须在之内,例如,下面的HTA:Application声明了HTML应用的名称,关闭了最大化、最小化按钮,关闭了浏览器的滚动条:



欢迎
MAXIMIZEBUTTON="no" MINIMIZEBUTTON="no"
SINGLEINSTANCE="yes" SCROLL="no" />


  脚本的主要任务是检查安装环境是否符合要求并给出相应的提示,启动主安装程序(setup.exe)或执行安装任务(复制文件,访问注册表写入相关信息等),当setup.exe返回时报告安装结果。如下所示:





欢迎使用


系统检查:





已检查所有的安装条件









相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360免费wifi电脑版怎么有道云笔记怎么保存网有道云笔记内容丢失怎360免费wifi一直显示正

最新文章 微博热搜宝盒是什么 微最新微信编辑器哪个好 百度网盘安全吗?百度网盘信息泄露怎么回事乐视云盘关闭怎么办 乐视云盘关闭怎么转移文百度云盘下载速度慢解决方法2017 百度云盘下百度网盘怎么用迅雷下载2017 百度网盘怎么用

人气排行 无线网络密码破解WPA/WPA2教程(包教包会)微信编辑器哪个好 3种实用微信编辑器推荐foxmail邮件存储位置在哪 foxmail7.2邮件存p2p种子搜索器用不了解决办法360免费wifi没有无线网卡怎么办百度云网盘中怎么添加好友 百度云网盘添加微信电脑版聊天记录保存在哪 微信电脑版文件360云盘上传速度慢怎么办 360云盘上传速度慢