ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

如何把Pokémon Showdown装进桌面:NW.js应用打包、Mac签名与公证发行完全指南

如何把Pokémon Showdown装进桌面:NW.js应用打包、Mac签名与公证发行完全指南 如何把Pokémon Showdown装进桌面NW.js应用打包、Mac签名与公证发行完全指南【免费下载链接】pokemon-showdown-clientThe client for Pokémon Showdown项目地址: https://gitcode.com/gh_mirrors/po/pokemon-showdown-clientPokémon Showdown 是人气最高的在线宝可梦对战平台本仓库正是它的官方客户端源码。想要把Pokémon Showdown 桌面版装进自己的电脑核心思路很简单用NW.js 应用打包把网页客户端套上一层原生外壳再分别完成 Windows 的 NSIS 安装包和 macOS 的 Developer ID 签名与公证发行。本文带你从代码走到可安装的setup.exe和.app一步不落。为什么选择 NW.js 打包桌面版桌面版的入口就是一个极简的启动页 desktop/index.html最大化窗口、创建 Mac 菜单栏然后直接加载对战网站。整个应用本质上是一个浏览器外壳 网页前端这正是 NW.js 的舒适区。用 NW.js 的好处 独立窗口、原生菜单栏没有浏览器标签页干扰 一份网页代码同时产出 Windows / macOS 两种安装包⚡ 窗口标题、图标、开机即显show: false避免白屏闪烁都在 desktop/package.json 里几行配置搞定克隆仓库即可开始git clone https://gitcode.com/gh_mirrors/po/pokemon-showdown-client桌面版目录结构一览所有打包相关资产集中在desktop/目录官方流程文档在 desktop/DESKTOP.md文件作用desktop/package.jsonNW.js 入口与窗口配置node-remote指向对战网站域名desktop/pokemonshowdown.nsiWindows 安装脚本NSIS Modern UI含图标与安装头图desktop/make-nsis-script.js按 NW.js 文件清单自动生成安装/卸载脚本片段desktop/sign-mac-appmacOS 签名脚本遍历框架、Helper、XPC 服务逐个签名desktop/nwjs-entitlements.entitlementsHardened Runtime 权限声明JIT、动态内存等desktop/icons/、graphics-src/showdown.icnsWindows / macOS 应用图标素材 性能细节两个平台都不做 zip 打包——Windows 下index.html与package.json直接放进安装目录macOS 下放进Resources/app.nw避免每次启动解压。Windows 打包NSIS 安装包制作步骤 完整流程依据 desktop/DESKTOP.md放入 NW.js 文件把预编译的 node-webkit 解压到打包目录改名nw.exe→pokemonshowdown.exe换图标用 Resource Hacker 打开 exe把内置的 node-webkit 图标替换为icons/pokemonshowdown.ico同步脚本若文件布局有变运行make-nsis-script.js重新生成pokemonshowdown.nsi中的file/CreateDirectory/delete清单编译用 NSIS 编译 pokemonshowdown.nsi产出setup.exe安装器自带Play Pokemon Showdown启动按钮和完整卸载脚本安装到Program Files。⚠️ 小坑NW.js 在 Windows 不支持普通窗口图标所以package.json里用的是 PNG 图标icons/icon_32x32.png来保证缩放不糊。macOS 发行签名与公证完全流程macOS 是重头戏默认情况下 Gatekeeper 会拒绝运行未公证的应用解除警告需要 Apple 开发者账号$99/年 公证。共 18 步这里按阶段拆解1. 把 NW.js 改造成正式 App应用改名为Pokemon Showdown.app修改Contents/Info.plistCFBundleIdentifier设为com.pokemonshowdown.pokemonshowdown填名称与版本号并清空CFBundleDocumentTypes、CFBundleURLTypes等数组我们不想让应用去抢文件/URL 关联同步修改en.lproj/InfoPlist.strings删除其他*.lproj语言文件夹用graphics-src下的 icns 替换app.icns/document.icns新建Contents/Resources/app.nw放入index.html与package.json2. Developer ID 签名 Hardened Runtime在 Apple 开发者后台创建Developer ID Application证书导入钥匙串并记下 identity编辑 sign-mac-app 顶部的APP与IDENTITY然后运行它脚本会先收集nwjs Framework里的.dylib、Helpers、Libraries、XPCServices再对每一项执行codesign --force --deep --strict --options runtime --timestamp --sign ... --entitlements最后签名整个 App。为什么需要 entitlements 文件因为 Chromium/V8 依赖 JIT 与动态代码生成allow-jit、allow-unsigned-executable-memory等权限缺一不可否则公证必挂。验证签名codesign --verify -vvvv Pokemon Showdown.app3. 公证Notarization与 Staple# 提交公证密码用 Apple 账号的专用密码 xcrun altool --notarize-app \ --primary-bundle-id com.pokemonshowdown.pokemonshowdown \ --username [用户名] --password [专用密码] \ --file Pokemon Showdown.zip # 记下 RequestUUID约 10 分钟后查询状态 xcrun altool --notarization-info [RequestUUID] -u [用户名] # Package Approved 后钉上公证凭证 xcrun stapler staple Pokemon Showdown.app spctl -a -vvvv Pokemon Showdown.app # 最终校验最后删除旧 zip、重新压缩即可发行。发行前检查清单 ✅codesign --verify通过无 sealed resource 报错公证状态为Package Approved若为Package Invalid日志在LogFileURLspctl -a显示 accepted在未登录开发者账号的干净 Mac 上双击验证 Gatekeeper 放行干净 Windows 机器安装setup.exe确认图标、启动、卸载正常常见问题速查症状原因与对策Gatekeeper 提示无法打开未完成签名/公证或忘了重新打包 zip公证一直in progress正常需 10 分钟左右稍后再查公证Package Invalid多半是 entitlements 缺失对照 sign-mac-app 的签名命令核对Windows 窗口图标不显示NW.js 限制属正常现象任务栏/窗口用 PNG 兜底总结把 Pokémon Showdown 装进桌面并不神秘NW.js 打包负责套壳NSIS 负责 Windows 发行sign-mac-app Hardened Runtime 公证三件套负责让 macOS 安心放行。所有关键脚本和步骤文档都沉淀在desktop/目录中照做即可复现整套发布流程。【免费下载链接】pokemon-showdown-clientThe client for Pokémon Showdown项目地址: https://gitcode.com/gh_mirrors/po/pokemon-showdown-client创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表