无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 64259|回复: 144
打印 上一主题 下一主题

[正版发行]为制作精简系统的 INF 文件减肥工具

[复制链接]
跳转到指定楼层
1#
发表于 2006-9-15 23:47:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
____MS的Windows XP/2K后,INF文件基本是Unicode格式的文本文件,与同样内容的ANSI格式的文件比较,Unicode格式的文件往往是ANSI格式文件体积的两倍,且大多数Unicode格式的INF文件都可以用ANSI格式保存而不影响系统的使用,更要命的是这些INF文件中有大量的注释内容、空行和无用的空格,手工对其减肥是一项很繁重的工作,且容易出错,为此本人制作了一个INF 文件减肥工具,功能见图。

___这也算是正式版本了,已开放了绝大部分选项给用户选择。当然难免还存在BUG和不足,若发现问题不要骂人,多测试,多提建议才是正道。

___再说一次,有BUG就报告。

[ 本帖最后由 lxl1638 于 2006-9-18 06:44 PM 编辑 ]

Nlite4INF1.JPG (37.27 KB, 下载次数: 306)

Nlite4INF1.JPG

Nlite4INF.rar

161.21 KB, 下载次数: 1954, 下载积分: 无忧币 -2

Nlite4INF v1.0.1版

2#
发表于 2006-9-15 23:55:41 | 只看该作者
顶了,收藏!
回复

使用道具 举报

3#
发表于 2006-9-16 07:48:02 | 只看该作者
谢谢,终于不需用手工精简了。
回复

使用道具 举报

4#
发表于 2006-9-16 09:01:35 | 只看该作者
下了收藏,谢谢
回复

使用道具 举报

5#
发表于 2006-9-16 09:13:26 | 只看该作者
谢谢!下了研究一下。
回复

使用道具 举报

6#
发表于 2006-9-16 10:59:06 | 只看该作者
感谢老九,前几天想做一个批处理来实现的,看来现在不需要了,嘿嘿,有现成的!
回复

使用道具 举报

7#
 楼主| 发表于 2006-9-16 11:28:05 | 只看该作者
原帖由 老毛桃 于 2006-9-16 10:59 AM 发表
感谢老九,前几天想做一个批处理来实现的,看来现在不需要了,嘿嘿,有现成的!


____就算用WINHEX手工精简也是很繁重的任务,这个以后很多人要用到,希望你帮我详细测试,发现问题好改进。

这个工具只能删掉那些无用的 空行、注释内容和多余的空格,并将文件以ANSI格式保存,对于注册表中的垃圾键值无能为力。
回复

使用道具 举报

8#
发表于 2006-9-16 11:48:43 | 只看该作者
收下!谢谢lz
回复

使用道具 举报

9#
发表于 2006-9-16 12:00:36 | 只看该作者
"发个为制作精简系统的 INF 文件减肥工具"
是为精简系统的安装文件“i386“用的还是为精简已安装好的系统中的”windows文件夹"用的?
回复

使用道具 举报

10#
发表于 2006-9-16 12:13:19 | 只看该作者
好东东 收藏
回复

使用道具 举报

11#
 楼主| 发表于 2006-9-16 12:57:27 | 只看该作者
原帖由 c383 于 2006-9-16 12:00 PM 发表
"发个为制作精简系统的 INF 文件减肥工具"
是为精简系统的安装文件“i386“用的还是为精简已安装好的系统中的”windows文件夹"用的?


____出发点是安装源I386目录下的INF文件,对安装好的系统没有试过,原理上是可以的。
但一般安装好的在硬盘上的系统,往往含有外国(非英文的,如日本语等)字体的注册键值和条目,将这些INF文件转换成ANSI格式会丢失信息,如果这些条目不存在(如某些精简的系统,已砍掉了这些内容),一样可以用这种方法减肥。

___要判断INF文件能否以ANSI格式保存,可以用记事本打开查看,没有乱码的就可以。一般非英文的外国语言字体的INF注册表含有Unicode信息,用记事本另存为ANSI格式时会有提示。
回复

