【发布时间】:2015-05-22 02:53:02
【问题描述】:
编辑:原来这不是代码设计问题,所以我正在更新以帮助遇到同样问题的任何人。
将 MonoMac 应用程序更新到 Xamarin.Mac 后,如果我更改了应用程序的名称,我会收到消息“您无法打开应用程序“XXXXX”,因为它可能已损坏或不完整。”看起来这可能是一个代码设计问题,因为当我运行 codesign --verify 时,我会得到 code object is not signed at all。
原问题:
我最近将 MonoMac 应用程序更新为 Xamarin.Mac。在此过程中,协同设计步骤中的某些内容似乎发生了变化。具体来说,现在当我重命名应用程序包时,我会收到来自 GUI 和命令行工具的代码签名错误。如果 app bundle 与CFBundleName 不匹配,似乎签名无效。
例如,如果我运行codesign --verify --deep -vvvv Program.app(其中Program 匹配CFBundleName,我得到
Program.app: valid on disk
Program.app: satisfies its Designated Requirement
但是,如果我将名称更改为 Program2.app 并运行 codesign --verify --deep -vvvv Program2.app,我会得到:
Program2.app: code object is not signed at all
把它移回去,我又得到了一个成功的签名。
从 MonoMac 应用与 Xamarin.Mac 应用的对比来看,存在一些差异:
-
archived-expanded-entitlements.xcent现在放在Contents/Resources -
Info.plist被编译成一些二进制版本。 -
Contents/MonoBundle现在包括libMonoPosixHelper.dylib,显然需要签名。 -
PkgInfo现在包含在Contents中,内容为APPL????
为什么代码设计工具会突然关心应用程序的名称?我怎样才能让它不在乎名字?
【问题讨论】:
标签: macos xamarin monomac info.plist xamarin.mac