通过微软的launcher启动的openeuler发行版
- 可以通过action里的artifacts下载,超过30天github会自动清理旧的artifacts,可以通过re-run重新生成
- 当前支持sideload 方式加载openeuler应用:
- 将
sideload-xxx.zip
解压后,进入DistroLaucher-xxx_Test
目录 - 加载目录下的证书
xxx.cer
文件,参考,简单来说:- 双击
xxx.cer
- 选择
local machine
- 选择
trusted people
- 双击
- 双击
DistroLauncher-Appx_xxx_<arm64/x64>.appxbundle
安装openeuler WSL应用
- 将
- 支持其他launcher(wsldl,wsl-distrod)
- 和openeuler 发布流程集成,持续发布LTS 版本的wsl rootfs,旁加载应用
- 在openEuler的基础设施中构建APP和rootfs,
github action
用户开发者自定义 - 20.03 LTS SP3上架windows商店
- 22.03 LTS 上架windows商店
- 22.09 上架windows商店
- systemd 正常工作并开启namespace
You're wellcome
MIT
- fork本仓库
- 根据需要,修改本仓库代码(例如要增删包,可以修改
docker/Dockerfile
) - 根据该文档生成一个自签发的证书,后缀为pfx,例如下面是创建一个有效期5年的自签名证书
New-SelfSignedCertificate -Type Custom -Subject "CN=openEuler Infra WSL" -TextExtension @("2.5.29.37={critical}{text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}") -KeyUsage DigitalSignature -FriendlyName "openEuler" -CertStoreLocation "Cert:\CurrentUser\My" -NotBefore (Get-Date) -NotAfter (Get-Date).AddYears(5)
- 导出证书:
$password = ConvertTo-SecureString -String <Your Password> -Force -AsPlainText Export-PfxCertificate -cert "Cert:\CurrentUser\My\<Certificate Thumbprint>" -FilePath <FilePath>.pfx -Password $password
- 注意,此时导出的证书包含了私钥并且私钥用密码进行了加密,可以参考这里将密码去掉
openssl pkcs12 -in <pfx_with_passwd> -nodes -out temp.pem -password pass:<passwd> openssl pkcs12 -export -in temp.pem -out <pfx_without_passwd> -password pass:
- 可以使用下面的命令将证书转换为
base64
格式:certutil.exe -encode <pfx file> <base64 file>
- 修改
DistroLauncher-Appx/MyDistro.appxmanifest
中的Publisher=
字段,将其改为与上面的证书CN字段一致 - 修改
DistroLauncher-Appx/DistroLauncher-Appx.vcxproj
中的<PackageCertificateThumbprint>
字段,将其改为上面证书的指纹和证书CN
字段,获取CN
/PackageCertificateThumbprint
的方法如下:
PS C:\> Get-PfxCertificate -FilePath .\DistroLauncher-Appx_TemporaryKey.pfx
Thumbprint Subject
---------- -------
asdfsadfadfs9asdfasdfsadfE1FC8AC90C26DE1 CN=xxxadsfasdfsadf
- 进入仓库
setting->secrets->actions->new secrets
,创建以下secrets
- SIGN_CERT:内容为证书的base64编码,base64编码生成方式为:
$fileContentBytes = get-content 'YOURFILEPATH.pfx' -Encoding Byte
[System.Convert]::ToBase64String($fileContentBytes)
- fork本仓库
- 进入仓库
setting->secrets->actions->new secrets
,创建以下secrets
- AZURE_AD_APP_KEY
- AZURE_AD_CLIENT_ID
- AZURE_AD_TENANT_ID
- SIGN_CERT
AZURE这几个变量,请参考这里的步骤生成 SIGN_CERT请参考上面的步骤
修改后,通过点击actioin
中的run workflow
就能生成对应的WSL软件包(如果没有开发者账号或不期望发布到应用商店,Should we upload the appxbundle to the store
这个参数请输入no
,否则输入yes
),对应任务的summary页面中,可以下载所有生成的artifacts
,其中rootfs-xxx
是用于制作WSL的文件系统,siteload-xxx
是可以直接通过双击安装的app软件包,storeupload-
则是用于上传到微软商店的app软件包
注意:本仓库的脚本只能更新已有应用的提交,因此新创建的应用需要人工进行第一次提交,可以参考如何人工提交