使用道具 举报

12#
发表于 2006-9-16 13:05:49 | 只看该作者
用这个精简一下xpe的inf目录
回复

使用道具 举报

13#
发表于 2006-9-16 13:52:50 | 只看该作者
1.似乎应该加上一个文件扩展名的选项,比如让用户选择精简 .inf、.sif 等扩展名的文件,原因很简单,老九你将几个乱七八糟的文件,比如可执行文件、动态链接库文件放到 inf 中就知道了

2.New_INF 最好放到 inf 的外面,即目标文件夹不要放到源文件夹的里面去,这样更容易让用户看出使用结果,更容易对比

3.似乎处理速度上不够理想,我知道超级文本替换工具的处理速度是相当快的,处理上百上千个文件的内容替换工作也没有老九这个工具处理几个上百 KB 文件所需要的时间长。难道是逐行输出显示文本的缘故?(超级文本替换工具不显示替换过程中的文件内容)
回复

使用道具 举报

14#
发表于 2006-9-16 14:04:56 | 只看该作者
明显的 Bug 到时没有发现,不过由于是逐行显示处理内容,在窗口切换的时候,容易发生这种现象(窗口失去相应,需要等完全处理完毕才会相应,让人误以为程序死了),不过我知道,使用记事本作批量替换文本的时候也会这样,可否找到一个比较好的处理方法?

另外,我使用控件激活专家,尝试改变 减肥选项,发现减肥效果没有变化,是不是控件的设置项还没有生效?

[ 本帖最后由 老毛桃 于 2006-9-16 02:09 PM 编辑 ]
回复

使用道具 举报

15#
发表于 2006-9-16 14:54:51 | 只看该作者
嗯,如果速度再快一点就好了
回复

使用道具 举报

16#
发表于 2006-9-16 15:29:36 | 只看该作者
原帖由 木石前盟 于 2006-9-16 14:54 发表
嗯,如果速度再快一点就好了

这个不是主要问题,估计如果老九关闭即时显示的话,速度一定会有不小的提高
回复

使用道具 举报

17#
 楼主| 发表于 2006-9-16 16:20:14 | 只看该作者
____正在改进,用户可以随时关闭或打开那些逐行显示处理内容,关闭逐行显示后速度明显加快了很多,晚上再上传给大家测试。

____目前是测试版,减肥选项的功能由程序的代码内定,用户无法自行改变。

____正准备增加一项功能 ---- 用String段的值替换变量,这样处理INF文件的过程较慢,但INF文件可再减小1/4至1/3,且系统启动过程快些,因为系统启动时再不用替换这些变量了。
回复

使用道具 举报

18#
发表于 2006-9-16 16:22:31 | 只看该作者
原帖由 lxl1638 于 2006-9-16 16:20 发表
____正准备增加一项功能 ---- 用String段的值替换变量,这样处理INF文件的过程较慢,但INF文件可再减小1/4至1/3,且系统启动过程快些,因为系统启动时再不用替换这些变量了。

这个会不会出问题呀?
回复

使用道具 举报

19#
发表于 2006-9-16 16:23:22 | 只看该作者
我试了,在批量处理时,有三个INF文件的最后一项是乱码(是几个乱码)
回复

使用道具 举报

20#
发表于 2006-9-16 16:45:44 | 只看该作者
我想知道 的是,如果這個系統是用來做封裝的,那麼Ghost或是Acronis會對這些文件進行壓縮
問題來了:

將未減肥的與用此方法減肥了的同樣級別壓縮後,差別有多大呢?
回复

使用道具 举报

21#
 楼主| 发表于 2006-9-16 17:21:05 | 只看该作者
原帖由 secowu 于 2006-9-16 04:45 PM 发表
我想知道 的是,如果這個系統是用來做封裝的,那麼Ghost或是Acronis會對這些文件進行壓縮
問題來了:

