梦叶网
纯干货:从0到1做了windows桌面应用,从开发到上线微软应用商店的完整过程
· 作者:梦叶

纯干货:从0到1做了windows桌面应用,从开发到上线微软应用商店的完整过程

这篇文章主要以记录开发经历为主,讲一下我历时1个月做的项目。目前应用下载量很低,并没有得到市场认可。

这篇文章主要以记录开发经历为主,讲一下我历时1个月做的项目。目前应用下载量很低,并没有得到市场认可。

简单介绍

应用名称:Pomodoro Mini

应用商店链接:https://apps.microsoft.com/detail/9N1JBMJ3R5D3

技术框架:tauri + vue3 + tailwindcss

开始时间:2027年7月2日

开发工具:Trea IDE

做了哪些事情

  1. APP开发
  2. 注册并上架到微软合作伙伴中心,目前应用已迭代到第三个版本
  3. 开发官网:https://app.dreamleaf.top/tomato-mini
  4. 外网宣发:x.com平台发布日常;发布到Product Hunt;在raddit平台上面发帖(结果被拒了);其他小平台发布

为什么选择tauri开发

之前用electron开发应用,开发包太大了,安装接近100M,后来接触tauri开发,安装包大小20-40M左右,感觉真香,于是现有项目也都改成了tauri开发。

虽然tuari开发依赖rust语言,我也没有学过,但是还好现在都是AI辅助开发,加上试错0成本,语言已经不是障碍,另外对于追求性能的人来说,rust开发真的是不错的选择。

应用开发

tauri应用依赖系统原生浏览器组件,windows桌面应用依赖webview2, 尤其是打包成MSIX安装包,就意味着需要放弃一部分用户(部分企业版和精简版未预装webview2),不过大部分用户在更新系统时自动推送了webview2安装更新。

创建项目

参考Tauri开发文档

pnpm create tauri-app
# or
npm create tauri-app@latest

然后根据引导创建自己的tauri项目。

注册和添加应用

前往Microsoft 合作伙伴中心,注册好后,点击应用和游戏

然后点击新产品,选择MSIX或AWP应用,然后填写你的应用名称。如果你的应用需要发行到全球的话,最好去一个英文名称。

然后可以看到应用的一些信息,这些信息需要对照填写到项目的配置文件中

  • Name 包名称
  • Publisher 发布者(长串 CN=xxxxxxxx‑xxxx‑xxxx‑xxxx‑xxxxxxxxxxxx)
  • PublisherDisplayName 显示的发布者名称

应用配置

MSIX应用安装包打包方案:

  • tauri.conf.json文件配置webviewInstallMode:
