无忧启动论坛

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

[V1.30.2011.501版]WimTool -- Wim文件的图形视窗处理工具[无忧首发]

    [复制链接]
1261#
发表于 2008-1-19 12:54:09 | 只看该作者
老九:

   经过昨天晚上与今天早上到现在的测试

PE用老毛桃的与Chenall和各个版本测试

WIMTOOL F版本

结果:

1.几次在备份时都有程序不明退出的情况发生

2.时间显示能否用X小时X分X秒啊,省得我还得口算下,呵呵
回复

使用道具 举报

1262#
 楼主| 发表于 2008-1-19 13:20:20 | 只看该作者
原帖由 secowu 于 2008-1-19 12:54 PM 发表
老九:

   经过昨天晚上与今天早上到现在的测试

PE用老毛桃的与Chenall和各个版本测试

WIMTOOL F版本

结果:

1.几次在备份时都有程序不明退出的情况发生

2.时间显示能否用X小时X分X秒啊,省得 ...


以后如果有更新再一同更新,现在暂时将就用着。
回复

使用道具 举报

1263#
发表于 2008-1-19 14:00:12 | 只看该作者
呵呵,wimtool备份着就突然闪掉了,是什么原因啊?

有没有log?
回复

使用道具 举报

1264#
发表于 2008-1-28 15:44:30 | 只看该作者
新版用起来貌似挺不错
回复

使用道具 举报

1265#
发表于 2008-1-28 18:34:36 | 只看该作者
一定要下载收藏!呵呵~
回复

使用道具 举报

1266#
 楼主| 发表于 2008-2-11 21:59:59 | 只看该作者
翻新一下,支持WIM个性化图标,本人的方案与阿呆的有所不同,采用最兼容的方法,但有很多地方需要完善的,大家先测试一些时间,本要有空再完善一下。明天就要上课,很可能要半年后才能更新了。
回复

使用道具 举报

1267#
发表于 2008-2-11 23:08:51 | 只看该作者
十分感谢老九更新!!!
回复

使用道具 举报

1268#
发表于 2008-2-12 00:32:34 | 只看该作者
本人的方案是将WIM个性化图标以BASE64编码保存在WIM的XMLINFO内(BASE64编码只比实际图标数据大 1/3 + 1~3个字节)
这样兼容性最好,即使修改了WIM,图标依然存在。


兼容性果然没得说
在XP下也能顺利显示出来
连发送到桌面的快捷方式也有图标

nn2nn大大的方法在我的XP下没显示出来
wim文件倒是有修改了
不过我看到别人抓的图
也挺好的

看来图标出来后
剩下的就是这个PE模块化怎么YY的问题了

这个不止在PE下能用在XP下一样很防毒
其实我已经打算把XP下所有的程序给WIM了
回复

使用道具 举报

1269#
 楼主| 发表于 2008-2-12 01:03:53 | 只看该作者
本人的思路是:
1、尽可能采用最兼容的方案;
2、尽可能想办法你在系统中看到什么图标就用什么样的图标,比如可以设置成文件夹、RAR、TXT文件的图标,这些文件原本是没有图标资源的。
回复

使用道具 举报

1270#
发表于 2008-2-12 01:20:46 | 只看该作者
新版WinTool的WIM文件个性化图标功能是不错,但我经试用后发现显示出来的图标不够清晰,希望能加以改进.
回复

使用道具 举报

1271#
发表于 2008-2-12 10:12:43 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1272#
发表于 2008-2-12 10:13:56 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1273#
 楼主| 发表于 2008-2-12 11:32:36 | 只看该作者
原帖由 nn2nn 于 2008-2-12 10:13 AM 发表
LZ明文说了,现在还不支持真彩图标。


