无忧启动论坛

标题: 如何为鼠标右键添加一个可以解压缩.cab或者.msu补丁包的菜单 [打印本页]

作者: wu733    时间: 2023-3-17 11:54
标题: 如何为鼠标右键添加一个可以解压缩.cab或者.msu补丁包的菜单
本帖最后由 wu733 于 2023-3-18 20:23 编辑

想在右键添加cab或msu补丁包的解压菜单,并实现功能为:将选择的补丁包解压到以补丁包同名的文件夹。如图一

Command子项:@值为Expand   -F:*   %1   目标文件夹,关键是这里。如图二。是不是还要用到PowerShell命令。



附一个:鼠标右键添加在线安装补丁包,实现在线安装cab补丁包功能。
记事本编辑输入:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\runass]
@="在线安装更新包"

[HKEY_CLASSES_ROOT\*\shell\runass\Command]
@="cmd /k dism /online /add-package /packagepath:\"%1\""

然后将记事本保存为reg文件,合并导入注册表,即可实现。对照图三

图一.jpg (78.98 KB, 下载次数: 28)

图一.jpg

图二.jpg (66.53 KB, 下载次数: 30)

图二.jpg

图三.jpg (68.91 KB, 下载次数: 36)

图三.jpg

作者: yyz2191958    时间: 2023-3-17 13:40
谢谢楼主分享
作者: lx5815    时间: 2023-3-17 14:55
感谢分享
作者: 旁观者清    时间: 2023-3-17 19:56
本帖最后由 旁观者清 于 2023-3-17 20:37 编辑

感觉多余啊。
作者: wu733    时间: 2023-3-17 20:00
旁观者清 发表于 2023-3-17 19:56
谢谢分享。

跪求帮忙解决问题啊
作者: moors    时间: 2023-3-17 20:06
wu733 发表于 2023-3-17 20:00
跪求帮忙解决问题啊

难道说WinRAR本身提供的功能不够用吗?
作者: wu733    时间: 2023-3-17 20:13
moors 发表于 2023-3-17 20:06
难道说WinRAR本身提供的功能不够用吗?

解压不了微软的补丁包,微软自己的东西还是得Expand命令
作者: czg2008    时间: 2023-3-17 20:20
谢谢多谢
作者: moors    时间: 2023-3-17 20:46
wu733 发表于 2023-3-17 20:13
解压不了微软的补丁包,微软自己的东西还是得Expand命令

cab文件WinRAR是可以解压的
msu也是可以解压的,msu就是需要一点小小设置,才能关联WinRAR
作者: wu733    时间: 2023-3-17 21:17
moors 发表于 2023-3-17 20:46
cab文件WinRAR是可以解压的
msu也是可以解压的,msu就是需要一点小小设置,才能关联WinRAR

就算msu包可以用WinRAR解压,那cab解压呢?解开后都是一些什么东西啊

图一.jpg (72.24 KB, 下载次数: 32)

图一.jpg

图二.jpg (71.73 KB, 下载次数: 37)

图二.jpg

图三.jpg (123.34 KB, 下载次数: 29)

图三.jpg

图四.jpg (127.98 KB, 下载次数: 29)

图四.jpg

作者: ailixiaoran    时间: 2023-3-17 21:27
感谢分享
作者: 9527sss    时间: 2023-3-18 10:16
感谢分享
作者: moors    时间: 2023-3-18 13:38
wu733 发表于 2023-3-17 21:17
就算msu包可以用WinRAR解压,那cab解压呢?解开后都是一些什么东西啊

应该是这些cab文件用证书加密了,一般程序识别不了,所以加密的部分只能提取,不能解释。
你这个估计要做一个批处理右键菜单项。

我的尝试:
1.注册表
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CABFolder\Shell\CabExtract]
@="解压缩更新包"

[HKEY_CLASSES_ROOT\CABFolder\Shell\CabExtract\Command]
@="Z:\\CabExtract\\CabExtract.bat %1"

