简 述: 详细介绍如何上架Windows商店的流程,配上流程图!用自己写的 Sunny 截图 应用软件如何上架到 微软商店 | Microsoft Store 和 Deepin Store 等;

即使现 2024 年,但这份指南的详细程度也是的网上首份的,亦含 Linux 商店的上架流程,敬热爱,敬开源,敬自己;

[TOC]


本文初发于 “偕臧的小站“,同步转载于此。


相关文章


上架 App Store

写好的 EXE,添加了应用代码签名之后,是很想上架到应用商店
于上一年写了好几个跨平台的桌面应用程序,成功发布之后,添加了应用代码签名之后,接着就是想上架到应用商店

  • ThinkyMate』: 一款简洁且易用的 ChatGPT & AI 的桌面应用程序,支持ChatGPT 和星火讯飞大模型,以及语音转文本(STT)和文本转语音(TTS)等功能。官网: https://thinkymate.com/
  • Sunny』: 一款简洁且漂亮的截图 & 钉图的软件工具,亦支持图片翻译和OCR,支持 Windows,MacOS,Linux 平台。官网: https://sunny.xmuli.tech
  • FLIPPED』: 一款简洁且漂亮的截图 & 钉图的软件工具,定位于隐私安全,无任何联网功能,亦是 Sunny 的上一代。官网: https://flipped.xmuli.tech

上架 Microsoft Store 流程

流程图

一图胜千言,完整的上架审核的流程的重难点和提供解决方案。


上架步骤

注册 Microsoft 开发者账号,个人约 $19,永久买断制度; 企业版本的 约 $99;

可以上架常规的 EXE、 MSI 以及 MSIX,这些等,只需要签名即可。

*.msi 通常是企业用来批量推送静默升级和安装用的; *.msix 是微软商店推荐的打包格式,类似于一个沙盒,对权限等管理的比较严格,属于 UWP 的效果。

必定会遇到的坑🕳有:

  • 准备工作

    • 中文语言注册官网存在 bug,需要 F12 修改下代码

    • 购买代码签名证书,摸索不同类型的 EV / Standard 证书签名;费用:$ 几百-几千🔪/每年

    • 有自己的官网域名,且备案;费用:¥数百

    • 购买对象存储,以及子域名的 DNS 解析,设置 Https 直链下载;费用:¥数百

  • 上传和微软团队审核

    • 确保自己的 https 可以上传和下载无虞
    • EXE 必须支持命令行默认安装
    • 安装之前对于 vc_redist.x64.exe 的检测和静默安装
    • 能够过 Microsoft Defender SmartScreen
      • 首先 Defender SmartScreen 必须不会报毒
      • 满足上一条基础上,其次 Defender SmartScreen 还不能够提示:不知道是否有毒
    • 提供用户隐私保护 和 遇到问题解决得 wiki 得 RUL
    • 软件功能得主功能是没有 bug,且账号类需要提供测试密码等
    • 可能好多天都没有进度,无任何变化

值得记录的一些重难点

①静默安装

Sunny 截图也能够支持静默安装;

# innosetup制作的 exe 静默安装,其参数为 /silent /norestart
# msi 静默安装参数  BasicMSI.msi /qn  需要管理权限运行 CMD 

Sunny_setup_msvc_1.3.0_x64.exe" /VERYSILENT           # 不会出现安装向导(MS 上架用这个)
Sunny_setup_msvc_1.3.0_x64.exe" /silent /norestart    # 会出现安装向导

Note: url1 url2

②微软运行时库的静默安装和检测

vc_redist.x64.exe 在自己软件安装之前,是必须先检测下,和安装之前默认安装此运行时依赖;

我的解决方案是 通过 Inno Setup 写一段 .iss 脚本

procedure InstallVCRuntime( );
var
  szAppName, szParam, szExecutable, szArchitecture, szVCRuntimeInstalled, szFileExists: String;
  nRetCode: Integer;
  bFileExists, bVCRuntimeInstalled: Boolean; // 定义一个布尔变量
  
