electron应用提交到Windows应用商店全流程

在这篇文章中,我将会记录将一个electron应用提交到Windows应用商店的流程。
基本概况:

整体步骤

1. 建立你的electron应用

假设你已经拥有了一个可以正常运行、正常打包的的electron应用。
我的应用基于vue,使用的是electron-builder进行打包,并使用nsis来封装应用安装包。
正常情况下,当你打包完成后,你会在build文件夹下获得一个dist_electron的目录,这里面是未封装的exe程序。

2. 安装Windows SDK

前往以下网址,根据你的系统版本,下载并安装Windows SDK
Windows SDK
安装完成后,记录下你的SDK安装地址,稍后要用:C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64

3. 注册微软合作伙伴账号

根据官方说明,你需要前往Microsoft 合作伙伴中心,登录你的微软账号,然后根据引导注册一个开发者账号。
微软的开发者账号是绑定在微软账号上的,并且对个人和企业收取不同的费用,和苹果的年费会员制不同,这个费用是一次性的。个人19美元,公司99美元。

注意,在注册开发者账号时,省、市使用拼音首字母,不要用中文,否则很容易出现2201错误导致无法继续

注册完账号后,右上角进入账户设置并设置你的默认“付款配置文件和税务配置文件”。任何在微软商店的收入都将通过这个配置文件支付给你。
在设置税务配置文件时,很容易报错,务必注意当要求你输入常住地址时,下方选择“该地址不包含邮政信箱”,在下一页的邮寄地址中再录入一遍你的地址。

4. 注册你的应用

进入合作伙伴中心,打开控制台,选择应用和游戏


QQ截图20230819173043.jpg

点击“新产品”,选择“msix或pwa应用”


QQ截图20230819173206.jpg

在后续页面中设置你的应用名称并保存。其他信息你可以开始填了,比如隐私政策页面、定价、网站、联系方式等等,先把能填的都填写并保存。
QQ截图20230819190638.jpg

现在进入左侧菜单上的产品管理-产品标识,我们会看到包/标识/名称、包/标识/发行商、包/属性/发布者显示名称,把这三个记下来,待会要用


QQ截图20230819190801.jpg

5. 准备app图标

在项目下新建icons文件夹,放入icon256.ico作为应用的图标
在icons下新建appx目录,放入以下4个图标文件(文件名必须完全相同),稍后会用到

  • StoreLogo.png 商店的图标,512*512
  • Square150x150Logo.png 商店和开始菜单磁贴的图标,150*150
  • Square44x44Logo.png 任务栏和开始菜单列表中的图标,44*44
  • Wide310x150Logo.png 开始菜单长条形磁贴的图标 310*150

6. 打包生成.appx包

以下内容可以参考Electron-builder AppX

//vue.config.js
module.exports = {
  pluginOptions: {
    electronBuilder: {
      builderOptions: {
        productName: "Your product name",
        directories: {
          buildResources: "./icons",
        },
        win: {
          icon: "./icons/icon256.ico",
          target: ["nsis", "appx"],
        },
        appx: {
          identityName: "Your app identity name",
          publisher: "Your app publisher identity",
          publisherDisplayName: "Your app publisher name",
          applicationId: "Your app id",
          languages: ["zh-CN"],
        },
      },
    },
  },
};
  • buildResources: "./icons": 将这个文件夹下的文件打包进最终目标中
  • icon: "./icons/icon256.ico": 应用图标
  • target: [“nsis","appx"]: 使用nsis打包、生成appx包
  • identityName、publisher、publisherDisplayName这三个就是刚才从合作伙伴中心上面记下来的三个字段


    QQ截图20230819221827.jpg
  • applicationId: 你可以用你的应用名称或是appid,自定义的。最好是用builderOptions.appId
  • languages: 指定你的程序语言,如果这个为空,那么就默认是en-US,这也会显示在微软商店中

接下来执行

npm run electron:build

打包生成你的应用,你会在./build目录下看到你的appx安装包。

7. appx包的本地测试

此时双击安装appx包是无法安装的,会提示未签名无法使用,所以我们现在要创建一个证书来自签名并运行这个应用。
进入win11设置,隐私和安全性,开发者选项中,打开开发者模式


QQ截图20230824005122.jpg

然后回到项目文件夹下,新建code-signing文件夹
全局安装electron-builder

npm i electron-builder -g

到命令行中创建一个自签名用的证书。前往合作伙伴中心中的“包/标识/发行商”,找到那个CN=XXXXX,运行下面的命令(注意去掉“CN=”只要XXXXX):

electron-builder create-self-signed-cert -p XXXXX

弹出的框选择None


QQ截图20230824010050.jpg

一个证书就创建好了:


QQ截图20230824010124.jpg

将这个cert文件和刚才打包好的appx包都复制到code-signing下:


QQ截图20230824010338.jpg

确保系统中安装了Visual Studio,在开始菜单中找到Developer Command Prompt并打开:


QQ截图20230824010558.jpg

cd到code-sigining文件夹:


QQ截图20230824010753.jpg

运行

SignTool sign /fd SHA256 /a /f XXXXX.pfx unsignedapp.appx

即可完成签名


QQ截图20230824012909.jpg

这时候你双击你的appx就可以安装并进行本地测试了:


QQ截图20230824012936.jpg

如果还是提示签名问题,则按这个教程添加一下证书

8. appx包的兼容性问题

  1. child_process.spawn无法运行
    在生成appx后的应用中无法运行以下代码,会提示 "xxx.exe 缺少部署内容。请参阅 windows 审查文档"。
child_process.spawn(cmdline, [args], {
  shell: true
})

此时务必将shell改为false,或是使用child_process.execFile来执行第三方代码。

  1. 迷之userData
    当在electron中运行以下代码获取临时文件夹时,
app.getPath("userData")

正常情况下应该返回
C:\Users[username]\AppData\Roaming[appname]
而实际上AppX包的临时文件夹可能是
C:\Users[username]\AppData\Local\Packages[appid]\LocalCache\Roaming[appname]
因此当你把app.getPath("userData")当做参数传入一些第三方工具时,这个地址可能会获取不到。这可能是一个electron bug。

因此建议使用app.getPath("temp")文件夹存储临时文件

9. 如何在上传商店后测试

微软也有类似苹果Testflight的机制,可以在微软签名后进行内测。
前往商店新建一个提交,在定价和可用性那里选择免费,并在可见性一栏选择“特定受众”,新建或是选择一个用户组,这个用户组请务必包括你自己的邮箱。


QQ截图20230902115411.jpg

然后回到合作伙伴中心的“应用和游戏”首页,左侧选中“促销代码”并新建兑换码


2.jpg

这个版本提交后就会很快通过,你可以在刚才“定价和可用性”上面找到应用的链接,进入之后点击兑换代码,吧刚生产的兑换码输入进去,你就可以直接下载微软签名的版本进行测试了。

10.全部测试完成后你就可以新建一个公开的提交,然后上传到应用商店了。

一些注意事项:

  • 你至少需要准备两张海报,分别是1280 * 800和1080 * 1080用于应用商店的展示
  • 你需要一个网站来作为软件的官网和隐私政策的页面,你还需要一个邮箱作为技术支持邮箱
  • 在提交页面,商店会提示你应用有runFullTrust权限,需要提供原因,这时候在下面填写"这是一个electron应用"即可
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容