光盘自动运行 html,用HTML Application制作光盘启动界面

本文主要是介绍光盘自动运行 html,用HTML Application制作光盘启动界面,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文介绍一种用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 <= 32)

{

// 运行HTA文件出现错误,可能是由于

// 该机器上没有IE 5或更高版本

// 打开资源管理器,显示CD内容

ShellExecute(NULL, "explore", "", NULL, NULL, SW_SHOWNORMAL);

return 1;

}

else

{

// 启动成功

return 0;

}

}

三、常见的任务

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

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

set msi = CreateObject( "WindowsInstaller.Installer" )

msi.InstallProduct("setup.msi")

set msi = nothing

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

3、读取注册表内容。

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

On Error Resume Next

set wscrīpt = CreateObject("Wscrīpt.Shell")

if IsNull(wscrīpt.regRead ( "HKCR\Access.Application.10\clsid\" )) then

msAccessDetect.InnerText = "不能找到Access 2002。你需要安装Access 2000才能运行本软件。"

else

msAccessDetect.InnerText = "已找到Access 2002。"

end if

set wscrīpt = Nothing

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

四、应用实例

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

200305120953000101.jpg

图一

HTML应用的编写方式与编写HTML页面很相似,但扩展名要改为.hta。HTML应用允许通过HTA:Application标记控制应用的行为,这个标记必须在

之内,例如,下面的HTA:Application声明了HTML应用的名称,关闭了最大化、最小化按钮,关闭了浏览器的滚动条:欢迎

MAXIMIZEBUTTON="no" MINIMIZEBUTTON="no"

SINGLEINSTANCE="yes" SCROLL="no" />

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

欢迎使用

系统检查:


已检查所有的安装条件

开始安装

' 下面的代码在启动时运行

Call Main

Sub Main

Dim wscrīpt

Const HEIGHT = 600

Const WIDTH = 400

' 调整窗口大小和位置

window.resizeTo HEIGHT, WIDTH

window.moveTo (screen.width - HEIGHT) / 2, (screen.height - WIDTH) / 2

' 检查Access是否已经安装,略...

End Sub

Function CheckInstallResult (lngReturnValue)

' 根据指定的返回值确定要返回的文字信息

select case lngReturnValue

case 0:

CheckInstallResult = "安装成功。"

' 其他检查条件 ...

case else

CheckInstallResult = "安装程序返回错误代码" & lngReturnValue & ". "

end select

End Function

Dim objShell

Dim lngReturn

on error resume next

set ōbjShell = CreateObject( "Wscrīpt.Shell" )

' 调用主安装程序

lngReturn = objShell.Run ("setup.exe", 4, 1)

if Err.number <> 0 then

Install.innerText = "错误: " & Err.Descrīption & Err.number

else

Install.innerText = CheckInstallResult(lngReturn)

end if

set ōbjShell = Nothing

这篇关于光盘自动运行 html,用HTML Application制作光盘启动界面的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/343725

相关文章

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

通过React实现页面的无限滚动效果

《通过React实现页面的无限滚动效果》今天我们来聊聊无限滚动这个现代Web开发中不可或缺的技术,无论你是刷微博、逛知乎还是看脚本,无限滚动都已经渗透到我们日常的浏览体验中,那么,如何优雅地实现它呢?... 目录1. 早期的解决方案2. 交叉观察者:IntersectionObserver2.1 Inter

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的

前端导出Excel文件出现乱码或文件损坏问题的解决办法

《前端导出Excel文件出现乱码或文件损坏问题的解决办法》在现代网页应用程序中,前端有时需要与后端进行数据交互,包括下载文件,:本文主要介绍前端导出Excel文件出现乱码或文件损坏问题的解决办法,... 目录1. 检查后端返回的数据格式2. 前端正确处理二进制数据方案 1:直接下载(推荐)方案 2:手动构造

Vue实现路由守卫的示例代码

《Vue实现路由守卫的示例代码》Vue路由守卫是控制页面导航的钩子函数,主要用于鉴权、数据预加载等场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、概念二、类型三、实战一、概念路由守卫(Navigation Guards)本质上就是 在路

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni