荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: Jobs (温少), 信区: WinNT
标 题: Windows 95应用程序向Windows NT 5.0的升级
发信站: BBS 荔园晨风站 (Thu Mar 18 15:23:36 1999), 转信
Windows 95应用程序向Windows NT 5.0的升级
概述
从用户的角度出发,我们总希望操作系统升级后,原有系统上的所
有应用程序都可不用修改就可以在新的操作系统上运行。但从Window
s 95(包括Windows 98)向Windows NT 5.0的升级并不能保证所有的
应用程序都能正常运行,以下是几个经常出现的问题:
·应用程序在Windows 95和Windows NT 5.0注册表中注册了不同
的注册项;
·应用程序向Windows 95和Windows NT 5.0相同注册项中写入了
不同的内容;
·应用程序在两种操作系统中安装了不同的运行时文件(如.dll
和.exe等文件);
·应用程序在两种操作系统中安装了同一个文件的不同版本。
有时,我们可以在新的操作系统上把出问题的应用程序重新安装
一次,但这种方法很麻烦。首先在大规模的企业环境中,软件的安装和
配置是自动化的,手工重新安装一遍程序实际上是不可为的,因为这将
大大增加软件配置费用。其次在单机环境下,用户也可能找不到安装
原程序。我们需要找到一种能够在安装Windows NT 5.0时对Windows
95应用程序自动进行升级的办法,微软提供的升级扩展接口(Migratio
n Extension Interface) 能够帮助我们解决这个问题。
升级扩展接口是Windows的Setup API调用的一个扩展,它能够保
证从Windows 95升级到Windows NT 5.0后,你的应用程序能够正常运
行。在实际使用升级扩展接口时,软件开发者需要为升级的Windows 9
5应用程序编写一个升级动态链接库(MIGRATE.DLL)。在Win dows NT
5.0安装过程中,安装程序将调用MIGRATE.DLL以便对应用程序作出适
当的修改。
升级过程流程
升级扩展接口的具体实现由以下几个步骤组成:
1. 用户把应用程序安装到基于Windows 95的系统上。应用程序
开发者把MIGRATE.D LL(以及公司的数字证书和其它相关的文件)放到
应用程序的安装程序目录下。如果用户是通过网络安装,就放到对应
的Web站点上;如果用户是本地安装,则放到用户的硬盘上。如果用户
从本地安装,开发者必须在Windows 95的注册表中加入以下内容:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVer
sion\Setup\Migra tion.DLL
键值名:<ProductID 字符串>
键值:<指向MIGRATE.DLL的路径>
2. 当用户运行Windows NT 5.0的安装程序(winnt32.exe)时,安
装程序将浏览Windo ws 95注册表中的内容并要求用户提供其它升级D
LL程序的位置。
3. 安装程序找到MIGRATE.DLL并激活它,然后把Windows NT 5.0
的MIGRATE.INF文件传给MIGRATE.DLL。
4. MIGRATE.DLL对MIGRATE.INF文件进行修改,加入相关信息,然
后把MIGRATE.INF文件传回给Windows NT 5.0的安装程序。
5. Windows NT 5.0安装程序继续安装过程。当进入Windows NT
部分的安装时(文件拷贝完毕后),安装程序再次找到MIGRATE.DLL并把
MIGRATE.INF文件传给它。
6. MIGRATE.DLL从MIGRATE.INF中读出在第四步中写入的信息,对
应用程序作出适当的修改,使它能够在Windows NT 5.0下正常地运行
。
什么是MIGRATE.DLL
MIGRATE.DLL是开发者创建的一个基于Win32标准的DLL动态链接
库程序。在从Windo ws 95向Windows NT 5.0升级的过程中,Windows
NT 5.0的安装程序将多次调用MIGRATE. DLL以实现对应用程序的定制
升级过程。NT 5.0的安装程序依靠MIGRATE.DLL来辨别那些未知的应
用程序组件,或者对它们的配置进行修改以升级到Windows NT 5.0,或
者把它们删除。
MIGRATE.DLL给Windows NT 5.0的安装程序提供了多个调用函数,
其中有七个基本函数是安装程序必须调用的,缺了其中任意一个,升级
过程就无法完成。当然我们还可以在这七个基本函数的基础上增加其
它的函数调用。这七个基本函数是:
· QueryVersion
· Initialize9x
· MigrateUser9x
· MigrateSystem9x
· InitializeNT
· MigrateUserNT
· MigrateSystemNT
对MIGRATE.DLL的调用分两个阶段,下面结合这两个阶段的调用过
程来介绍七个基本函数的功能。
第一个阶段是Windows NT 5.0安装的初始阶段,也就是Windows 9
5仍然在运行的时候。以下以被调用的顺序列出并解释MIGRATE.DLL中
的函数。表1
当新安装的Windows NT5.0开始运行时,就进入了对MIGRATE.DLL
的第二个调用阶段,调用顺序如下所示:
表2
注意,在Windows 95仍然在运行的安装阶段,NT安装程序将建立一
个名为MIGRATE.IN F的文件,并使用这个文件来搜集所有MIGRATE.DLL
提供的升级信息。当安装过程进入Win dows NT 5.0运行阶段时,MIGR
ATE.DLL再从MIGRATE.INF中获取相应的信息。
MIGRATE.DLL开发注意事项
因为MIGRATE.DLL是一个标准的Win32 DLL,因此开发过程是比较
简单的,我们可以使用Visual C++5.0等标准开发工具进行编程,具体
过程请查阅对应工具的帮助文件。以下是开发过程中需要注意的一些
问题。
1. MIGRATE.DLL的位置
MIGRATE.DLL可以放在网络共享目录中,这时我们必须在安装时手
工指定共享目录;如果进行自动安装,需要在安装响应文件(Setup ans
wer file)中指定共享目录。我们也可以把MIGRATE.DLL放到软盘或者
光盘上。在安装过程中,安装程序将在用户提供的路径中查找MIGRATE
.DLL和其它相关文件与子目录,然后把这些文件拷贝到本地。
2. 升级函数的处理顺序
如果需要升级多个应用程序就要提供多个MIGRATE.DLL,但Window
s NT 5.0安装过程对这些MIGRATE.DLL的处理是随机的。因此多个MIG
RATE.DLL之间不能有相互依赖的关系。
3. 使用安装响应文件
在MIGRATE.DLL的调用过程中,安装程序在调用其中的MigrateUse
r9x、MigrateSyst em9x、MigrateUserNT和MigrateSystemNT函数时,
将把安装响应文件(UNATTEND.TXT)的地址传递给它们。
在Windows 95部分的升级过程中,MIGRATE.DLL可以利用Win32 配
置API,例如通过Wr itePrivateProfileString对响应文件进行修改。
你可以对响应文件的已有项进行修改,也可以增加新的专用项。当进
入Windows NT 5.0部分的安装过程时,响应文件变成只读类型,Migrat
es UerNT和MigrateSystemNT只能读取其中的有用信息。
4. 操作用户的注册表设置
在Windows 95环境下,安装程序是在登录用户的环境下运行的。
但在Windows NT部分的安装时,它是运行在本地系统帐户(Local Syst
em Account)的环境中。因此你编制的MIGRATE.DLL不能直接查询或者
修改注册表中的HKEY_CURRENT_USER,只能通过MigrateUs er9x和Migr
ate UserNT函数提供的UserRegKey句柄来进行查询。
5. 确定应用程序注册表的差别
同一个应用程序在Windows 95和Windows NT 5.0注册表中注册的
内容可能是不相同的。我们可以使用Windows NT Workstation 4.0资
源工具包中提供的SYSDIFF.EXE这个工具来获得不同系统下注册表的
不同。关于如何使用这个工具,大家可以查阅微软的TechN et或者MSD
N中的有关内容。
(*红茶馆*)
--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.2.88]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店