gpt4 book ai didi

c# - 为 .net 核心控制台应用程序创建签名和通知的 MacOS 安装程序

转载 作者:行者123 更新时间:2023-12-04 15:11:50 25 4
gpt4 key购买 nike

我已经阅读了大量的建议和相关问题,但还没有偶然发现真正困扰我的问题。问题很简单:我有一个用 .Net Core 3.1 编写的控制台应用程序,我想将其分发到 MacOS 等。因此,我需要一个安装程序。理想情况下,整个过程应基于脚本,无需点击。是的,CI。我的步骤:

  1. dotnet publish -c Release -r osx-x64(在 Windows 上完成后,我添加了 chmod +x 以允许执行 - 此处没有警告)
  2. 将整个 bin/Release/osx-x64/publish 目录打包成一个 .app 文件(现在使用 Platypus 只是为了确保整个 . app 是有效的)。此时,单击该应用程序实际上会按预期运行(除了不受信任的开发人员警告之外)。
  3. 我有一个有效的第 3 方 Mac 开发者应用程序证书,我用它来签署 .app 和其中的所有文件(使用一个简单的脚本)。我的权利很少(基本上只有那些 listed in Microsoft documentation )。
  4. codesign -vvv --deep-verify MyApp.app 返回很好的在磁盘上有效并且满足其指定要求
  5. 然后另一个脚本将 .app 压缩为 .zip 存档并上传以进行公证,但失败了。原因:无效包。运行 spctl -vvv --assess --type exec MyApp.app 返回 rejected,所以不足为奇。

我了解到 Invalid package 可能意味着几乎任何东西,因为它只是没有通过允许的东西的白名单,而且实际上不可能指出哪里出错了(必须列出每一个拒绝原因规则)。

这可能是权利集不足,因为我的列表仅包含每个 MS 文档的“默认”值。但是,我还尝试创建一个简单的 Hello world 控制台应用程序,以尽量减少内部发生的任何事情 - 当然,Invalid package。因此,我的应用不应该尝试执行权利中未列出的操作。

这让我们...未启用强化运行时?我还没有找到任何明确的方法来在 .net 核心控制台应用程序中启用它(唯一的引用是 Xamarin.Mac,这不适用于此处 IMO)。这两种方法都无法验证这确实是问题所在。但我不希望 MS 投入如此多的精力来使 .net 核心跨平台,然后仅仅因为 Apple 要求强化运行时就将其全部丢弃。

我试过在 Windows 和 Mac 上构建,但没有帮助。我的“Mac”是虚拟机中的 10.15 Catalina(这可能是个问题吗?)。

任何人都可以帮助我,让我走上正确的道路,或者给我看一些我丢失的文档吗?我不敢相信这是不可能的。

谢谢。

最佳答案

回答我自己的问题:我一定是盲目阅读了 Apple 文档。问题是,当以页面形式查询公证结果时,您只会得到 Invalid package (xcrun altool --notarization-history 0 -u USER -p PW)。但是,当您查询您的具体请求时(xcrun altool --notarization-info REQUEST_ID -u USER -p PW),您也会得到 Invalid package,还有一个 URL指向包含调试信息的 JSON。使用它我能够识别并修复我的问题。

因此,Apple 绝对可以让他们的 SW 发布过程对开发人员更友好,但工具就在那里。只需仔细检查。

关于c# - 为 .net 核心控制台应用程序创建签名和通知的 MacOS 安装程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65089034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com