...
"productName: "<应用名称>",
"identifier": "<包名>",
...
"bundle": {
    ...
    "windows": {
      "webviewInstallMode": {
        "type": "skip"
      }
    },
...
  • 准备一张高清应用APP图标,生成全套商店图标
pnpm tauri icon ./assets/icon.png
  • 安装winapp: winget install Microsoft.WinApp.CLI

  • 在项目根目录执行初始化: winapp init,按照提示

    • Package name:粘贴合作伙伴中心的Name
    • Publisher:粘贴合作伙伴中心长串 CN=xxxx‑xxxx‑xxxx‑xxxx‑xxxxxxxxxxxx
    • Version:1.0.0.0(4 段版本号,微软商店强制格式,tauri 的 1.0.0 → 写成 1.0.0.0)

    sdk选择稳定版Setup Stable SDKs (Windows SDK 10.0.28000.2526, Windows App SDK 2.3.1)

  • 检查Package.appxmanifest中Executable字段exe文件路径,一般是 src‑tauri/target/release/你的应用.exe,以下字段也需要和伙伴中心的字段一一对应,填写错误将不能上线,可以直接粘贴过来

    • DisplayName:应用名称

    • PublisherDisplayName:显示的发布者名称

    • Publisher:发布者,CN开头的长串

    • Version: 版本号,MSIX 版本号为四段格式:主版本.次版本.构建号.修订号,第四位修订号是微软商店预留字段,仅由商店后台使用,开发者打包时必须固定设为 0

  • 然后替换Assets目录中的应用图标,注意图片宽高不要变动,其中WideTile为宽磁贴图片,不需要可以删除,对应的Package.appxmanifest也需要删除uap:DefaultTile

  • 用npm run tauri build --no-bundle生成纯exe(未打包)文件

  • 新建一个文件夹publish, 将要打包的release 下 exe、dll、资源文件复制到publish目录中

    如果直接打包release目录,会把不相关的文件也打包进去,这样app体积会很大

  • 使用winapp命令打包为MSIX文件

    winapp pack <publish打包目录> `
      --manifest ./Package.appxmanifest `
      --output ./out/<应用文件名>_<版本号>_x64.msix `
      --verbose

要发布的安装包不需要本地签名,只有本地安装测试包才需要。

额外参数说明:

  • --output:自定义输出的 msix 文件路径和文件名,默认会自动生成在当前目录
  • --verbose:输出详细打包日志,出错时方便排查

应用上架

需要填写完所有tab,如果有错误,按要求修正错误,一共 6 个 Tab 要填完

  • 定价和可用性:免费 / 付费,销售地区;个人可以设置付费下载 如果选择付费,则需要填写税务信息。税务信息在右上角:设置图标->账户设置->付款和税务->Payout and tax profile assignment填写

    这里填写起来比较麻烦,需要有耐心,一步一步按照引导去填写。不知道怎么填写可以问问豆包。

    • 需要填写W-8BEN 税表,用于证明你是中国税务居民、非美国纳税主体

      国内纳税人识别号为为身份证号,美国纳税人识别号没有可以留空

    • 设置付款收款账户:新建付款配置文件,中国地区个人开发者仅支持电子银行转账方式收款

      其中CNAPS 号,即你银行卡开户行的 12 位联行号,可通过银行客服、手机银行「开户行信息」查询到,输入正确后会自动带出银行名称

    • 收益类型选择:收益类型 AdsRevenue 和 sell

      需要税务信息审核通过以及收款配置生效后才能选择,选择前需要对这两个选择编辑,绑定税务信息和选择币种,必须两个编辑完成后,才能选择,付费应用购买的话,这里选择sell即可

  • 属性:分类、系统最低版本;必须填写隐私政策 URL(审核必查,如果应用收集用户数据必须要有;完全不收集也要声明隐私页面)

    可以填写自己的网站主页,建设自己的APP主页用于宣传。

  • 年龄分级:问卷勾选,生成分

  • 包【核心】 :上传上面生成的.msix文件;系统校验包身份信息是否匹配预留的 App

    程序包接受验证警告:你需要先请求批准,才能在你的应用中使用以下受限功能: runFullTrust。

    这是正常的验证预警,不是报错,完全不需要提前单独申请批准,也不会阻碍你提交。所有 Tauri / Electron / Win32 转 MSIX 的桌面应用都会触发这条提示,个人开发者的正常工具类应用提交后审核会自动通过。在受限功能说明的文本输入框,填入一段清晰的理由即可,这个在最后一个

  • Microsoft Store 一览:商店展示素材:截图(至少 1 张,1366×768 以上)、描述、标题、功能说明

  • 发布编辑:默认验证通过后立即上线,这里可以填写受限功能说明

    系统要求至少一种语言完成。

填完全部 tab,点击提交审核。

应用推广

APP网站建设

  • SEO

    • 完善描述、关键字长尾词
    • 添加logo,
    • 唯一H1标题
    • og卡片

    如果要全球推广,则以英文为主

  • APP模块建议

    • 产品英雄图
    • 功能介绍
    • 产品与竞品对比
    • 产品截图
    • 下载按钮
    • 其他平台待开发订阅
    • 底部:FQA/隐私政策/更新日志/反馈渠道(github、x.com、email)

宣传

说实话,目前还没有什么效果,可以问问豆包,这里给出几点建议。

首先,社交平台发帖的时候暂时不要挂链接,分享一下自己的开发经验即可,至少这样被禁的可能性低一些。多浏览和评论其他的帖子,先提高账号活跃度。

其次,在Product Hunt/AlternativeTo这类平台提交自己的应用,挂上官网链接,慢慢积累曝光。

其余的我也在摸索,有好的建议欢迎大家留言。