我们已经使用Xamarin.MAC开发了一个现有的MAC应用程序,并且正在将该应用程序的DMG文件分发给用户。
在catalina OS中打开应用程序时,它显示出一些安全错误。因此,我们发现在将应用程序分发给用户之前需要对应用程序进行公证。我们正在使用“应用程序开发人员ID”对应用程序进行代码签名。
因此,在将申请书用于公证之前,我们尝试在Xamarin.MAC项目的.cs项目的发行版中添加true。然后,当我们将UseHardenedRuntime键和EnableCodeSigning键设置为true时,应用程序不在发布模式下运行。
当我们将UseHardenedRuntime和EnableCodeSigning键都设置为true时,谁能知道为什么应用程序没有运行?
还有其他方法可以在Xamarin应用程序中设置UseHardenedRuntime吗?
我们遵循https://devblogs.microsoft.com/xamarin/macos-hardened-runtime-notary/来公证Xamarin.MAC应用程序吗?还有其他方法可以对应用程序dmg文件进行公证吗?
答案 0 :(得分:4)
我遇到了同样的问题,以下解决方案对我有效。 请检查您的Visual Studio版本以编辑entitlment.plist。 当我使用Visual Studio 8.0.5时,默认的entitlment.plist中没有Usehardened属性,因此我手动添加了它,但对我来说不起作用。
然后,我将Visual Studio版本更新为8.1.4,然后我们可以在授权中看到“ usehardened”属性。如果没有吸引力,请单击添加文件以添加新权利。在代码签名字段之后,将权利名称添加到项目属性中的自定义权利字段。然后我们可以进行发布构建。
答案 1 :(得分:0)
请确保还使用开发者ID对应用程序进行签名,具体取决于您的链接器和AOT设置,您可能需要配置其他权利。如果您仍然遇到问题,请尝试使用以下命令检查嵌入式配置文件是否包含您用于签名的所有权利
这将转储嵌入式配置文件:
security cms -D -i /Applications/myappname.app/Contents/embedded.provisionprofile
,这将转储已使用该应用签名的权利:
codesign -d --entitlements :- /Applications/myappname.app