无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 2523|回复: 22

[已解决] 如何为鼠标右键添加一个可以解压缩.cab或者.msu补丁包的菜单

[复制链接]
发表于 2023-3-17 11:54:55 | 显示全部楼层 |阅读模式
本帖最后由 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
图二.jpg
图三.jpg
发表于 2023-3-17 13:40:30 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

发表于 2023-3-17 14:55:08 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2023-3-17 19:56:17 | 显示全部楼层
本帖最后由 旁观者清 于 2023-3-17 20:37 编辑

感觉多余啊。

点评

跪求帮忙解决问题啊  详情 回复 发表于 2023-3-17 20:00
回复

使用道具 举报

 楼主| 发表于 2023-3-17 20:00:20 | 显示全部楼层

跪求帮忙解决问题啊
回复

使用道具 举报

发表于 2023-3-17 20:06:23 | 显示全部楼层
wu733 发表于 2023-3-17 20:00
跪求帮忙解决问题啊

难道说WinRAR本身提供的功能不够用吗?

点评

解压不了微软的补丁包,微软自己的东西还是得Expand命令  详情 回复 发表于 2023-3-17 20:13
回复

使用道具 举报

 楼主| 发表于 2023-3-17 20:13:16 | 显示全部楼层
moors 发表于 2023-3-17 20:06
难道说WinRAR本身提供的功能不够用吗?

解压不了微软的补丁包,微软自己的东西还是得Expand命令
回复

使用道具 举报

发表于 2023-3-17 20:20:02 | 显示全部楼层
谢谢多谢
回复

使用道具 举报

发表于 2023-3-17 20:46:20 | 显示全部楼层
wu733 发表于 2023-3-17 20:13
解压不了微软的补丁包,微软自己的东西还是得Expand命令

cab文件WinRAR是可以解压的
msu也是可以解压的,msu就是需要一点小小设置,才能关联WinRAR

点评

就算msu包可以用WinRAR解压,那cab解压呢?解开后都是一些什么东西啊  详情 回复 发表于 2023-3-17 21:17
回复

使用道具 举报

 楼主| 发表于 2023-3-17 21:17:58 | 显示全部楼层
moors 发表于 2023-3-17 20:46
cab文件WinRAR是可以解压的
msu也是可以解压的,msu就是需要一点小小设置,才能关联WinRAR

就算msu包可以用WinRAR解压,那cab解压呢?解开后都是一些什么东西啊
图一.jpg
图二.jpg
图三.jpg
图四.jpg
回复

使用道具 举报

发表于 2023-3-17 21:27:15 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2023-3-18 10:16:38 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2023-3-18 13:38:46 | 显示全部楼层
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




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

点评

稍微修改了一下,居然搞定了,再次感谢!!! 1.注册表 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\CABFolder\Shell\CabExtract] @="解压缩更新包" [HKEY_CLASSES_ROOT\CABFolder\Shell\C  详情 回复 发表于 2023-3-18 20:17
批处理编程我比你更菜......  发表于 2023-3-18 19:42
非常感谢,我试试  详情 回复 发表于 2023-3-18 19:20

评分

参与人数 1无忧币 +5 收起 理由
wu733 + 5 很给力!

查看全部评分

回复

使用道具 举报

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

非常感谢,我试试
回复

使用道具 举报

 楼主| 发表于 2023-3-18 20:17:44 | 显示全部楼层
本帖最后由 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
图二.jpg
图三.jpg
回复

使用道具 举报

发表于 2023-3-18 20:59:33 | 显示全部楼层
本帖最后由 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) 文件中要展开的文件。 可以使用通配符(* 或 ?)。
/?        在命令提示符下显示帮助。

点评

把原来的 -i 改成 -r 测试成功,你为啥这么优秀  详情 回复 发表于 2023-3-18 22:08
回复

使用道具 举报

 楼主| 发表于 2023-3-18 22:08:28 | 显示全部楼层
moors 发表于 2023-3-18 20:59
说一下参数-i的问题,
之前我在尝试的时候,从本机搜到一个sls.cab来测试,当时发现,如果不加-i参数, ...

把原来的 -i 改成 -r 测试成功,你为啥这么优秀
回复

使用道具 举报

发表于 2023-3-31 19:21:34 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-28 19:53

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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