Python 如何消除错误代码签名Qt Framework-嵌入式框架根目录中存在的未密封内容
我正在尝试对Pyinstaller生成的MacOS.app包进行代码设计和公证。该应用程序是使用Python3、PyQt绑定和Qt工具包开发的 以下是版本: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 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
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**
你知道我做错了什么吗