当前位置: 首页 > news >正文

UniGetUI 离线安装包制作完全指南:4步搞定无网环境部署

UniGetUI 离线安装包制作完全指南:4步搞定无网环境部署

【免费下载链接】UniGetUIUniGetUI: The Graphical Interface for your package managers. Could be terribly described as a package manager manager to manage your package managers项目地址: https://gitcode.com/GitHub_Trending/wi/UniGetUI

UniGetUI 是 WinGet、Scoop、Chocolatey 等包管理器的图形界面工具,一套界面管好所有装包渠道。默认安装流程依赖在线拉取运行时组件,内网或断网机器上很容易卡住。这篇文章带你从源码出发,产出一个自包含一切依赖的 UniGetUI 离线安装包,拿到无网机器上双击就能装、装完就能用。

先弄清「离线」是怎么做到的

整个思路拆开看其实就三层:

  1. 应用自包含src/Directory.Build.propsPublishSelfContained=true,发布产物把 .NET 运行时一起打进unigetui_bin/,目标机器不用单独装 .NET。
  2. 安装包自包含:Inno Setup 脚本 UniGetUI.iss 把整个产物目录、以及 VC++ 运行时、WebView2 等依赖的安装器全部压进一个 EXE。
  3. 文件自检:产物里附带的IntegrityTree.json(SHA256 哈希表)让应用启动时能核对自己有没有缺文件,这正是离线部署最怕的问题。

只要这三样齐了,装到断网机器上就是一个纯本地过程。

环境怎么备齐:.NET 10 SDK 与 Inno Setup 6

在一台Windows 10/11 64 位的联网机器上准备工具链,这里就是未来唯一需要网络的环节:

  • .NET 10 SDK:版本由 global.json 锁定(10.0.103,允许 rollForward),装高版本 SDK 即可满足。
  • Inno Setup 6:只用它的命令行编译器ISCC.exe,装在默认位置即可被构建脚本自动发现。
  • 克隆源码:
git clone https://gitcode.com/GitHub_Trending/wi/UniGetUI cd UniGetUI

为什么要在联网机上做?因为 Inno Setup 的依赖机制(见 InstallerExtras/CodeDependencies.iss)是在安装时才去下载 VC++/WebView2——离线包要么提前把这些依赖装进目标系统,要么安装时用开关跳过,后面细说。

构建产物怎么出:自包含 publish + 完整性树

UniGetUI.iss[Files]段只认一个目录:仓库根目录下的unigetui_bin/。先把 Avalonia 主工程发布成 Windows x64 自包含产物,再把输出挪进unigetui_bin/

dotnet publish src/UniGetUI.Avalonia/UniGetUI.Avalonia.csproj -c Release -p:Platform=x64 -r win-x64

产物就位后,生成完整性树:

pwsh scripts/generate-integrity-tree.ps1 -Path unigetui_bin

这一步会递归计算每个文件的 SHA256 并写入unigetui_bin/IntegrityTree.json。做完的效果:unigetui_bin/里既有UniGetUI.exe和全部运行时 DLL,又有一份可被运行时IntegrityTester核对的哈希清单,断网机启动应用时会用它自检文件完整性。

打包命令一次跑通:ISCC 与 iss 脚本要点

打包前先看 UniGetUI.iss 里三处和离线强相关的配置,心里有数再动手:

  • [Files]:部署unigetui_bin\*全量文件,外加一份安装包自身(UniGetUI.Installer.exe)用于日后免重装自修复。
  • [Tasks]:提供regularinstall(常规安装,写注册表、建快捷方式)和portableinstall(便携安装,只往目录里放一个ForceUniGetUIMobile标记文件)两种模式,便携版适合 U 盘带走。
  • SignTool=azsign:官方构建会数字签名,本地构建没有证书,打包前把它注释掉、并把SignedUninstaller改为no——scripts/build.ps1会自动完成这两处临时改写并恢复。

然后一条命令出包:

ISCC.exe UniGetUI.iss /Ooutput

或者偷懒让 scripts/build.ps1 一条龙跑完:测试 → publish → 整理unigetui_bin/→ 刷新完整性树 → 找 ISCC 打包 → 输出 SHA256 校验和文件。它会自动禁用签名、自动定位ISCC.exe,产物统一落在output/目录,还附一份checksums.x64.txt方便你分发包时校验。

离线依赖怎么补齐:VC++、WebView2 与 netcorecheck

UniGetUI 本体自包含之后,剩下的外部依赖只有三个,处理方式各不相同:

依赖作用离线处理
VC++ 2015-2022 运行时部分组件依赖的 C++ 运行时安装器默认在线补装;离线机上要么预装,要么安装时带/NoVCRedist跳过
WebView2 运行时应用内网页内容渲染同上,预装或安装时带/NoEdgeWebView跳过
netcorecheck_x64.exe检测目标机 .NET 环境已随仓库放在 InstallerExtras/ 目录,打包时自动附带,无需额外处理

