无忧启动论坛

标题: 如何将软件打包成WIM单文件,如何加载使用? [打印本页]

作者: ko20010214    时间: 2024-5-7 00:18
标题: 如何将软件打包成WIM单文件,如何加载使用?
本帖最后由 ko20010214 于 2024-5-7 14:05 编辑

RT。
记得以前有些大神的软件包都是打包成WIM单文件。。。不知道是怎么实现的,又是如何加载使用的。

搜到一点点资料,看起来也比较简单。

我这是求助贴,希望大家不咅赐教。回复得尽量详细点。


作者: ko20010214    时间: 2024-5-7 00:21
与单文件自解压程序 ( 以下简称自解压程序 ) 相似,单文件自挂载程序(以下简称自挂载程序)也是通过可执行文件模块+文件数据模块实现不需要其他软件的支持,自己对自己执行挂载操作,自挂载程序相较于自解压程序的优点是:自挂载操作理论上不需要进行磁盘上的复制,可以直接通过映射访问单文件程序内部的数据。这样就可以减少程序的时间复杂度/执行步骤,从而加快单文件程序启动速度。

实现
1、本文的实现是基于wim和cmd的,主要利用了如下特性;

    a.wim(windows NT6标准安装包格式)文件可以通过dism快速挂载到任意空文件夹

    b.cmd.exe运行批处理文件时会跳过无效的命令

    c.所依赖的组件只有两个:cmd.exe和dism.exe,不会出现没有运行库之类的问题

2、此处以”360驱动大师网卡版”为例,方法大致如下

自挂载 一种很新的单文件打包方法

3、我们先将装着需要打包的程序的文件夹和一个批处理放入一个空文件夹中,如图所示。注意,这一层目录可以有若干个文件夹,但只能有批处理这一个文件。

4、编辑这个批处理文件,它的代码流程如下所示;

    a.空三行(必须,以防cmd将下一条与文件头部数据作为一行处理)

    b.获取管理员权限

    c.创建挂载所需的文件夹

    d.调用dism.exe以wim方式挂载文件”%0″(%0是批处理文件自身,这里就是自挂载的核心部分)

    e.运行绿化程序(若有)

    f.运行主程序

    g.运行残留清理程序(若有)

    h.调用dism.exe将”%0″文件的挂载卸除

    i.退出脚本

    j.空三行(必须,以防cmd将上一条与其余文件数据作为一行处理)

5、使用任意打包工具对这个文件夹进行打包,此处作者使用wimtool,步骤如下;

   a.以管理员身份打开wimtool,打开“新制与追加”一页

   b.点击“配置文件”按钮,进入配置文件编辑页面

   c.在[CompressionEXlusionList]行下插入一行,填入*.bat

   d.点击应用

   e.(可选)点击“压缩类型”选择最大压缩

   f.填入wim文件名和打包路径,开始打包

6、将打包好的wim文件扩展名直接改为.bat或.cmd

实际使用时的情况
优点:自挂载程序加载速度明显比自解压程序快,360驱动大师的两种单文件版本在作者的win11虚拟机中冷启动时,自挂载启动用时14s,自解压启动用时25s。理论上在同性能硬件环境下,加载越大的程序,自挂载越有优势。

缺点:有一个黑框框,而且wim压缩比没有7z高。

理论上vhd和iso也可以用于自挂载程序的。

扩展
bat可以调用vbs脚本实现隐藏窗口,而且这个wim的文件结构还可以优化。

其实只要在按名称排序时,bat在第一个就行了,最简单的办法就是在bat文件前加感叹号。

这种方法其实还有一个优点,就是在程序自动升级或是修改设置后还能打包回单文件,而自解压是做不到的。
作者: ko20010214    时间: 2024-5-7 00:24
本帖最后由 ko20010214 于 2024-5-8 12:21 编辑




论坛里也有这方面的介绍:
http://bbs.wuyou.net/forum.php?m ... =127238&ordertype=2

