一、 问题定位

在使用PowerToys的过程中,当您尝试升级或卸载现有版本时,可能会遇到一个阻碍流程的错误弹窗。系统提示“The feature you are trying to use is on a network resource that is unavailable.”,并要求提供一个特定版本的 .msi 安装文件(例如 PowerToysUserSetup-0.89.0-x64.msi),但该文件在指定的缓存路径(如 C:\Users\wsy\AppData\Local\Package Cache\)中已无法找到。
二、 原理分析
此问题的根源在于Windows Installer在执行安装、升级或卸载操作时,需要依赖初次安装时缓存的 .msi 文件。如果这个缓存文件因为磁盘清理、手动删除或其他原因而丢失,Installer便无法继续执行。
PowerToys的 .exe 安装程序实际上是一个捆绑包 (Bundle),它内部封装了真正的 .msi 安装包以及其他依赖项。因此,我们无法直接使用 .exe 文件来响应系统的提示,而必须从中提取出所需的核心 .msi 文件。
三、 解决方案
核心解决方案是从原始的 .exe 安装包中提取出Windows Installer所需的 .msi 文件。这需要借助一个专业的Windows安装包制作工具集——WiX Toolset。
WiX Toolset中的 dark.exe 工具是一个反编译器 (decompiler),它能够解析 .msi 或 .exe 安装包的结构,并将其中包含的文件和配置信息提取出来。
操作前置条件:
- 下载并安装WiX Toolset:建议选择 v3 版本以匹配原文操作。
- 准备PowerToys的.exe安装包:找到与您系统上安装版本相匹配的
.exe安装文件。如果已删除,需从PowerToys的官方GitHub发布页面重新下载。
四、 实践案例 (以PowerToys 0.89.0为例)
以下步骤将从 PowerToysUserSetup-0.89.0-x64.exe 中提取 .msi 文件。
打开PowerShell或命令提示符(CMD)。执行以下命令,进入 WiX Toolset的bin目录,即dark.exe 所在的目录。
# $Env:WIX 是WiX Toolset安装时设置的环境变量,指向其安装根目录
cd $Env:WIX\"bin"
使用 dark.exe 的 -x 参数来解压安装包。命令格式如下:
# 语法: dark.exe -x [输出文件夹路径] [目标.exe安装包路径]
dark.exe -x OUTPUT_FOLDER INSTALLER_PATH
示例:
假设我们将提取的文件存放在 E:\Desktop\extractedPath 目录下,且PowerToys的安装包位于 E:\Desktop\。
# 请将下面的路径替换为您自己的实际路径
.\dark.exe -x "E:\Desktop\extractedPath" "E:\Desktop\PowerToysUserSetup-0.89.0-x64.exe"
-x:dark.exe的解压参数。"E:\Desktop\extractedPath": 指定解压后文件的存放路径,请确保该文件夹已创建或有权限创建。"E:\Desktop\PowerToysUserSetup-0.89.0-x64.exe": 需要被解压的PowerToys安装包的完整路径。
命令执行成功后,在您指定的输出文件夹(本例中为 E:\Desktop\extractedPath)下,会生成 AttachedContainer 和 UX 两个子文件夹。
我们所需的目标 .msi 文件就位于 AttachedContainer 文件夹内。

现在,回到最初的错误弹窗,点击“Browse…”按钮,然后导航到 AttachedContainer 文件夹,选中刚刚提取出的 .msi 文件。此时,系统会识别该文件,安装或卸载程序将得以正常继续。
1596