依赖探测逻辑在 InstallerExtras/CodeDependencies.iss:它先查注册表判断 VC++ 和 WebView2 是否已装,已装则完全跳过下载。所以如果你的离线机提前用别的渠道装好这两个组件,安装包全程零联网即可完成;反之就用/NoVCRedist /NoEdgeWebView参数跳过,接受目标机可能缺少对应运行时的风险。

成果怎么验证:断网装机实测

拿到output/UniGetUI Installer.exe后,建议在一台断网的虚拟机(或真实内网机)上走一遍:

  1. 核对产物:用output/checksums.x64.txt里的 SHA256 值比对安装包,确认拷贝过程没坏文件。
  2. 常规安装:运行安装包选「常规安装」,装完启动 UniGetUI,确认能列出 WinGet/Scoop 等已装包——这一步顺带验证了完整性树自检通过。
  3. 便携安装:另选一台机器,装时勾选便携模式(portableinstall),它不写注册表、不建快捷方式,目录整体拷走就能在任意机器运行,是 U 盘分发场景的最优解。
  4. 断网复验:全程不插网线,安装与启动均应无网络请求失败提示。

常见坑与延伸阅读

  • 启动报缺文件 / 完整性校验失败unigetui_bin/里动过文件却没重新生成清单,重跑一次scripts/generate-integrity-tree.ps1 -Path unigetui_bin再打包即可。
  • ISCC 报错找不到签名工具:确认SignTool=行已注释、SignedUninstaller=no,别用官方签名配置打本地包。
  • 构建时找不到 ISCC:说明 Inno Setup 6 没装或没装在默认路径,装好后重跑,或给build.ps1-SkipInstaller先出 zip 再手动打包。
  • 想进一步理解安装器行为(进程杀活、更新标记、自修复部署),直接读 UniGetUI.iss 的[Code]段;命令行与 IPC 能力可查 docs/CLI.md;构建体系与发布约定的权威说明在 AGENTS.md。

【免费下载链接】UniGetUIUniGetUI: The Graphical Interface for your package managers. Could be terribly described as a package manager manager to manage your package managers项目地址: https://gitcode.com/GitHub_Trending/wi/UniGetUI

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4202160.html

相关文章:

  • G-Helper 笔记本风扇控制:5 分钟画出专属 ROG 散热曲线
  • 胡桃工具箱 Snap.Hutao 完全指南:原神玩家的抽卡统计、角色培养与资源管理桌面工具
  • 你数过的原神抽卡记录去哪了?用 genshin-wish-export 把祈愿记录留在本地
  • CyberStrikeAI:3分钟上手的AI安全测试工具完整指南
  • 免费窗口大小调整工具 Window Resizer 完整使用教程:三步强制调整任意窗口大小
  • 从 SKILL.md 到按需上下文,彻底理解 AI Agent Skill 的 Progressive Disclosure
  • 系统性能优化实战:从定位瓶颈到解决问题
  • RootBeer Root 检测:给 App 加设备 root 校验的 5 分钟实操笔记
  • 如何在 Windows 上不改系统文件地应用第三方主题:SecureUxTheme 完整指南
  • SysDVR 教程:免费把 Switch 游戏画面串流到电脑,完整指南
  • Argos Translate 离线翻译指南:3 个落地场景与本地部署快速上手
  • 多台远程桌面管理怎么做?5 分钟跑通 RDCMan 的完整路径
  • DeepSeek 的开源策略是什么?开源模型与 API 闭源版本之间有何区别?
  • foobox-cn:3 步给 foobar2000 换肤
  • Aimmy AI瞄准辅助完全上手指南
  • PX4 EKF2 源码解析(二):接口层、算法层与符号生成层
  • WPF + .NET 8 桌面客户端项目计划(Host 托管与通信基础设施篇)
  • 常州燃气/电热水器维修上门服务-欧米到家持证师傅正规检修|深度排查不出热水漏水忽冷忽热等故障
  • 徐州燃气/电热水器维修上门服务-欧米到家持证师傅正规检修|深度排查不出热水漏水忽冷忽热等故障
  • 指令数据工程:从清洗、筛选到构造完美对齐数据集的实战经验
  • 本地化工具调用新范式:基于ONNX加速Qwen系列模型的函数推理实战
  • STM32F407移植LVGL与GUI Guider实战:嵌入式图形界面开发全流程解析
  • AssetRipper:从 Unity 游戏文件提取资源、还原完整工程的免费工具
  • RPCS3中文设置指南:怎么把界面改成中文
  • Agent工具版本管理与灰度发布:避免新增工具导致老流程崩溃
  • WebGL/Three.js/WebGPU 图形渲染 3D 可视化:WebGL、Three.js 与 WebGPU 3D 可视化实践
  • 开题、写稿、降重、排版、答辩PPT:2026毕业论文AI工具分阶搭配表
  • Godot桌面发布实战:Windows、macOS、Linux 三步装进玩家电脑
  • M3u8Downloader_H 批量下载 M3U8 视频:一次导入几十个链接的完整操作
  • Shell脚本编程实战:从零基础到自动化运维利器