是的,Delphi默认没有支持真彩色图标,可能没有时间搞了,你专门做个WIM图标写入工具吧,就写在WIM第1卷中,看下面的XMLINFO:
<WIM>
  <TOTALBYTES>1290460</TOTALBYTES>
  <IMAGE INDEX="1">
    <DIRCOUNT>9</DIRCOUNT>
    <FILECOUNT>39</FILECOUNT>
    <TOTALBYTES>4373692</TOTALBYTES>
    <CREATIONTIME>
      <HIGHPART>0x01C033A6</HIGHPART>
      <LOWPART>0x2177EB4E</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
      <HIGHPART>0x01C867B3</HIGHPART>
      <LOWPART>0x4596C5D8</LOWPART>
    </LASTMODIFICATIONTIME>
    <NAME>FreeWB</NAME>
    <DESCRIPTION>极点中文输入法</DESCRIPTION>
    <WIMTOOL VER="1.0.8.0106F X86">
      <MOUNTRUNCMD>setup.exe /s</MOUNTRUNCMD>
      <UNMOUNTRUNCMD>setup.exe /u /p /s</UNMOUNTRUNCMD>
      <MOUNTPATH>D:\WIM工具\FreeWB</MOUNTPATH>
    </WIMTOOL>
     <ICON>AAABAAEAICAEAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AmZmZmZmZmZmZmZmZmZmZl5mZmZmZmZmZmZmZmZmZmZmZ////+f////////////iZmf/4n4n/mP//////if/4mZn/+J+J/5j//////3n/+JmZ//ifif+Y//////+Z//iZmf/4n4n/mP//////mf/4mZn/+J+J/5iIiIiIj5j/+JmZ//ifif+YmZmZmZ+Y//iZmf/4n4n/mP/4mI//mP/4mZn/+J+J/5j//5j//5j/+JmZ//ifif+Y+I+Z//if//iZmf/4n4n/mJmYmf/4n//4mZn/+J+J/5iYiXmJ+J//+JmZ//+fifiYn4mJ+Zif//iZmf//mIn4n5+Jif+Zn//4mZn//5iJ+J+fiYn/iZ//+JmZ//+YifiYmZn5iZl///iZmf//l4n5mJh5+YeZn//4mZn//4mJ+YififmP+J//+JmZ//+JeYn/j/j5iImf//iZmf//+ZmZ////+YeZj//4mZn///+Zj///+Jn/////+JmZ////iY///4mP//////iZmf//+ZmZ//+Z///////4mZn//5mJiY//mY//////+JmZ//ififefiImZiIiP//iZmf/4n4n4mJmZmZmZmP/4mZn/+I+J/4//////////+JmZ////+f////////////iZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==</ICON>
  </IMAGE>
  <WIMTOOL VER="1.0.7.10.18 X86" MOUNTID="1"/>
  <GUID>5ce578fb-fc50-418c-9e46-8e61452a31db</GUID>
  <COMPRESSION>LZX</COMPRESSION>
  <PARTNUMBER>1</PARTNUMBER>
  <TOTALPARTS>1</TOTALPARTS>
  <ATTRIBUTES>0x8</ATTRIBUTES>
</WIM>

蓝色部分为图标数据的BASE64编码

//BASE64编码函数,PDat指向数据地址,DatLen为数据长度.
function BinToBase64(const PDat: PBYTE; const DatLen: DWORD): string;
const BaseTable: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
var s, s1: string;
  i, p, len, n, Addnum: DWORD;
  PBin: PBYTE;
begin
  result := '';
  S := '';
  addnum := 0;
  PBin := PDat;
  for i := 1 to DatLen do
  begin
    S := S + IntToHex(PBin^, 2);
    PBin := PBYTE(DWORD(PDat) + i);
  end;
  case (length(s) mod 3) of
    0: addnum := 0;
    1: begin
        s := s + '00';
        addnum := 2;
      end;
    2: begin
        s := s + '0';
        addnum := 1;
      end;
  end;
  len := length(s) div 3;
  for i := 1 to len do
  begin
    s1 := midstr(S, i * 3 - 2, 3);
    p := strtoint('$' + s1);
    n := p div 64;
    result := result + basetable[n + 1];
    n := p mod 64;
    result := result + basetable[n + 1];
  end;
  if addnum = 1 then result := result + '==';
  if addnum = 2 then result[length(result)] := '=';
end;



[ 本帖最后由 lxl1638 于 2008-2-12 11:50 AM 编辑 ]
回复

使用道具 举报

1274#
发表于 2008-2-12 12:06:56 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1275#
发表于 2008-2-12 12:41:25 | 只看该作者
如果可以能不依赖wimgapi.dll来显示图标的话就更好了.....
回复

使用道具 举报

1276#
发表于 2008-2-12 12:42:21 | 只看该作者
使用新版的Wimtool后资源管理器出现不稳定现像,双击附带的wim蓝屏,实验N次均是如此,用无图标扩展的wimtool则一切正常

Wimnt 也是一样,不过会好些(双击其开放式公用模块就会蓝屏)

经过多次测试,N次蓝屏后,终于明白,都是图标惹的祸,郁闷~~~~~
回复

使用道具 举报

1277#
发表于 2008-2-12 13:22:09 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1278#
 楼主| 发表于 2008-2-12 13:30:47 | 只看该作者
原帖由 chenall 于 2008-2-12 12:41 PM 发表

如果可以能不依赖wimgapi.dll来显示图标的话就更好了.....

可以做到,记得以前本人在论坛发过WIM文件结构的资料,看看微软是如何定义WIM文件(头)的,找到XMLINFO的位置,直接将其读取出来处理。

