dan*_*1st 12 windows cmd package-managers winget
进入时winget source(安装后),可以看到支持添加源。
winget source 提供以下子命令:
add Add a new source
list list current sources
update updates current sources
remove removes current sources
reset resets sources
Run Code Online (Sandbox Code Playgroud)
通过输入winget source list,将显示默认源(只要源未更改):
C:\Windows\System32>winget source list
Name Arg
-----------------------------------------
winget https://winget.azureedge.net/cache
Run Code Online (Sandbox Code Playgroud)
由于可以使用 添加winget source add源,如何创建源存储库?
存储库必须如何构建,或者是否没有足够的文档来回答这个问题?
我认为这个问题是 Stack Overflow 的主题,因为添加源的主要原因是(在我看来)为程序或类似程序创建 alpha/beta 通道。
小智 9
winget 1.0为自定义存储库引入了新的 REST API。Microsoft 在github.com/microsoft/winget-cli-restsource/上提供了 API 和参考实现。参考实现使用 C# 并允许在 Azure 上自托管。托管产品也正在变得可用,例如https://winget.pro。
在 winget 1.0 之前,winget 存储库的结构大致如下:
远程存储库应该有一个source.msix文件。您可以参考默认存储库中的示例:https://winget.azureedge.net/cache/source.msix
人们可以在Microsoft Docs 网站上找到有关 MSIX 本身的详细信息。
实际上,这source.msix是一个 zip 包,其内容以预定义的方式构建(只需将其重命名为source.zip并解压):
Assets/Public/AppxBlockMap.xmlAppxManifest.xmlAppcSignature.p7x[Content_Typex.xml]主要数据文件似乎是Public/index.db. 它是一个 SQLite 数据库,包含源自社区存储库清单的信息。它的结构非常简单易懂。
另一个问题是 MSIX 应由开发人员签名。人们应该更改 Windows 设置才能winget接受第三方签名的包。详情请参阅下文。
请注意,它winget不接受 HTTP 存储库,它只需要具有受信任证书的 HTTPS 存储库。
最有趣的表index.db是manifest和pathparts。第一个将应用程序的名称、版本等与路径部分匹配,后者指向清单 YAML 文件。
例如:https://winget.azureedge.net/cache/manifests/RubyInstallerTeam/Ruby/e70d-2.7.2.yaml ( github/winget-pkgs/manifests/RubyInstallerTeam/Ruby/2.7.2.yaml的缓存) 。
winget使用此缓存的清单进行应用程序安装。
为了winget添加第三方源存储库(当source.msix由第三方证书签名时),应该允许安装旁加载应用程序。
总结以上内容,总体顺序如下:
source.msix从winget默认存储库下载: https ://winget.azureedge.net/cache/source.msixindex.db从目录中获取文件Public。ids、、、)。monikersnamesversionspathparts(每个路径元素一条记录)。例如/manifests/MyCompany/MyProduct/1.0.0.yaml表应该是这样的:

manifest通过添加联合所有相关记录的记录来编辑表。index.db,使用 MSIX 打包工具覆盖它source.msix,使用您自己的代码签名证书对 MSIX 进行签名。source.msix)并上传到您的服务器(例如到myserver.net/repo/source.msix 和myserver.net/repo/manifests/MyCompany/MyProduct/1.0.0.yaml)。winget source add myrepo https://myserver.net/repo
winget install MyProduct
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1966 次 |
| 最近记录: |