简 述: 详细介绍如何上架Windows商店的流程,配上流程图!用自己写的 Sunny 截图 应用软件如何上架到 微软商店 | Microsoft Store 和 Deepin Store 等;
即使现 2024 年,但这份指南的详细程度也是的网上首份的,亦含 Linux 商店的上架流程,敬热爱,敬开源,敬自己;
[TOC]
本文初发于 “偕臧的小站“,同步转载于此。
相关文章
- 分享如何拥有一份私人的『开源代码签名证书』
- Sunny截图上架Microsoft Store及Linux商店流程的指北
- 嘿嘿!开发了一款 Sunny 截图 & 钉图,亦支持“屏幕识图”和“OCR”的软件
- 基于 QT 开发 FLIPPED :简易且漂亮的跨平台截图贴图软件
- 更多教程 → QtExamples
上架 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 # 会出现安装向导
②微软运行时库的静默安装和检测
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 流程
上架步骤
上架星火商店步骤
- 【方式一】直接在 https://upload.deepinos.org.cn/index 网页上传 .deb 和截图等信息即可
- 【方式二】摇人 → spark-app.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
学习,附学习由浅入深的目录,这里你可以学到如何亲自编写这类软件的经验,这是一系列完整的教程,并且永久免费!