將未減肥的與用此方法減肥了的同樣級別壓縮後,差別有多大呢?


____可以说差别不会很明显,这个工具是针对Windows的安装源I386\INF目录在文件的,也可以精简WinPE的I386\INF目录中的文件。
回复

使用道具 举报

22#
 楼主| 发表于 2006-9-16 17:22:57 | 只看该作者
原帖由 sck 于 2006-9-16 04:23 PM 发表
我试了,在批量处理时,有三个INF文件的最后一项是乱码(是几个乱码)

请你检查一下原来的那3个文件中有没有非中文又非英文的字符,或者你打包传上来给我看看。
回复

使用道具 举报

23#
 楼主| 发表于 2006-9-16 17:49:05 | 只看该作者
原帖由 老毛桃 于 2006-9-16 04:22 PM 发表

这个会不会出问题呀?


不会,我试过,或者你也知道这么一回事。以前无忧的朋友(隐者)做的Win2K3 PE,曾有这个现象:
“我的电脑”即explorer.exe中"文件类型"这项有很多是用变量表示的(他后来的版本已修正了),如文件夹用%FILE_FOLDER%表示,原因是由于Nlite有个小BUG,用Nlite精简系统时,它处理过的HIVECLS.INF文件有两个[String]段,第一个是它加上去的,只有一个变量,第二个[String]段是安装源原来的,但PE启动(系统安装)时不理会第二个[String]段,所以造成很多变量没有被[String]段的值代换。这个问题当时想问隐者,但发现他几乎不上无忧了,搞了我几天时间,最后才从I386\INF目录中找到这些变量的文件(HIVECLS.INF)。我当初的处理方法是用[String]段的值替换上面的变量,删掉[String]段,成功了。后来分析才发现两点:
1、不能存在2个[String]段;
2、INF所有变量都可以用[String]段所指定的值代替。

下面是这个HIVECLS.INF文件的片段

[Version]
Signature = "$Windows NT$"
ClassGUID={00000000-0000-0000-0000-000000000000}
DriverVer=10/01/2002,5.2.3790.1830
[AddReg]
;.......
;.......
;.......
HKCR,"DirectDrawClipper\CLSID","",0x00000002,"{593817A0-7DB3-11CF-A2DE-00AA00B93356}"
HKCR,"Directory","",0x00000002,"%FILE_FOLDER%"
HKCR,"Directory","AlwaysShowExt",0x00000002,""
;......
;......
;......
[Strings]
;......
;......
;......
EXECUTABLE_FILES="可执行文件"
FILE_FOLDER="文件夹"
FILE_SYSTEM_ATTRIBUTES="文件系统属性"
FOLDER="资料夹"
;......
;......
;......
回复

使用道具 举报

24#
发表于 2006-9-16 18:01:55 | 只看该作者
奇怪,小批量处理时,原有乱码的变成没有乱码的了。
回复

使用道具 举报

25#
 楼主| 发表于 2006-9-16 18:24:44 | 只看该作者
原帖由 sck 于 2006-9-16 06:01 PM 发表
奇怪,小批量处理时,原有乱码的变成没有乱码的了。

越界?你第一次(出现乱码的那一次)共处理多少个文件,按理不会出现这种情况,工具内定的变量可一次处理6W多个文件的,应够用了。
回复

使用道具 举报

