荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: 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软件 网络书店