Python 如何消除错误代码签名Qt Framework-嵌入式框架根目录中存在的未密封内容

Python 如何消除错误代码签名Qt Framework-嵌入式框架根目录中存在的未密封内容,python,macos,pyqt5,pyinstaller,codesign,Python,Macos,Pyqt5,Pyinstaller,Codesign,我正在尝试对Pyinstaller生成的MacOS.app包进行代码设计和公证。该应用程序是使用Python3、PyQt绑定和Qt工具包开发的 以下是版本: PyInstaller 3.5 Python版本:3.7.4(v3.7.4:e09359112e,2019年7月8日,14:54:52) [铿锵6.0(铿锵600.0.57)] Qt版本:5.13.0 PyQt版本:5.13.1 sip版本:4.19.19 应用程序本身在MAC上运行得很好,当试图对应用程序进行代码签名以便对其进行公证时

我正在尝试对Pyinstaller生成的MacOS.app包进行代码设计和公证。该应用程序是使用Python3、PyQt绑定和Qt工具包开发的

以下是版本:

  • PyInstaller 3.5
  • Python版本:3.7.4(v3.7.4:e09359112e,2019年7月8日,14:54:52) [铿锵6.0(铿锵600.0.57)]
  • Qt版本:5.13.0
  • PyQt版本:5.13.1
  • sip版本:4.19.19
应用程序本身在MAC上运行得很好,当试图对应用程序进行代码签名以便对其进行公证时,就会出现问题。我在这里说明的问题与Qt框架有关。如果有人能提供一组步骤,成功地在pyinstaller生成的.app包中签署一个Qt框架,我将不胜感激

这是我的过程

.app捆绑包由Pyinstaller创建,运行良好。 第一步是修复Pyinstaller创建的文件夹结构。它并不完全符合苹果的期望,但公平地说,Qt安装的也不符合。运行此脚本以修复.app包中的QtCore框架

Echo修复QtCore框架文件夹

qtfolder="/Users/xxx/Qt/5.13.1/clang_64/lib"
basefolder="/Users/xxx/Documents/PYINSTALLERTEST/dist/MyApp.app/Contents/MacOS/PyQt5/Qt/lib/QtCore.framework"
cp -R $qtfolder/QtCore.framework/Versions/5/Resources $basefolder/Versions/5
ln -s $basefolder/Versions/5 $basefolder
mv $basefolder/5 $basefolder/Versions/Current
ln -s $basefolder/Versions/Current/Resources $basefolder
ln -s $basefolder/Versions/Current/QtCore $basefolder
这将生成以下文件夹结构和文件,我相信它们符合苹果的期望。这是基于大量的博客文章等

QtCore@ -> /Users/xxx/Documents/PYINSTALLERTEST/dist/MyApp.app/Contents/MacOS/PyQt5/Qt/lib/QtCore.framework/Versions/Current/QtCore
Resources@ -> /Users/xxx/Documents/PYINSTALLERTEST/dist/MyApp.app/Contents/MacOS/PyQt5/Qt/lib/QtCore.framework/Versions/Current/Resources
Versions/

./Versions:

5/
Current@ -> /Users/xxx/Documents/PYINSTALLERTEST/dist/MyApp.app/Contents/MacOS/PyQt5/Qt/lib/QtCore.framework/Versions/5

./Versions/5:
QtCore*
Resources/

./Versions/5/Resources:
Info.plist
现在我开始签署文件。有很多关于签名什么和如何签名的帖子,所有这些都显得过时和矛盾。我认为目前最好的建议是什么都签。我试过很多组合,结果都是一样的错误

sudo codesign --verbose --force --sign "Developer ID Application:  (xxx)" /Users/xxx/Documents/PYINSTALLERTEST/dist/MyApp.app/Contents/MacOS/PyQt5/Qt/lib/QtCore.framework/versions/5/resources/Info.plist
sudo codesign --verbose --force --sign "Developer ID Application:  (xxx)" /Users/xxx/Documents/PYINSTALLERTEST/dist/MyApp.app/Contents/MacOS/PyQt5/Qt/lib/QtCore.framework/versions/5/QtCore
sudo codesign --verbose --force --sign "Developer ID Application:  (xxx)" /Users/xxx/Documents/PYINSTALLERTEST/dist/MyApp.app/Contents/MacOS/PyQt5/Qt/lib/QtCore.framework/versions/5/_CodeSignature/CodeResources
sudo codesign --verbose --force --sign "Developer ID Application:  (xxx)" /Users/xxx/Documents/PYINSTALLERTEST/dist/MyApp.app/Contents/MacOS/PyQt5/Qt/lib/QtCore.framework/versions/5
此时,框架中可以签名的每个文件和文件夹都已成功签名。我没有对符号链接进行签名,因为我认为这只是放弃了底层文件。最后一步是签署框架本身

sudo codesign  --verbose --force --sign "Developer ID Application: (xxx)" /Users/xxx/Documents/PYINSTALLERTEST/dist/MyApp.app/Contents/MacOS/PyQt5/Qt/lib/QtCore.framework
这将产生以下错误消息:

/Users/xxx/Documents/PYINSTALLERTEST/dist/MyApp.app/Contents/MacOS/PyQt5/Qt/lib/QtCore.framework: replacing existing signature
/Users/xxx/Documents/PYINSTALLERTEST/dist/MyApp.app/Contents/MacOS/PyQt5/Qt/lib/QtCore.framework: **unsealed contents present in the root directory of an embedded framework**
你知道我做错了什么吗