品牌定制

使用 rebrand 脚本一次性完成应用品牌替换。

Soar Tauri 有意保留了一套明确的模板身份:产品名 Soar Tauri、应用 ID com.soarstarter.tauri、slug soar-tauri,以及深链 scheme soar-tauri://。请在发布安装包、登记回调地址或为真实用户写入钥匙串之前完成替换。

品牌信息的来源

应用代码统一从 shared/constants.ts 导入品牌信息;无法导入 TypeScript 的静态配置则由 scripts/rebrand.mjs 同步更新。

Prop

Type

一次完成主要替换

所有参数均为可选项,只会修改你明确传入的值。未指定时,--homepage--repo--license 则取该仓库中的 LICENSE 地址。

pnpm rebrand \
  --name "Acme" \
  --app-id com.acme.app \
  --slug acme \
  --scheme acme \
  --email support@acme.com \
  --repo https://github.com/acme/app \
  --homepage https://acme.example \
  --license https://acme.example/license

使用 --dry-run 只预览将要修改的文件:

pnpm rebrand --name "Acme" --scheme acme --dry-run
参数修改内容
--name显示名称、Tauri 产品名与窗口名、Cargo 描述
--app-idAPP_ID 和 Tauri identifier
--slugPRODUCT_SLUG 和 npm 包名
--schemePROTOCOL_SCHEME 和 Tauri 深链注册
--emailSUPPORT_EMAIL
--repoREPO_URL 和 package 仓库;未覆盖时也用于推导主页与许可证
--homepageHOMEPAGE_URL
--licenseLICENSE_URL

脚本只会联动改写四个文件:shared/constants.tssrc-tauri/tauri.conf.jsonsrc-tauri/Cargo.tomlpackage.json

手动收尾

脚本负责已知的身份字段,不会替换所有品牌素材和部署配置。

项目需要完成的工作
应用图标运行 pnpm tauri icon path/to/1024x1024.png,重新生成 src-tauri/icons/
托盘图标编辑源 SVG,并按 docs/APP_ICONS.md 重新生成 resources/build/tray/ 下的 PNG。
截图与翻译替换演示素材以及 src/locales/{en,zh}/ 中带有产品身份的文案。
Supabase 与支付回跳在 Supabase Auth 中放行新 scheme,并让支付成功页返回 acme://billing 一类地址。
更新服务替换 src-tauri/tauri.conf.json 中的更新端点与 minisign 公钥,并为自己的源配置 UPDATE_SERVER_URL
钥匙串身份手动修改 src-tauri/src/commands/secure.rsSERVICE_NAME;当前脚本不会替换其中的 com.soarstarter.tauri。请在用户保存会话前完成。
其余原生元数据检查 tauri.conf.json 中的 publisher、homepage、copyright 和描述;src-tauri/tauri.macos.conf.json 也有独立的窗口标题。
开源声明检查 CREDITS.md 及各依赖许可证。其中提到的来源署名值得保留,但对应 MIT 许可证并不强制要求。

应用发布后再修改钥匙串服务名,会让旧条目看起来像是“丢失”。对已有用户的产品, 应设计迁移流程,而不是直接重命名 SERVICE_NAME

验证

完成手动项目后,运行应用并制作一个正式安装包:

pnpm format:check
pnpm lint:check
pnpm typecheck
pnpm test
pnpm tauri build

检查窗口与“关于”页面名称、安装包名称、bundle identifier、Dock/任务栏和托盘图标、 钥匙串服务,以及 acme://settings 这样的打包应用深链。最后搜索不准备保留的模板身份:

rg "Soar Tauri|soar-tauri|com\.soarstarter\.tauri" \
  shared src src-tauri package.json

相关页面

On this page