打成wim包的好处是节省盘空间,单文件化,防毒,免解压(称为挂载)。
[例1]ghost.wim的制作
XP下可能没有安装wimnt工具,所以进入本帖所提及的PE(34、50、88M均可)来制作,其过程跟用winrar打包差不多。
首先建一个目录,不妨设目录名为ghost,相关文件放入里面,例如放入GHOST32.EXE、GHOSTEXP.EXE两个文件
然后,鼠标指向目录名ghost,点鼠标右键,选择“用wimnt自动制作wim文件”菜单项,等一会即可自动生成一个ghost.wim文件。
用ultraISO工具把ghost.wim(必要时可改一下文件名,但要保持后缀.wim)放入光盘PETOOLS目录或其下级目录,大功告成。

用新的光盘启动,在开始菜单里可以找到这个ghost.wim的快捷方式(自动出现的,不必修改ini文件用PECMD LINK...来生成快捷方式),点一下,会自动打开一个文件夹,wim文件被自动挂接到该文件夹(这不是解压,是挂接),你可以看到被打包的GHOST32.EXE、GHOSTEXP.EXE两个文件,它们可以双击运行了。
这样,你就为PE增加了一个组件。Pseudo的PE(88M)里的GHOST.wim就是这么来的。有什么困难吗?

[例2]制作点击能直接运行的ghost.wim
与例1做法类似。
你需要用记事本(在PE中必要时启用MMC就有记事本了)写一个名为SETUP.CMD的批处理文件,内容只有一行:
ghost32.exe
把SETUP.CMD放入ghost目录,和GHOST32.EXE、GHOSTEXP.EXE两个文件并列。其余操作同例1.

将来在PE中点击ghost.wim(或其的快捷方式)时,会自动运行包中的GHOST32.EXE。尽管这样做不够完美,但够简单吧。

还有,你可以在硬盘任一分区建立名为PEtools的目录,将你增加的组件放入其中,这样就不用改动光盘。但不要放在准备格式化/克隆的硬盘分区上。



http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1

PECMD.EXE通过配置文件挂接WIM映像的简单说明

 Microsoft Windows Imaging Format (WIM) 映像是MS新型的映像文件,具高压缩比、挂接方便、挂接内存小等特点。
在XP/2K3的PE中通过挂接WIM作为外置程序,可以避免外置程序受到病毒等因素的破坏,使外置程序更加安全可靠,同时
也可使对外发行的PE打包文件更小更简洁。

1、PE中的WimFltr组件
  在现行PE中增加挂接WIM文件的支持相当简单,无需修改TXTSETUP.SIF文件、也无需.INF文件,只需在注册表文件(SETUPREG.HIV)
增加两项服务,分别向SYSTEM32目录、DRIVERS目录复制两个文件即可,下面是WimFltr组件的文件列表:

I386
  |
  +---SYSTEM32
           |
           +-----WIMGAPI.DLL
           |
           +-----FLTLIB.DLL
           |
           +-----DRIVERS
                      |
                      +-----WIMFLTR.SYS
                      |
                      +-----WIMFSF.SYS

2、用PECMD.EXE挂接WIM映像的注意事项
  经本人无数次试验,得到这样的经验:在PE中开启WimFltr、FBWF两项服务时有先后之分,启动FBWF服务必须在启动WimFltr之后,
否则无法挂接WIM映像(包括用MS的IMAGEX.EXE也无法挂接WIM映像,原因不明)。所以,基于IMG格式的PE核心要保留适当的可写空间
(500K左右应足够了),同时在配置文件中尽早通过FILE命令删掉一些启动后无用的垃圾文件;基于ISO格式的PE核心要有一个可写的RamDisk(即以往的B:盘),因FBWF服务还没启动时无法将WIM挂接到X:盘中,只能挂接到RamDisk(B:盘)中。MOUN命令的格式如下:
MOUN [Wim文件名], <Mount目标目录>, [映像ID], [WimFltr临时工作目录]


其中蓝色的参数是必须的,红色的参数是可选项。
如果WIM映像是只读的(如在光盘中),红色的参数"WimFltr临时工作目录"必须省略,否则无法挂上WIM映像。
当设置WimFltr临时工作目录时表示RW(读写)方式挂载,这个目录建议设置到硬盘;
当省略WimFltr临时工作目录时表示(只读)方式挂载,挂载后的目标目录是可写的。