2.批处理(CabExtract.bat)代码
echo off
setlocal enabledelayedexpansion
for %%f in (%1) do (
    set "FILE_PATH_NO_EXT=%%~dpnf"
    if not exist !FILE_PATH_NO_EXT! (
    md !FILE_PATH_NO_EXT!
    )
    expand -i -f:* "%1" !FILE_PATH_NO_EXT!
)
pause




批处理以前没怎么写过,比较菜,合用的话,你再自己修改一下吧。

作者: wu733    时间: 2023-3-18 19:20
moors 发表于 2023-3-18 13:38
应该是这些cab文件用证书加密了,一般程序识别不了,所以加密的部分只能提取,不能解释。
你这个估计要 ...

非常感谢,我试试
作者: wu733    时间: 2023-3-18 20:17
本帖最后由 wu733 于 2023-3-18 20:21 编辑
moors 发表于 2023-3-18 13:38
应该是这些cab文件用证书加密了,一般程序识别不了,所以加密的部分只能提取,不能解释。
你这个估计要 ...

稍微修改了一下,居然搞定了,再次感谢!!!

1.注册表
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CABFolder\Shell\CabExtract]
@="解压缩更新包"

[HKEY_CLASSES_ROOT\CABFolder\Shell\CabExtract\Command]
@="Z:\\CabExtract\\CabExtract.bat %1"

最后一行修改为:@="C:\\CabExtract.bat   \"%1\""      对照图一、图二

2.批处理(CabExtract.bat)代码
echo off
setlocal enabledelayedexpansion
for %%f in (%1) do (
    set "FILE_PATH_NO_EXT=%%~dpnf"
    if not exist !FILE_PATH_NO_EXT! (
    md !FILE_PATH_NO_EXT!
    )
    expand  -i  -f:*  "%1"  !FILE_PATH_NO_EXT!
)
pause

倒数第三行修改为:expand  -f:*  "%1"  !FILE_PATH_NO_EXT!      对照图三

图一.jpg (40.47 KB, 下载次数: 31)

图一.jpg

图二.jpg (31.46 KB, 下载次数: 27)

图二.jpg

图三.jpg (38.94 KB, 下载次数: 29)

图三.jpg

作者: moors    时间: 2023-3-18 20:59
本帖最后由 moors 于 2023-3-18 21:09 编辑
wu733 发表于 2023-3-18 20:17
稍微修改了一下,居然搞定了,再次感谢!!!

1.注册表

说一下参数-i的问题,
之前我在尝试的时候,从本机搜到一个sls.cab来测试,当时发现,如果不加-i参数,那么解出来的一直是sls.cab,会这么循环下去。
但是加了-i参数,出来的目录会有问题,考虑不周。
我刚才试了一下,我推荐你将-i换成-r,运行结果比较正常,也不会出现我上面说的sls.cab这种问题。

贴一下微软的命令说明:
语法
expand [-r] <source> <destination>
expand -r <source> [<destination>]
expand -i <source> [<destination>]
expand -d <source>.cab [-f:<files>]
expand <source>.cab -f:<files> <destination>

参数
参数        描述
-r        重命名展开的文件。
source        指定要展开的文件。 source 可以由驱动器号后跟分号、目录名称、文件名或是这几项的组合组成。 可以使用通配符(* 或 ?)。
destination        指定文件展开的位置。
如果 source 由多个文件组成,并且未指定 -r,则 destination 必须是已存在的目录。 destination 可以由驱动器号后跟分号、目录名称、文件名或是这几项的组合组成。 目标 file \| path 规范。

-i        重命名展开的文件,但忽略目录结构。
-d        显示源位置中的文件列表。 不展开或解压缩文件。
-f:<files>        指定压缩包 (.cab) 文件中要展开的文件。 可以使用通配符(* 或 ?)。
/?        在命令提示符下显示帮助。


作者: wu733    时间: 2023-3-18 22:08
moors 发表于 2023-3-18 20:59
说一下参数-i的问题,
之前我在尝试的时候,从本机搜到一个sls.cab来测试,当时发现,如果不加-i参数, ...

把原来的 -i 改成 -r 测试成功,你为啥这么优秀
作者: 6958809    时间: 2023-3-31 19:21
谢谢分享!




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