简化安装窗口操作系统的应用程序的方法 【技术领域】
本发明涉及一种在计算机安装应用程序的方法,特别是涉及一种窗口操作系统之下简化应用程序的安装流程的方法,是通过修改窗口预安装环境映像文件(Windows Preinstallation Environment Image,WIM)的窗口映像文件,进而简化窗口操作系统的应用程序的安装流程。
背景技术
Windows PE是窗口预安装环境(Windows Preinstallation Environment)的简称,当初发展Windows PE的目的,是为了减少部署Windows时对DOS环境的依赖,并且也希望能提供轻量级的Windows执行环境给计算机系统的厂商,作为厂商的部署环境。在Windows的普及正要起飞之时,DOS环境对Windows的部署或安装仍扮演重要角色,不只Windows安装光盘会先开机到DOS环境,厂商的许多部署工具也都还是DOS版本。但是当Windows越加普及,驱动程序及应用程序都已转移到Windows环境之后,安装或部署Windows也没有必要还停留在DOS环境。
因此,当时在Windows安装小组的微软工程师,便提出了轻量级Win32执行环境的想法,希望能让光盘开机之后就将此环境加载计算机,而摆脱安装、部署Windows却还得依赖DOS的情况。这项想法也因而发展成Windows PE,从Windows PE的全名也不难发现,这项技术应该要能够产生出“安装Windows所需要的环境”,也因为已经有许多Windows环境的应用程序及驱动程序,而且Windows环境也成为开发人员熟悉的平台,因此Windows PE责无旁贷的当然要能产生Windows环境。
再者,Windows PE应该是个针对特定工作、需要客制化的作业环境。虽然Windows PE现今的应用已经超过当初所预期,但是Windows PE的应用仍然很单纯的集中在某些工作(如安装或部署),因此Windows PE不需要是个全能的环境,不需要的组件即可排除在外;也因为Windows PE的应用仅是特定工作,因此有必要能让厂商自行对Windows PE的功能客制化。
由于现有的窗口操作系统安装过程需使用者配合系统提示,执行对应的操作,因此安装过程并非全自动安装且需要额外的人力配合。
【发明内容】
鉴于以上的问题,本发明要解决的技术问题是提供一种简化安装窗口操作系统的应用程序的方法,进而简化窗口操作系统的安装流程。
为了解决上述技术问题,,本发明提供一种简化安装窗口操作系统的应用程序的方法,用以在窗口操作系统的环境下安装包含多笔安装套件的应用程序,包括:建立响应文件(Answer File),其中包括窗口操作系统的安装设定与配置文件;载入回应文件;读取原始窗口预安装环境映像文件(WindowsPreinstallation Environment Image,WIM),将其复制并储存至储存单元中,且将其定义为目标窗口预安装环境映像文件;将响应文件增加并修改至目标窗口预安装环境映像文件的窗口映像文件中;启动修改后的目标窗口预安装环境映像文件并进行窗口操作系统的应用程序的安装程序。
其中,响应文件可依据安装套件的安装顺序建立安装设定,及依据窗口操作系统的环境参数建立配置文件,且响应文件格式可为Unattend.txt文件或Unattend.xml文件或Autounattend.xml文件之中的任一种。
本发明所揭露的方法还包括在Linux环境下对上述窗口映像文件进行增加与修改。
根据本发明所提供的简化安装窗口操作系统的应用程序的方法,应用于窗口操作系统的安装,可简化应用程序的流程,并于安装过程也无需使用者参与,进而可节省时间与人力成本。另外本方法也适用于各种不同版本的窗口操作系统。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
【附图说明】
图1为依据本发明一实施例的简化安装窗口操作系统的应用程序的方法的流程图;
图2为依据本发明一实施例的简化安装窗口操作系统的窗口映像文件的结构图;
图3为依据本发明一实施例的修改目标窗口预安装环境的窗口映像文件的流程图。
其中,附图标记:
200 窗口映像文件
210 标题
220 第一映像
221 第一文件资源
223 第一数据资源
225 第一查找表
227 第一可扩展标示语言数据
229 第一完整性表
230 第二映像
231 第二文件资源
233 第二数据资源
235 第二查找表
237 第二可扩展标示语言数据
239 第二完整性表
【具体实施方式】
请参考图1所示,其为依据本发明的简化安装窗口操作系统的应用程序的方法的流程图。本发明的流程包括以下步骤:
S110,建立响应文件,其中包括窗口操作系统的安装设定与配置文件,并依据安装套件的安装顺序建立安装设定,及依据窗口操作系统的环境参数建立配置文件;
S120,载入回应文件;
S130,读取原始窗口预安装环境映像文件,将其复制并储存至储存单元中,且将其定义为目标窗口预安装环境映像文件;
S140,将响应文件增加并修改至目标窗口预安装环境映像文件的窗口映像文件中;以及
S150,启动修改后的目标窗口预安装环境映像文件并进行窗口操作系统的安装程序。
其中,上述所述的回应文件可为Unattend.txt文件、Unattend.xml文件或Autounattend.xml文件之中的任一种,其内容可依据实际需求,可选择性增加响应内容。
此外,步骤S140中所述的窗口映像文件的增加与修改可在Linux环境下执行。
请参考图2所示,其为依据本发明的化安装窗口操作系统的口映像文件的结构图。窗口映像文件200包括:标题(header)210、第一映像220与第二映像230。其中,第一映像220还可包括:第一文件资源(file resource)221、第一数据资源(metadata resource)223、第一查找表(lookup table)225、第一可扩展标示语言数据(eXtensible Markup Language data,XML data)227与第一完整性表(integrity table)229。第二映像230还可包括:第二文件资源231、第二数据资源233、第二查找表235、第二可扩展标示语言数据237与第二完整性表239。
于此,虽是描述有两个映像,第一映像220与第二映像230,但实际上可为两个或两个以上的映像。
其中,标题210定义窗口映像文件的内容,包括关键资源(如数据资源、查找表与可扩展标示语言数据)的内存位置与窗口映像文件的属性(如版本、大小与压缩型态)。第一文件资源221与第二文件资源231可为一系列的套件(package),包括获取的数据(如来源文件)。第一数据资源223与第二数据资源233可为获取的文件内容信息,包括目录结构与文件属性,其中第一映像220与第二映像230都有一个数据资源。第一查找表225与第二查找表235包括窗口映像文件的文件资源的内存位置。第一可扩展标示语言数据227与第二可扩展标示语言数据237包括窗口映像文件的额外数据。第一完整性表229与第二完整性表239包括安全杂凑(security hash)信息,用以在申请操作时验证第一映像220与第二映像230的完整性。
请参考图3所示,其为依据本发明的修改目标窗口预安装环境的窗口映像文件的流程图。在步骤S140中所述的窗口映像文件的增加与修改可在Linux环境下执行,可包括以下步骤:
S1410,开启窗口映像文件;
S1412,分析窗口映像文件标题(WIMheader),依据分析结果的位偏移表(OffsetTable)、开机数据(BootMetaData)与可扩展标示语言数据(XMLData)的偏移量与数据大小;
S1414,将响应文件加入至窗口映像文件末端,并计算回应文件的杂凑值;
S1416,将开机数据资料解压缩以得安全性数据(Security Data)与目录项(Directory Entry),并把响应文件的信息加入目录项,包括属性、文件名称、权限账号、时间与计算得的杂凑值;
S1418,将修改后的开机数据资料加入窗口映像文件,并修正窗口映像文件标题中开机数据资料的偏移量与数据大小;
S1420,重新计算开机数据的杂凑值;
S1422,更新查找表中开机数据数据的偏移量、数据大小与杂凑值;
S1424,于查找表中新增一笔关于响应文件的偏移量、数据大小与杂凑值的记录;
S1426,将修改后的查找表加入窗口映像文件,并修正窗口映像文件标题中查找表的偏移量与数据大小;
S1428,更新可扩展标示语言数据中窗口映像文件的大小、数量与时间;以及
S1430,将修改后的可扩展标示语言数据加入窗口映像文件,并修正窗口映像文件标题中可扩展标示语言数据的偏移量与数据大小。
其中,上述杂凑值可以利用SHA‑1(Secure Hash Algorithm,SHA)算法计算而得。
在步骤S1416中所述的开机数据数据解压缩方法可采用LZX(MicrosoftLZX Algorithm)算法。
以下分别列出窗口映像文件标题、安全性数据、目录项与查找表的数据结构。
其中,窗口映像文件标题的数据结构如下:
typedef struct_WIMHEADER_V1_PACKED
{
CHAR ImageTag[8];//″MSWIM\0\0″
DWORD cbSize;
DWORD dwVersion;
DWORD dwFlags;
DWORD dwCompressionSize;
GUID gWIMGuid;
USHORT usPartNumber;
USHORT usTotalParts;
DWORD dwImageCount;
RESHDR_DISK_SHORT rhOffsetTable;
RESHDR_DISK_SHORT rhXmlData;
RESHDR_DISK_SHORT rhBootMetadata;
DWORD dwBoot Index;
RESHDR_DISK_SHORT rhIntegrity;
BYTE bUnused[60];
}WIMHEADER_V1_PACKED,*LPWIMHEADER_V1_PACKED;
其中,上述数据结构中的RESHDR_DISK_SHORT的数据结构如下:
typedef struct_RESHDR_DISK_SHORT
{
RESHDR_BASE_DISK Base;//Must be first.
LARGE_INTEGER liOriginalSize;
}RESHDR_DISK_SHORT,*LPRESHDR_DISK_SHORT;
其中,上述数据结构中的RESHDR_BASE_SHORT的数据结构如下:
typedef struct_RESHDR_BASE_DISK
{
ULONGLONG ullSize;
LARGE_INTEGER liOffset;
}RESHDR_BASE_DISK,*LPRESHDR_BASE_DISK;
另外,安全性数据的数据结构如下:
typedef struct_SECURITYBLOCK_DISK
{
DWORD dwTotalLength;
DWORD dwNumEntries;
ULARGE_INTEGER liEntryLength[0];
}SECURITYBLOCK_DISK,*LPSECURITYBLOCK_DISK;
此外,目录项的数据结构如下:
typedef struct_DIRENTRY
{
LARGE_INTEGER liLength;
DWORD dwAttributes;
DWORD dwSecurityId;
LARGE_INTEGER liSubdirOffset;
LARGE_INTEGER liUnused1;
LARGE_INTEGER liUnused2;
LARGE_INTEGER liCreationTime;
LARGE_INTEGER liLastAccessTime;
LARGE_INTEGER liLastWriteTime;
BYTE bHash[HASH_SIZE];
DWORD dwReparseTag;
LARGE_INTEGER liHardLink;
USHORT wStreams;
USHORT wShortNameLength;
USHORT wFileNameLength;
WCHAR FileName[0];
}DIRENTRY,*LPDIRENTRY;
最后,查找表的数据结构如下:
typedef struct_RESHDR_DISK
{
RESHDR_DISK_SHORT DiskShort;
USHORT usPartNumber;
DWORD dwRefCount;
BYTE bHash[HASH_SIZE];
}RESHDR_DISK,*LPRESHDR_DISK;
本发明涉及一种简化安装窗口操作系统的应用程序的方法,可以通过在Linux环境下修改窗口预安装环境的窗口映像文件的手段,进而简化窗口操作系统的安装流程。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明权利要求的保护范围。