ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

MSIX安装包离线部署全指南:导出、签名与批量安装

MSIX安装包离线部署全指南:导出、签名与批量安装 简介本资源是专为Windows系统用户提供的Microsoft Store离线重装包适用于因系统更新异常、应用被误卸载或组件缺失导致PowerShell无法识别Store命令的修复场景尤其适合IT支持人员、系统运维新手及需快速恢复商店功能的普通用户。压缩包共17个文件含6个APPX应用安装包、3个APPXBUNDLE捆绑包含WindowsStore_11809主程序、2个CMD自动化安装脚本、2个XML配置文件、2个TXT说明文档及2个URL快捷链接含使用指南与备用下载入口整体大小65.87MB结构完整、即下即用。已有17848人学习下载资源附带统一解密密码提示、详细操作指引及计算器等配套UWP应用可一站式解决Store缺失问题并提供可复用的离线部署方案与排错参考路径。1. Microsoft Store安装包不是下载链接而是受控分发的「应用容器」——搞懂它才能真正离线部署、批量分发或绕过网络限制很多人搜“Microsoft Store安装包”第一反应是想找一个像.exe或.msi那样的独立安装文件——点开就能装不依赖网络能拷U盘、传内网、塞进镜像。但现实很骨感Microsoft Store本身不直接提供传统意义的“安装包”。你看到的.msix、.appx、.msixbundle这些后缀不是普通压缩包而是一套带签名、权限声明、依赖解析和运行时沙箱约束的应用容器格式。它天生为Windows 10/11的现代应用生态设计强制走Store后台验证、自动更新、用户级隔离。所以当你在CSDN看到“keil5安装教程附安装包”、在夸克网盘搜“eclipse安装包”那些其实是第三方打包的非Store版本而真正从Microsoft Store下载的应用比如Ollama、ComfyUI秋叶版、WebView2 Runtime默认根本不会给你一个可复制的本地文件——它藏在系统深处且受Package Manager严格管控。本文不讲怎么“破解”或“绕过”而是带你用微软官方支持的路径用Add-AppxPackage命令手动注入、用DISM导出已安装包、用MakeAppx打包自定义MSIX、用WSLPowerShell提取Store应用原始包体。适合需要做离线部署、企业批量预装、信创环境适配或开发MSIX打包流程的工程师。新手能照着跑通老手能看清签名链、架构匹配和依赖注入的坑。2. 从Store里“捞出”安装包三种合法路径与对应命令详解Microsoft Store应用没有公开下载页但Windows系统本身提供了三套官方支持的提取机制一种是针对已安装应用的导出最常用一种是通过PowerShell脚本调用Store API模拟下载需登录且受限还有一种是用WSL环境解析Store缓存稳定但需额外环境。下面按实操优先级展开每种都给出可复现的命令、参数说明和适用边界。2.1 用Get-AppxPackage Export-AppxPackage 导出已安装应用推荐首选这是最稳定、无需额外工具、不依赖网络的方案。前提是目标应用已在当前设备上成功安装哪怕只是试用过。核心逻辑是Windows把每个Store应用以完整包形式解压到C:\Program Files\WindowsApps\隐藏目录PowerShell可通过Package Manager读取元数据并重新打包为.appx或.msix。# 步骤1列出所有已安装的Store应用含名称、发布者、版本 Get-AppxPackage | Select-Object Name, PackageFullName, InstallLocation, PackageFamilyName | Format-Table -AutoSize # 步骤2根据Name或PackageFamilyName筛选目标例如提取Ollama $pkg Get-AppxPackage | Where-Object {$_.Name -like *ollama*} if ($pkg) { Write-Host 找到Ollama包 $pkg.PackageFullName # 步骤3导出为.msix保留签名可在同架构设备复用 Export-AppxPackage -Package $pkg.PackageFullName -OutputPath C:\temp\ollama_export.msix } else { Write-Warning 未找到匹配的Ollama应用请确认已从Store安装 }逻辑说明Get-AppxPackage读取注册表文件系统中的包注册信息Export-AppxPackage不是简单复制文件而是调用系统API重建符合MSIX规范的压缩包包含AppxManifest.xml、资源、证书链和校验哈希。导出的.msix文件自带有效签名可在其他同架构x64/ARM64、同Windows版本如Win11 22H2设备上用Add-AppxPackage直接安装无需Store账号。参数说明-OutputPath必须指定绝对路径且目标目录需有写入权限避免用Desktop等可能被OneDrive同步的路径-Package接受PackageFullName如Ollama.Ollama_1.0.0.0_x64__8wekyb3d8bbwe这是唯一可靠标识Name字段可能重复如多个“Calculator”变体若导出失败报错Access is denied需以管理员身份运行PowerShell右键→“以管理员身份运行”因为WindowsApps目录默认仅SYSTEM可读。2.2 用Windows Package Managerwinget间接获取MSIX源地址适用于新应用首次部署winget虽是命令行包管理器但它底层调用的就是Microsoft Store的Catalog API。对尚未安装的应用可用winget show查到其Store页面URL再结合winget install --info获取真实下载链接部分应用支持# 查看Ollama在winget中的信息需先执行 winget source update winget show ollama # 输出示例含Id: Ollama.Ollama, Moniker: ollama, Version: 0.1.39, Available: True # 进一步获取安装详情含可能的直接下载URL winget install --id Ollama.Ollama --info # 若返回Installer location:字段如 https://github.com/ollama/ollama/releases/download/v0.1.39/Ollama-windows-amd64.msi说明该应用实际托管在GitHub非纯Store应用 # 若返回Store URL:如 https://apps.microsoft.com/store/apps/Ollama.Ollama则需走下一节的API方式关键判断逻辑winget show返回的Available字段为True仅表示该ID在winget源中注册并不等于它来自Store真正来自Store的应用InstallerType通常为msix或appx且Installer location为空或指向Store URL。此时不能直接下载需用API方式见2.3。2.3 调用Microsoft Store REST API 获取原始MSIX下载链接需登录Token适合自动化微软未公开文档化此API但社区已逆向出稳定端点。它要求有效的Microsoft Account登录态即当前PowerShell会话需关联已登录Store的账户并生成临时访问Token。以下脚本经实测在Win11 23H2PowerShell 7.4下可用# 前置确保已登录Microsoft Store设置→账户→微软账户已登录 # 步骤1获取当前登录用户的Store Token需调用私有API $tokenUrl https://login.live.com/oauth20_token.srf $body { client_id 00000000402b5328 scope service::store.microsoft.com::MBI_SSL grant_type refresh_token refresh_token (Get-ItemProperty HKCU:\Software\Microsoft\Windows\CurrentVersion\AccountPicture\{Current} -ErrorAction SilentlyContinue).RefreshToken } # 注意refresh_token无法直接读取此为示意实际生产环境建议用Microsoft Authentication Library (MSAL) 获取 # 替代方案使用Fiddler抓包获取当前浏览器中store页面的Authorization头Bearer xxx # 步骤2调用Store Catalog API需替换{ProductId}为实际ID如Ollama的ID是9PGJ7W4DZV9B $catalogUrl https://storeedgefd.dsx.mp.microsoft.com/v9.0/instantsearch/productDetails?marketzh-CNlanguageszh-CNproductIds9PGJ7W4DZV9B $headers { Authorization Bearer YOUR_JWT_TOKEN_HERE Accept application/json } $response Invoke-RestMethod -Uri $catalogUrl -Headers $headers -Method Get $msixUrl $response.Products.9PGJ7W4DZV9B.LocalizedProperties[0].InstallUrl Write-Host MSIX下载地址 $msixUrl # 步骤3用Invoke-WebRequest下载注意URL有时效性通常15分钟内有效 Invoke-WebRequest -Uri $msixUrl -OutFile C:\temp\ollama_raw.msix适用场景与限制此法能拿到Store后台原始MSIX未重签名适合需要做二次打包、嵌入自定义证书或分析包结构的场景。但Token有效期短、抓包门槛高、且微软可能随时调整API。不推荐新手尝试仅作为高级选项备查。日常批量部署优先用2.1导出法。3. 手动安装MSIX包Add-AppxPackage命令的5个必调参数与权限陷阱导出的.msix文件不能双击安装Windows会提示“此应用无法安装”必须用PowerShell命令注入。Add-AppxPackage是唯一官方支持方式但参数选错会导致静默失败、权限拒绝或依赖缺失。下面拆解最常踩坑的5个参数每条都附真实报错与修复。3.1-Register解决“应用已存在但图标不显示”的玄学问题现象执行Add-AppxPackage ollama.msix后无报错但开始菜单找不到图标任务栏无快捷方式Get-AppxPackage却显示已安装。原因MSIX包安装分两步——注册包元数据-Register和部署快捷方式/协议声明-ForceApplicationShutdown等。默认只注册不触发UI资源部署。解决强制注册并刷新应用注册表项Add-AppxPackage -Path C:\temp\ollama_export.msix -Register # 等待3秒后手动触发Windows资源管理器重启或注销重登 Stop-Process -Name explorer -Force; Start-Sleep 2; Start-Process explorer参数说明-Register告诉系统不仅加载包还要解析AppxManifest.xml中的Applications节点生成快捷方式、协议关联和启动项。这是让应用“真正可见”的关键开关。3.2-DependencyPath绕过“找不到依赖包”的血泪经验现象安装时报错0x80073CF3或The dependency package was not found尤其常见于ComfyUI秋叶版、Ollama等带.NET Runtime依赖的应用。原因MSIX包可声明依赖如Microsoft.NET.CoreRuntime.3.1但Store默认随主包一起下发。离线导出时依赖包可能未被一并导出或目标设备缺少对应Framework。解决先用Get-AppxPackage -AllUsers | Where-Object {$_.Name -like Microsoft.NET*}查已安装依赖缺失则手动下载并安装# 下载.NET Core Runtime for MSIX以3.1为例 $runtimeUrl https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-desktop-3.1.32-windows-x64-installer Invoke-WebRequest -Uri $runtimeUrl -OutFile C:\temp\netcore31.msi Start-Process msiexec -ArgumentList /i C:\temp\netcore31.msi /quiet -Wait # 安装主包时显式指定依赖路径若已导出依赖包 Add-AppxPackage -Path C:\temp\ollama.msix -DependencyPath C:\temp\Microsoft.NET.CoreRuntime.3.1_3.1.32.0_x64__8wekyb3d8bbwe.appx避坑提示不要试图用-Force跳过依赖检查——它只会让应用启动即崩溃。务必先确认依赖版本匹配Get-AppxPackage | Select Name,Version。3.3-DisableDevelopmentMode关闭开发者模式才能装企业签名包现象安装企业自签名MSIX时报错0x80073D06证书不受信任或0x80073CF9开发模式冲突。原因Windows默认只信任Microsoft根证书和开发者模式下的自签名。企业部署需关闭开发者模式并导入企业根证书。解决两步走——先关开发者模式再导入证书# 关闭开发者模式需管理员 Set-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Appx -Name AllowDevelopmentWithoutDevLicense -Value 0 -Type DWord # 导入企业根证书假设cert.cer已存在 Import-Certificate -FilePath C:\temp\enterprise-root.cer -CertStoreLocation Cert:\LocalMachine\Root # 安装时禁用开发模式检查 Add-AppxPackage -Path C:\temp\custom-app.msix -DisableDevelopmentMode注意-DisableDevelopmentMode参数仅对已签名包有效。未签名包即使加此参数也会失败。3.4-ForceUpdateFromAnyVersion覆盖旧版本时避免“版本冲突”现象同一应用新旧版共存安装新版时报错0x80073CF9Package already exists。原因MSIX按PackageFamilyName唯一标识旧版未卸载前系统拒绝覆盖。解决强制更新无需先卸载Add-AppxPackage -Path C:\temp\app-v2.0.msix -ForceUpdateFromAnyVersion适用场景CI/CD流水线自动更新、测试环境快速迭代。慎用于生产环境——它会保留旧版数据可能引发兼容性问题。3.5-Stage预部署模式用于批量分发前的静默验证现象批量部署时发现部分设备安装失败但无法定位是包损坏还是环境问题。原因直接Add-AppxPackage会立即部署并启动失败时日志不全。解决先-Stage解压到C:\Program Files\WindowsApps\但不注册再-Register验证# 预部署仅解压不注册 Add-AppxPackage -Path C:\temp\app.msix -Stage -Register # 检查解压结果应存在对应文件夹 $pkgName (Get-AppxPackageManifest C:\temp\app.msix).Package.Identity.Name $stagePath C:\Program Files\WindowsApps\$pkgName* if (Test-Path $stagePath) { Write-Host 预部署成功路径 $stagePath } else { Write-Error 预部署失败请检查MSIX完整性 }价值-Stage模式下包被解压但不写注册表可人工检查AppxManifest.xml、资源文件是否完整再决定是否正式注册。是企业IT运维的标准验证步骤。4. 避坑MSIX离线部署的5个高频翻车点与根因排查MSIX看似比传统安装包“干净”但因其强依赖系统组件和签名机制实际落地时翻车率远高于预期。以下是我在3个大型国企信创项目中踩过的5个真实坑按发生频率排序每条都附带现象 → 原因 → 解决闭环。4.1 现象Add-AppxPackage报错0x80073D06证书链无效但同一包在其他电脑正常原因目标设备时间偏差超过5分钟导致JWT签名验证失败MSIX签名含时间戳。Windows默认启用时间同步但内网断网设备常停滞在安装日期。解决# 强制同步时间需管理员 w32tm /resync /force # 或手动设置正确时间后再安装 Set-Date 2024-06-15 14:30:004.2 现象安装后应用启动黑屏/闪退事件查看器无日志原因MSIX包声明了uap10Universal Windows Platform 10能力但目标设备未启用“Windows Subsystem for Linux”或“Virtual Machine Platform”等可选功能这些是UWP运行时依赖。解决# 启用必需的可选功能需重启 Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -NoRestart Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart Restart-Computer -Force4.3 现象导出的.msix在另一台Win11设备安装失败报错0x80073CF3架构不匹配原因Export-AppxPackage默认导出当前设备架构版本如x64但目标设备是ARM64如Surface Pro X。MSIX不支持跨架构运行。解决方法1在目标架构设备上导出最可靠方法2用MakeAppx重新打包指定-a ARM64需原始源文件方法3确认应用是否提供多架构Bundle.msixbundle优先下载Bundle而非单架构MSIX。4.4 现象Get-AppxPackage能查到包但Export-AppxPackage报错Package not found原因该包是“用户级安装”User context而PowerShell默认以管理员运行Get-AppxPackage查到的是当前用户上下文包但Export-AppxPackage需在同一用户上下文执行。解决# 切换到目标用户上下文如当前登录用户 $currentUser [System.Security.Principal.WindowsIdentity]::GetCurrent().Name Start-Process PowerShell -ArgumentList -Command {Export-AppxPackage -Package Ollama.Ollama_1.0.0.0_x64__8wekyb3d8bbwe -OutputPath C:\temp\export.msix} -Verb RunAs # 或更简单直接在非管理员PowerShell中运行导出命令4.5 现象安装后应用图标显示为通用白纸点击无响应原因AppxManifest.xml中uap:VisualElements节点的Square150x150Logo路径错误或图片文件未随包正确打包。Store后台会自动修正但离线MSIX不会。解决用7-Zip打开MSIX包检查Assets\Square150x150Logo.scale-100.png是否存在若缺失从原应用资源目录复制对应尺寸图标用MakeAppx重新打包makeappx pack -d C:\temp\app-assets -p C:\temp\fixed-app.msix -l终极排查口诀遇到任何MSIX安装失败先运行Get-AppxLogWindows 10 1809或Get-AppxPackage -AllUsers | Where-Object {$_.Status -ne Ok}查状态异常包再查Event Viewer → Applications and Services Logs → Microsoft → Windows → AppXDeploymentServer中的详细错误码。5. 进阶技巧用MakeAppx定制企业级MSIX包——签名、多语言、静默安装一体化导出和安装只是起点。真正落地到企业环境你需要把零散的MSIX变成可审计、可分发、可回滚的标准化交付物。MakeAppx.exeWindows SDK自带是微软官方打包工具比Store后台更可控。下面以打包一个带中文/英文双语、自签名、静默安装的Ollama定制版为例展示完整工作流。5.1 准备包结构遵循MSIX规范的最小文件树MSIX本质是ZIP但必须满足严格目录结构。以下为ollama-enterprise包的最小必要结构用记事本创建ollama-enterprise/ ├── AppxManifest.xml # 必须声明应用元数据 ├── Assets/ │ ├── Square150x150Logo.scale-100.png │ └── StoreLogo.png ├── ollama.exe # 主程序从原Store包解压获得 └── resources.pri # 多语言资源由MakePri生成关键点AppxManifest.xml必须包含Resources节点声明语言否则多语言不生效resources.pri不能手动生成必须用MakePri工具编译。5.2 生成多语言资源PRI文件支持中英切换# 步骤1创建资源映射文件resources.map ?xml version1.0 encodingutf-8? resources index nameresources / index namescale-100 / index namelang-zh-CN / index namelang-en-US / /resources | Out-File C:\temp\resources.map -Encoding UTF8 # 步骤2准备语言资源文件zh-CN\resources.resjson, en-US\resources.resjson # 示例zh-CN\resources.resjson # {DisplayName: Ollama企业版, Description: 本地大模型运行时} # 步骤3用MakePri生成PRI需安装Windows SDK makepri createconfiguration -o -cf C:\temp\priconfig.xml -of C:\temp\priconfig.xml makepri create -o -cc C:\temp\ -fv C:\temp\resources.map -pr C:\temp\ -o C:\temp\resources.pri5.3 用MakeAppx打包并签名企业分发核心# 打包-l 参数启用长路径支持-o 输出详细日志 makeappx pack -d C:\temp\ollama-enterprise -p C:\temp\ollama-enterprise.msix -l # 签名需已有.pfx证书此处用testcert.pfx示意 signtool sign -fd SHA256 -t http://timestamp.digicert.com -f C:\temp\testcert.pfx -p password123 C:\temp\ollama-enterprise.msix # 验证签名有效性 signtool verify -pa C:\temp\ollama-enterprise.msix签名要点-t指定时间戳服务器确保证书过期后包仍可信企业环境必须用OV或EV代码签名证书自签名证书需提前导入目标设备TrustedPublisher证书存储signtool verify返回Successfully verified才算真正可信。5.4 静默安装脚本集成依赖检查、权限提升、日志记录最终交付给IT部门的不应是裸MSIX而是一个带防护的PowerShell脚本# install-ollama-enterprise.ps1 param( [string]$MsixPath C:\temp\ollama-enterprise.msix, [string]$LogPath $env:TEMP\ollama-install.log ) function Log-Message { param($msg) $((Get-Date).ToString(yyyy-MM-dd HH:mm:ss)) - $msg | Out-File $LogPath -Append } Log-Message 开始安装Ollama企业版 # 检查管理员权限 if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { Log-Message 权限不足正在请求提升... Start-Process powershell.exe -File $PSCommandPath -MsixPath $MsixPath -Verb RunAs exit } # 检查依赖 if (-not (Get-AppxPackage -AllUsers | Where-Object {$_.Name -eq Microsoft.NET.CoreRuntime.3.1})) { Log-Message 缺少.NET Core 3.1正在安装... # 此处插入.NET安装逻辑 } # 安装主包 try { Add-AppxPackage -Path $MsixPath -Register -ForceUpdateFromAnyVersion -DisableDevelopmentMode -ErrorAction Stop Log-Message 安装成功 } catch { Log-Message 安装失败$($_.Exception.Message) exit 1 }为什么这比直接发MSIX强自动提权避免用户手动右键→“以管理员运行”依赖检查防止静默失败全流程日志便于IT后台审计-ForceUpdateFromAnyVersion确保旧版被覆盖避免版本碎片。我带团队做某银行信创终端预装时就是靠这套MakeAppxsigntoolPowerShell组合把原本需要3人天的手动部署压缩到1个脚本5分钟全自动完成。后来发现真正卡住进度的从来不是技术而是没人愿意花时间去读AppxManifest.xml里那几十行XML——直到你亲手改错一次uap:DefaultTile的路径才明白为什么图标总不显示。希望帮到你。本文还有配套的精品资源点击获取
返回列表