ARTICLE DETAIL

资讯详情

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

Squirrel.Windows 安装调试实战:用 Update.exe 命令行模拟安装与首次运行

Squirrel.Windows 安装调试实战:用 Update.exe 命令行模拟安装与首次运行 开发工具【免费下载链接】Squirrel.WindowsAn installation and update framework for Windows desktop apps项目地址https://gitcode.com/gh_mirrors/sq/Squirrel.Windows点击查看免费下载Squirrel.Windows 是一个面向 Windows 桌面应用的安装与更新框架仓库根目录 README.md其安装流程由Setup.exe引导、Update.exe执行。当应用装不上或装完不启动时最有效的排查手段是绕过图形化引导直接在命令行里手动重放安装的每一步。本文围绕官方文档 debugging-installs.md 的调试方法结合仓库源码讲解两条核心命令--squirrel-install与--squirrel-firstrun的工作原理、适用前提与完整排查路径。核心思路把安装过程拆开手动执行文档给出的调试前提是安装失败时应用的文件其实已经通过Setup.exe落到了本机因为Setup.exe会先把Update.exe和最新版本包解压到用户目录再调用Update.exe完成安装所以问题通常出在后续的收尾步骤——创建快捷方式、写注册表、触发应用首次运行等。此时直接进入应用目录用Update.exe手动重放这些步骤即可定位问题C:\user\AppData\Local\MyApp Update.exe --squirrel-install 1.0.0 C:\user\AppData\Local\MyApp Update.exe --squirrel-firstrun第一条命令模拟安装完成后的收尾创建快捷方式后立即退出见 docs/using/debugging-installs.md。第二条命令模拟首次启动启动你的应用。两条命令都要求你的应用是Squirrel-aware的即在程序启动入口尽早调用SquirrelAwareApp.HandleEvents(...)见 SquirrelAwareApp.cs否则命令会被当作普通命令行参数处理什么都不会发生——这正是很多调试无反应案例的根因。命令背后的调用链源码级验证1.--squirrel-install version触发 onInitialInstallSquirrel 的收尾钩子由 UpdateManager.ApplyReleases.cs 中的invokePostInstall驱动。在真实安装Setup.exe→Update.exe --install流程中它会对每个 Squirrel-aware 可执行文件依次传入--squirrel-install 版本号你的应用通过SquirrelAwareApp.HandleEvents收到该参数后会执行你在onInitialInstall回调里写好的逻辑创建快捷方式、文件关联等然后调用Environment.Exit(0)退出SquirrelAwareApp.cs。手动执行Update.exe --squirrel-install 1.0.0等于直接重放这一步Squirrel 会扫描应用目录下的可执行文件找到 Squirrel-aware 的应用并运行它们。如果快捷方式没建出来问题几乎一定出在onInitialInstall回调内部比如路径写错、目录权限不足。2.--squirrel-firstrun触发 onFirstRun首次安装流程中Squirrel 在收尾完成后会以不等待的方式启动应用并传入--squirrel-firstrun见 UpdateManager.ApplyReleases.csvar firstRunParam isInitialInstall ? --squirrel-firstrun : ; squirrelApps .Select(exe new ProcessStartInfo(exe, firstRunParam) { WorkingDirectory Path.GetDirectoryName(exe) }) .ForEach(info Process.Start(info));在应用侧HandleEvents对--squirrel-firstrun的处理与其它钩子不同执行完onFirstRun回调后应用不退出而是继续正常启动SquirrelAwareApp.cs。因此文档建议在onFirstRun里做欢迎页之类的首次启动提示而主程序照常运行。手动执行Update.exe --squirrel-firstrun直接重放这一步用于验证应用能否被正确启动——如果这一步应用起不来问题出在应用自身如缺少依赖、配置损坏与 Squirrel 安装流程无关。3. 为什么路径必须是%LocalAppData%\MyAppSquirrel 的安装根目录固定为用户级应用数据目录%LocalAppData%\MyApp这是为了确保普通用户也有写入和执行权限。其目录结构为packages存放下载的 nupkg 包 按版本号命名的app-x.y.z应用目录见 install-process.md\%LocalAppData%\MyApp \packages MyApp-1.0.0.nupkg MyApp-1.0.1-delta.nupkg MyApp-1.0.1.nupkg \app-1.0.0 MyApp.exe \app-1.0.1 MyApp.exeUpdate.exe就放在这个根目录安装时由 Program.cs 负责拷贝调试时务必在这个目录下执行命令否则--squirrel-install找不到正确的应用上下文。完整排查路线图把文档的调试方法与源码行为结合推荐按以下顺序定位问题确认文件已落地检查%LocalAppData%\MyApp下是否存在Update.exe、app-1.0.0版本号对应与packages\RELEASES。若Setup.exe在解压阶段就失败SquirrelSetup.log会记录原因见下文日志。手动执行--squirrel-install 版本若返回码为 0 且快捷方式出现说明收尾逻辑正常若快捷方式缺失检查应用是否调用了SquirrelAwareApp.HandleEvents以及onInitialInstall回调是否抛异常。手动执行--squirrel-firstrun若应用能正常启动说明安装链路本身健康问题在真实安装时首启触发的环境差异如 UAC、杀毒软件拦截。查看日志Squirrel 会把Squirrel-动作.log写到应用目录卸载场景写到临时目录日志行格式为[日期] 级别: 消息见 Program.cs 的SetupLogLogger其中的异常堆栈通常是定位onInitialInstall内部错误的直接线索。调试命令与真实安装的关系手动执行的这两条命令与真实安装共享同一套收尾逻辑真实安装走的是 UpdateManager.ApplyReleases.cs 的invokePostInstall它内部为 Squirrel-aware 应用拼接的正是--squirrel-install version与--squirrel-firstrun参数。区别仅在于真实安装由Update.exe --install统一驱动且安装成功后快捷方式的创建发生在invokePostInstall里手动调试时你只重放钩子执行这一步跳过了解压、复制文件等前置动作。因此手动命令返回成功、但真实安装仍失败时问题几乎必然出在Setup.exe的前置阶段——此时应回到 install-process.md 描述的流程逐项核对 .NET Framework 检查、目录创建、Update.exe解压等步骤前置逻辑位于 winmain.cpp 与 UpdateRunner.cpp。注意事项与限制命令必须是 Squirrel-aware 应用HandleEvents未调用时Update.exe --squirrel-install会被当成普通参数命令静默成功但什么都不做从 SquirrelAwareApp.cs 可见参数数量不符或未命中--squirrel-*时直接返回。版本号要与目录对应--squirrel-install 1.0.0里的版本号应与你app-1.0.0目录一致它是钩子回调的入参ActionVersion用于应用自行判断当前版本。执行目录固定命令应在%LocalAppData%\MyAppUpdate.exe所在目录执行不要在其它目录调用。Windows 环境Squirrel 的完整安装/卸载/快捷方式能力面向 Windows调试命令同样以 Windows 为运行前提。参考文档调试安装 — 本文核心依据安装流程详解 —Setup.exe与Update.exe的分工更新流程详解 —--squirrel-updated等钩子触发的更新链路Squirrel 命令行参考 —Update.exe全部命令与选项SquirrelAwareApp.cs — 钩子分发的入口实现UpdateManager.ApplyReleases.cs —invokePostInstall收尾逻辑Program.cs —Update.exe的命令解析与日志实现赞分享开发工具【免费下载链接】Squirrel.WindowsAn installation and update framework for Windows desktop apps项目地址https://gitcode.com/gh_mirrors/sq/Squirrel.Windows点击查看免费下载相关推荐Squirrel.Windows 安装全流程指南Setup.exe 引导器、目录布局与首次运行Squirrel.Windows 安装全流程指南Setup.exe 引导器、目录布局与首次运行 本文是 Squirrel.Windows 快速入门指南Get开发工具如何安装 mise 并运行第一条工具命令完成首次使用如何安装 mise 并运行第一条工具命令完成首次使用 如果你刚接触到 mise一个管理开发工具、环境变量和任务运行器的 CLI要完成的目标是把 mis开发工具CLILivePortrait终极指南三步打造栩栩如生的人像动画LivePortrait终极指南三步打造栩栩如生的人像动画 LivePortrait是一款革命性的人像动画生成工具它能将静态肖像照片转化为生动的动画视频让人工智能计算机视觉媒体生成数字人创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表