26#
发表于 2006-9-16 18:44:22 | 只看该作者
我是用它来处理红叶的光盘里的INF文件。共2.42M。如NETALI.INF就丰最后有乱码,如果只处理少数文件则没这现象。处理过的NETALI.INF文件内容:
[version]
Signature="$Windows NT$"
Class=Net
ClassGUID={4d36e972-e325-11ce-bfc1-08002be10318}
Provider=%MSFT%
LayoutFile=layout.inf
DriverVer=07/01/2001,5.1.2462.102
[Manufacturer]
%ALIR%=ALICOM
[ControlFlags]
ExcludeFromSelect=*
[ALICOM]
%ALI5261.DeviceDesc%=ALI5261.ndi,PCI\VEN_10B9&DEV_5261
[ALI5261.ndi.NT]
Characteristics=0x84
BusType=5
AddReg=ALI9PCI.reg,ALI5261.con.reg,ALI9.hpna.reg,5261.pci.reg
CopyFIles=ALI9PCI.CopyFiles
[ALI5261.ndi.NT.Services]
AddService=ALI5261,2,ALI5261.Service,common.EventLog
[ALI9PCI.CopyFiles]
ALI5261.SYS,,,2
[ALI5261.con.reg]
HKR,Ndi\params\ConnectionType,ParamDesc,0,"Connection Type"
HKR,Ndi\params\ConnectionType,default,0,"0"
HKR,Ndi\params\ConnectionType,type,0,"enum"
HKR,Ndi\params\ConnectionType\enum,0,0,"AutoSense"
HKR,Ndi\params\ConnectionType\enum,2,0,"100Mbps"
HKR,Ndi\params\ConnectionType\enum,4,0,"100Mbps Full_Duplex"
HKR,Ndi\params\ConnectionType\enum,1,0,"10Mbps"
HKR,Ndi\params\ConnectionType\enum,3,0,"10Mbps Full_Duplex"
[5261.pci.reg]
HKR,,AdapterType,0,"5"
HKR,,BusType,0,"5"
HKR,,StoreAndForward,0,"1"
HKR,,TransmitThreshold,0,"200"
HKR,,ACPIEnable,0,"4"
[ALI9PCI.reg]
HKR,Ndi,Service,0,"ALI5261"
HKR,Ndi\Interfaces,UpperRange,0,"ndis5"
HKR,Ndi\Interfaces,LowerRange,0,"ethernet"
HKR,,AdapterPCIID,0,"526110B9"
HKR,Ndi,DeviceID,0,"PCI\VEN_10B9&DEV_5261"
[ALI5261.Service]
DisplayName=%ALI9PCI.Service.DispName%
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%12%\ALI5261.SYS
LoadOrderGroup=NDIS
[common.EventLog]
AddReg=common.AddEventLog.reg
[common.AddEventLog.reg]
HKR,,EventMessageFile,0x00020000,"%%SystemRoot%%\System32\netevent.dll"
HKR,,TypesSupported,0x00010001,7
[DestinationDirs]
DefaultDestDir=12
ALI9PCI.CopyFiles=12
[Strings]
MSFT="Microsoft"
ALIR="Acer Laboratories Inc."
ALI5261.DeviceDesc="ALi PCI Fast Ethernet Controller"
ALI9PCI.Service.DispName="ALi Based Ethernet NT Driver"
渀?  ?

[ 本帖最后由 sck 于 2006-9-16 07:03 PM 编辑 ]
回复

使用道具 举报

27#
 楼主| 发表于 2006-9-16 19:42:52 | 只看该作者
原帖由 sck 于 2006-9-16 06:44 PM 发表
我是用它来处理红叶的光盘里的INF文件。共2.42M。如NETALI.INF就丰最后有乱码,如果只处理少数文件则没这现象。处理过的NETALI.INF文件内容:

Signature="$Windows NT$"
Class=Net
ClassGUID={4d3 ...


你把原本的这个文件打包(RAR)传上来,不要直接帖上来。
回复

使用道具 举报

28#
发表于 2006-9-16 20:05:17 | 只看该作者
我试了,如果单独处理这个文件,就不会有乱码,小批量也不会有,只有全部处理INF文件夹里的INF文件就有了。
回复

使用道具 举报

29#
发表于 2006-9-16 20:53:48 | 只看该作者
谢谢楼主提供。
回复

使用道具 举报

30#
发表于 2006-9-16 21:06:21 | 只看该作者
今天的运气真是太好了,本来想自己写的,结果刚上网就看见了这个
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-25 13:58

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表