但本人硬盘找不到这些资料,论坛的也找不到。

从兼容性看还是通过WIMGAPI读取XML更好,离开WIMGAPI,WIM文件也无法使用。所以这样的功能暂时不急。
回复

使用道具 举报

1279#
 楼主| 发表于 2008-2-12 13:33:15 | 只看该作者
原帖由 玄天 于 2008-2-12 12:42 PM 发表
使用新版的Wimtool后资源管理器出现不稳定现像,双击附带的wim蓝屏,实验N次均是如此,用无图标扩展的wimtool则一切正常

Wimnt 也是一样,不过会好些(双击其开放式公用模块就会蓝屏)

经过多次测试,N次蓝屏后, ...


你是什么系统?WimShExt.DLL只在Win2K3、XP-PE中作了测试,本人在好几台机子上测试都正常。
另,你双击是通过WimTool还是WIMNT挂载WIM的?
回复

使用道具 举报

1280#
 楼主| 发表于 2008-2-12 13:36:36 | 只看该作者
原帖由 nn2nn 于 2008-2-12 12:06 PM 发表
Delphi默认没有支持真彩色图标,只要修改下Graphics的一个函数。
procedure   WriteIcon(Stream:   TStream;   Icon:   HICON;   WriteLength:   Boolean=false);
中的
InternalGetDIBSizes(IconInfo.hbmMas ...


哈,有现成的了,你将SETICO源码打包传上来。
回复

使用道具 举报

1281#
发表于 2008-2-12 13:49:27 | 只看该作者
原帖由 lxl1638 于 2008-2-12 01:30 PM 发表

可以做到,记得以前本人在论坛发过WIM文件结构的资料,看看微软是如何定义WIM文件(头)的,找到XMLINFO的位置,直接将其读取出来处理。

但本人硬盘找不到这些资料,论坛的也找不到。

从兼容性看还是通过 ...


在论坛这里.
WIM文件结构资料
回复

使用道具 举报

1282#
发表于 2008-2-12 13:56:55 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1283#
发表于 2008-2-12 14:06:08 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1284#
发表于 2008-2-12 14:08:54 | 只看该作者
系统为 Windows XP 媒体中心版 SP3

可能开始没有说清楚, Wimtool 如果双击带图标扩展的wim文件就会蓝屏(旧版也如此)
                    WinNT 则双击PE的公用设置模块会蓝屏

再者,此两工具并未要求只能在PE中使用吧?
回复

使用道具 举报

1285#
 楼主| 发表于 2008-2-12 14:20:03 | 只看该作者
SP3?或者这里有问题?
你将出现蓝屏的WIM解开到NTFS分区,再打包成WIM试试,或者你原来的WIM来源于FAT分区。

另外,你将WimTool.DLL和WimShExt.DLL放在什么位置?(如果不作任何设置,不能放在光区上,要放在NTFS分区中)。
系统的临时目录又在什么位置?不能用RAMDISK作临时文作夹。

[ 本帖最后由 lxl1638 于 2008-2-12 02:22 PM 编辑 ]
回复

使用道具 举报

1286#
 楼主| 发表于 2008-2-12 14:25:31 | 只看该作者
下载了2000多份,其他人也将测试结果发上来,是否出现蓝屏或者可以正常使用或者有何建议,都说明一下。
回复

使用道具 举报

1287#
发表于 2008-2-12 14:30:09 | 只看该作者
回ls,WIM文件是随Wimtool附带的文件,另外我没有fat分区,只有ntfs格式
正常的系统,没啥内存盘滴
将WimTool.DLL和WimShExt.DLL都放在系统的system32目录,mountpath在I盘(NTFS分区/160G)
当然,一蓝屏就啥也不知了,因为自己不会开发程序,所以忘了记所谓的蓝屏代码(对我没用哈)
如果要解的话,大概可能也就只能用imagex试试咯
回复

使用道具 举报

1288#
发表于 2008-2-12 14:36:03 | 只看该作者
再有 Wimtool V1.08.01.06 我已整合到PE内核,没有任何问题,挺爽
新的版本没有在PE中测试过
回复

使用道具 举报

1289#
发表于 2008-2-12 14:40:30 | 只看该作者
用新版,没有出现蓝屏(XPSP2)
回复

使用道具 举报

1290#
发表于 2008-2-12 14:43:23 | 只看该作者
刚才有测试了下,用 Wimtool 关联, 双击 LookWimIcon.WIM 和 WinCMD.WIM 都会蓝屏(默认设置,新/旧版本都会蓝屏)

用 WimNT 关联,则很正常
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-3 20:55

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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