3、其它注意事项
  一旦挂上WIM映像后,建议不要用其它工具对原WIM映像读写(包括用RAR打包这类操作);如果机子内存不大,建议设置虚拟内存并将
临时文件夹设置到硬盘。

附件为WimFltr组件及注册表(WimFltr.REG.TXT)。

作者: wjqok    时间: 2024-5-7 00:52
dism++软件试试看
作者: Su_jacc    时间: 2024-5-7 01:18
用dism++
作者: bsdgsos    时间: 2024-5-7 05:45
教程收藏
作者: 窄口牛    时间: 2024-5-7 07:06
7zip也可以了。
作者: 2013Varg    时间: 2024-5-7 07:28
我用的wincmd挂的,写个自动挂的批处理就行了
作者: ko20010214    时间: 2024-5-7 08:08
wjqok 发表于 2024-5-7 00:52
dism++软件试试看

愿闻其详
作者: ko20010214    时间: 2024-5-7 08:08
2013Varg 发表于 2024-5-7 07:28
我用的wincmd挂的,写个自动挂的批处理就行了

愿闻其详
作者: ko20010214    时间: 2024-5-7 08:08
窄口牛 发表于 2024-5-7 07:06
7zip也可以了。

愿闻其详
作者: maisifu    时间: 2024-5-7 08:19
学习。。。
作者: zhenghui    时间: 2024-5-7 08:25
楼上很多说的都很详细、办法都是可行的
作者: reninhouse    时间: 2024-5-7 08:37
进来学习
作者: omm123    时间: 2024-5-7 09:04
学习!
作者: wang1126    时间: 2024-5-7 09:17
学习学习
作者: yushu    时间: 2024-5-7 09:18
学习学习
作者: 201027149    时间: 2024-5-7 09:56
GImageX 就可以

1.png (330.22 KB, 下载次数: 82)

1.png

作者: nttwqz    时间: 2024-5-7 10:36
dism命令本来就支持捕获文件夹,不限麻烦可以当压缩文件使用
作者: yc2428    时间: 2024-5-7 10:38
我是将bat都改成reg,讨厌黑框框
作者: guong    时间: 2024-5-7 12:36
来学习下
作者: ko20010214    时间: 2024-5-8 12:54
我看论坛里也有一些帖子是关于WIM映像单文件绿软的啊、


但这个方面的内容不多,而且也没看到多少人用这个WIM格式的软件……

这不应该是建立一个WIM软件库吗? 谁需要什么绿软就可以去里面找,找到下载到自己硬盘上加载一下就可以用。


作者: hutyingtao    时间: 2024-5-8 13:36
教程收藏
作者: 2013Varg    时间: 2024-5-8 13:47
ko20010214 发表于 2024-5-8 12:54
我看论坛里也有一些帖子是关于WIM映像单文件绿软的啊、



我以前弄游戏就是这样的,不过其实也不是很方便,后来就改成直接挂载指定目录下的wim到同名目录下然后自动导入指定目录的reg文件了
作者: ziwen    时间: 2024-5-8 19:38
ko20010214 发表于 2024-5-7 00:21
与单文件自解压程序 ( 以下简称自解压程序 ) 相似,单文件自挂载程序(以下简称自挂载程序)也是通过可执行 ...

挂载应该也是解压吧?不解压现在只有虚拟化打包能实现
作者: vaf    时间: 2024-5-8 20:23
我喜欢 DOS 的黑框框.

作者: zyy    时间: 2024-5-8 22:30
谢谢分享,学习中
作者: shinykers    时间: 2024-5-10 22:05
结果呢?现在有教程么?
作者: 海上    时间: 2024-5-13 21:25
Dism /Capture-Image /ImageFile:E:\boot.wim /CaptureDir:D:\boot /Name:win10pe /Compress:max /Bootable
放在批处理里边,以管理员运行




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3