begin
  szArchitecture := '{#MyArchitecture}';
  if szArchitecture  = 'x64' then
  begin
    szAppName := 'vc_redist.x64.exe';
  end
  else
  begin
    szAppName := 'vc_redist.x86.exe';
  end;

  szExecutable := ExpandConstant('{app}\') + szAppName;
  bVCRuntimeInstalled := RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{8bdfe669-9705-4184-9368-db9ce581e0e7}');   // x64或x86 均为此 guid 数值
  bFileExists := FileExists(szExecutable);
  
  if bVCRuntimeInstalled then
    szVCRuntimeInstalled := 'True'
  else
    szVCRuntimeInstalled := 'False';
    
  if bFileExists then
    szFileExists := 'True'
  else
    szFileExists := 'False';

	Log('-->szAppName:' + szAppName + ' szExecutable:' + szExecutable + ' szArchitecture:' + szArchitecture + ' szVCRuntimeInstalled:' + szVCRuntimeInstalled + ' szFileExists:' + szFileExists + ' The value of {app} is: ' + ExpandConstant('{app}'));

  if bVCRuntimeInstalled then      // 系统若已经安装了 VC_redist 则跳过
    begin
    Log('VC_redist is already installed. Skipping installation.');
    end
  else
    if bFileExists then            // 此文件存在才安装
      begin
	  Log('VC_redist is install');
      szParam := '/install /quiet /norestart';
      Exec(szExecutable, szParam, '', SW_HIDE, ewWaitUntilTerminated, nRetCode);
      Sleep(100);
      end
    else
      begin
      Log('Executable file not found: ' + szExecutable);
      end
end;

③ 如何购买代码签名证书

可以参考我写的这篇《分享如何拥有一份私人的『开源代码签名证书』》,已详述购买 EV / Standard / Open Source 的 Code Signing Certificate 🎉🎉🎉过程,还有如何进行应用签名;

④过五关斩六将之 Defender SmartScreen

还要能够过 Microsoft Defender SmartScreen, 里面是一套一套的,初次提交被拒好几次都属正常。若是 EV 企业证书,氪大金,直接过。若是 Standard / Open Source 这类标准证书,需先将 EXE 提交 Submit a file for malware analysis, 重复多提交几次后,虽不会再报毒;但是审核依旧是会被拒绝, WHAT THE FUCK???

对应实际的运行弹窗是这个

唯一解决方案就是等待,待 exe 的下载量和安装量足够多,且数量越多,在微软的积累量信誉越多,过阈值即可被认可,顺利上架 Microsoft Store。

总结:

个人作品上架微软商店的流程很折磨,最后上架成功后也是拨开云雾;

若是文章对你有价值,亦可帮我积累Sunny的微软信誉,甚至感谢🙇‍ ; 截图下载 👉 Sunny_setup_msvc_1.3.0_x64.exe


展示效果

微软商店 GIF 见文章顶部截图,此为 Web 预览的截图:

上架微软驱动

驱动认证,可找一些 WHQL 实验室给过,费用约¥ 1w /次。或者自己买 EV 证书自己过 WHQL,周期会很长 。

验证方式为 Windows Update 驱动中可看到,另外一种是在 catalog.update.microsoft.com 中查询,驱动是否上架了和微软推送了。 驱动上架就不展开讲述了。


上架 Deepin / UOS Store 流程

上架步骤

上架方式分为两种

①若是需要上架到 UOS Stoe ,则需要注册对应开发者账号,官方文档 应用上架指南。额(⊙﹏⊙),但需要实名填写相关信息,通过之后就可以同时上架到 UOS 商业和 Deepin 社区两个版本。

可以在看到历史的每一个包和上架的版本,这一点很棒很有心,且每一种语言的展示也是用 Tab 页显示出来了,体验很出彩。

②若【仅】想要上架 Deepin 社区,突然发现前不久,有新出来了一种简化了的投递流程(2024.02.19),方便多了 社区投递系统使用说明, 基本直接上传应用包即可。

展示效果

已在 Deepin V20.9-V23 上移植完成

上架 深度商店效果

还发现了当初上架的一个开源软件 lfxSpeed,一个简单的 Deepin/UOS 的任务栏网速插件,真时间匆匆~

上架 Speak Store 流程

上架步骤

上架星火商店步骤


展示步骤

上架成功

Note: 网页上传 .deb 总是错误,解决方案,必须在 Linux 系统下进行上传 .deb 才会成功;


上架 openkylin Store 流程

已移植到 openkylin 1.0.1 等版本,运行效果。

上架步骤

上架规则

需填写《开源软件上架申请表格_V1.0.0.docx》,且对 .deb 的 debian 文件夹的文件有点格式要求;参考如下。符合标准后提交表格和 .deb 即可。

版本镜像下载:openkylin 1.x X86

详细规则参考:

1、 包名_版本_架构.deb,各个字段需要与control文件里的参数保持一致。

2、 包名不能含有中文,只能包含数字字母和三个符号(.+-),英文字母必须是小写,版本号必须以数字开头,架构只能为arm64和amd64和misp64el

例如:powerword_1.0_arm64.deb (均为下划线)

3、 软件中文名称、英文名称,各长度小于50个字符。

4、 icon(规范:128像素*128像素);

5、 软件截图(宽/高 1.5 按此长宽比的应用实际截图分辨率即可(至少5张)建议尺寸:1000像素*680像素)

6、 软件分类:精品、办公、开发、图像、影音、网络、游戏、教育、社交、其他、系统。最多选3个,第一个为主分类,后两个为附属分类。


系列地址

QtExamples 欢迎 star ⭐ 和 fork 🍴 这个系列的 C++ / QT / DTK 学习,附学习由浅入深的目录,这里你可以学到如何亲自编写这类软件的经验,这是一系列完整的教程,并且永久免费!