嗨,我正在开发一个使用 Qt 的应用程序。
我们在 Qt 5.4 上使用了几个月,我们决定继续使用最新版本(5.6)。在此之前,我们对 Mac 应用程序签名没有任何问题,我们运行macdeployqt
二进制文件来部署应用程序,然后运行脚本对整个包进行签名并将其添加到 .dmg 中。
由于我们迁移到 Qt 5.6,签名过程不会引发任何错误,当我使用 USB 密钥在其他计算机上尝试该软件包时,签名正常,应用程序可以毫无问题地启动。
但是,当我在 Internet(Dropbox、Slack 或个人远程服务器)上上传应用程序时,签名被破坏并显示此消息。
当我在上传/下载之前和之后运行时,它具有相同的输出codesign --deep --verify --verbose=4 -d
!spctl --verbose=4 --assess --type execute
MyApp.app: accepted
source=Developer ID
Executable=/Users/digitalessence/Desktop/HeavyM.app/Contents/MacOS/HeavyM
Identifier=fr.digitalessence.heavym
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20200 size=31704 flags=0x0(none) hashes=985+3 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha1=052009496d7193aed38e60269a59c6bcd386f799
CandidateCDHash sha256=bc721c8b50f4e231a724f524083ca8689108b14a
Hash choices=sha1,sha256
CDHash=bc721c8b50f4e231a724f524083ca8689108b14a
Signature size=8918
Authority=Developer ID Application: Digital Essence (NZ8539HN33)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=24 May 2016 15:36:07
Info.plist entries=9
TeamIdentifier=NZ8539HN33
Sealed Resources version=2 rules=12 files=33
Nested=Frameworks/QtOpenGL.framework
Nested=Frameworks/QtNetwork.framework
Nested=PlugIns/audio/libqtaudio_coreaudio.dylib
Nested=PlugIns/mediaservice/libqavfmediaplayer.dylib
Nested=Frameworks/QtDBus.framework
Nested=PlugIns/mediaservice/libqavfcamera.dylib
Nested=PlugIns/imageformats/libqicns.dylib
Nested=PlugIns/imageformats/libqtiff.dylib
Nested=PlugIns/imageformats/libqtga.dylib
Nested=PlugIns/imageformats/libqdds.dylib
Nested=PlugIns/mediaservice/libqtmedia_audioengine.dylib
Nested=Frameworks/QtCore.framework
Nested=PlugIns/imageformats/libqjpeg.dylib
Nested=Frameworks/QtMultimediaWidgets.framework
Nested=Frameworks/Syphon.framework
Nested=Frameworks/QtGui.framework
Nested=Frameworks/QtMultimedia.framework
Nested=PlugIns/imageformats/libqgif.dylib
Nested=PlugIns/imageformats/libqwbmp.dylib
Nested=PlugIns/imageformats/libqico.dylib
Nested=Frameworks/fftreal.framework
Nested=PlugIns/printsupport/libcocoaprintersupport.dylib
Nested=Frameworks/QtXml.framework
Nested=PlugIns/bearer/libqgenericbearer.dylib
Nested=Frameworks/QtPrintSupport.framework
Nested=PlugIns/bearer/libqcorewlanbearer.dylib
Nested=Frameworks/QtWidgets.framework
Nested=PlugIns/imageformats/libqwebp.dylib
Nested=PlugIns/platforms/libqcocoa.dylib
这是我用来签署包的脚本:
echo ------------------------------------------------------------
echo "Macdeployqt et copie de Syphon"
echo ------------------------------------------------------------
${QT_BIN_PATH}/macdeployqt ${PATH_BIN} -verbose=3
cp -Rf /Users/digitalessence/Downloads/Syphon\ SDK\ Public\ Beta\ 2/Syphon.framework ${PATH_FRAMEWORK}/.
echo ------------------------------------------------------------
echo "Modification of Qt path"
echo ------------------------------------------------------------
install_name_tool -change @rpath/QtXml.framework/Versions/5/QtXml @executable_path/../Frameworks/QtXml.framework/Versions/5/QtXml ${PATH_BIN}/Contents/Frameworks/QtXml.framework/Versions/5/QtXml
install_name_tool -change @rpath/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ${PATH_BIN}/Contents/Frameworks/QtXml.framework/Versions/5/QtXml
install_name_tool -change @rpath/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets ${PATH_BIN}/Contents/Frameworks/QtWidgets.framework/Versions/5/QtWidgets
install_name_tool -change @rpath/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ${PATH_BIN}/Contents/Frameworks/QtWidgets.framework/Versions/5/QtWidgets
install_name_tool -change @rpath/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui ${PATH_BIN}/Contents/Frameworks/QtWidgets.framework/Versions/5/QtWidgets
install_name_tool -change @rpath/QtPrintSupport.framework/Versions/5/QtPrintSupport @executable_path/../Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport ${PATH_BIN}/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport
install_name_tool -change @rpath/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ${PATH_BIN}/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport
install_name_tool -change @rpath/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui ${PATH_BIN}/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport
install_name_tool -change @rpath/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets ${PATH_BIN}/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport
install_name_tool -change @rpath/QtOpenGL.framework/Versions/5/QtOpenGL @executable_path/../Frameworks/QtOpenGL.framework/Versions/5/QtOpenGL ${PATH_BIN}/Contents/Frameworks/QtOpenGL.framework/Versions/5/QtOpenGL
install_name_tool -change @rpath/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ${PATH_BIN}/Contents/Frameworks/QtOpenGL.framework/Versions/5/QtOpenGL
install_name_tool -change @rpath/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui ${PATH_BIN}/Contents/Frameworks/QtOpenGL.framework/Versions/5/QtOpenGL
install_name_tool -change @rpath/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets ${PATH_BIN}/Contents/Frameworks/QtOpenGL.framework/Versions/5/QtOpenGL
install_name_tool -change @rpath/QtNetwork.framework/Versions/5/QtNetwork @executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork ${PATH_BIN}/Contents/Frameworks/QtNetwork.framework/Versions/5/QtNetwork
install_name_tool -change @rpath/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ${PATH_BIN}/Contents/Frameworks/QtNetwork.framework/Versions/5/QtNetwork
install_name_tool -change @rpath/QtMultimedia.framework/Versions/5/QtMultimedia @executable_path/../Frameworks/QtMultimedia.framework/Versions/5/QtMultimedia ${PATH_BIN}/Contents/Frameworks/QtMultimedia.framework/Versions/5/QtMultimedia
install_name_tool -change @rpath/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui ${PATH_BIN}/Contents/Frameworks/QtMultimedia.framework/Versions/5/QtMultimedia
install_name_tool -change @rpath/QtNetwork.framework/Versions/5/QtNetwork @executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork ${PATH_BIN}/Contents/Frameworks/QtMultimedia.framework/Versions/5/QtMultimedia
install_name_tool -change @rpath/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ${PATH_BIN}/Contents/Frameworks/QtMultimedia.framework/Versions/5/QtMultimedia
install_name_tool -change @rpath/QtMultimediaWidgets.framework/Versions/5/QtMultimediaWidgets @executable_path/../Frameworks/QtMultimediaWidgets.framework/Versions/5/QtMultimediaWidgets ${PATH_BIN}/Contents/Frameworks/QtMultimediaWidgets.framework/Versions/5/QtMultimediaWidgets
install_name_tool -change @rpath/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui ${PATH_BIN}/Contents/Frameworks/QtMultimediaWidgets.framework/Versions/5/QtMultimediaWidgets
install_name_tool -change @rpath/QtOpenGL.framework/Versions/5/QtOpenGL @executable_path/../Frameworks/QtOpenGL.framework/Versions/5/QtOpenGL ${PATH_BIN}/Contents/Frameworks/QtMultimediaWidgets.framework/Versions/5/QtMultimediaWidgets
install_name_tool -change @rpath/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ${PATH_BIN}/Contents/Frameworks/QtMultimediaWidgets.framework/Versions/5/QtMultimediaWidgets
install_name_tool -change @rpath/QtNetwork.framework/Versions/5/QtNetwork @executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork ${PATH_BIN}/Contents/Frameworks/QtMultimediaWidgets.framework/Versions/5/QtMultimediaWidgets
install_name_tool -change @rpath/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets ${PATH_BIN}/Contents/Frameworks/QtMultimediaWidgets.framework/Versions/5/QtMultimediaWidgets
install_name_tool -change @rpath/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui ${PATH_BIN}/Contents/Frameworks/QtGui.framework/Versions/5/QtGui
install_name_tool -change @rpath/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ${PATH_BIN}/Contents/Frameworks/QtGui.framework/Versions/5/QtGui
install_name_tool -change @rpath/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ${PATH_BIN}/Contents/Frameworks/QtCore.framework/Versions/5/QtCore
echo ------------------------------------------------------------
echo "Modification of HeavyM libs path "
echo ------------------------------------------------------------
install_name_tool -change @rpath/QtOpenGL.framework/Versions/5/QtOpenGL @executable_path/../Frameworks/QtOpenGL.framework/Versions/5/QtOpenGL ${PATH_BIN}/Contents/MacOS/HeavyM
install_name_tool -change @rpath/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets ${PATH_BIN}/Contents/MacOS/HeavyM
install_name_tool -change @rpath/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui ${PATH_BIN}/Contents/MacOS/HeavyM
install_name_tool -change @rpath/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ${PATH_BIN}/Contents/MacOS/HeavyM
install_name_tool -change @rpath/QtMultimedia.framework/Versions/5/QtMultimedia @executable_path/../Frameworks/QtMultimedia.framework/Versions/5/QtMultimedia ${PATH_BIN}/Contents/MacOS/HeavyM
install_name_tool -change @rpath/QtNetwork.framework/Versions/5/QtNetwork @executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork ${PATH_BIN}/Contents/MacOS/HeavyM
install_name_tool -change @rpath/QtXml.framework/Versions/5/QtXml @executable_path/../Frameworks/QtXml.framework/Versions/5/QtXml ${PATH_BIN}/Contents/MacOS/HeavyM
echo ------------------------------------------------------------
echo "Signature of app"
echo ------------------------------------------------------------
codesign --no-strict --deep --force --verify --verbose=4 --sign "Developer ID Application: Digital Essence" ${PATH_BIN}/Contents/Frameworks/fftreal.framework/fftreal
codesign --no-strict --deep --force --verify --verbose=4 --sign "Developer ID Application: Digital Essence" ${PATH_BIN}/Contents/Frameworks/Qt*.framework/Qt*
codesign --no-strict --deep --force --verify --verbose=4 --sign "Developer ID Application: Digital Essence" ${PATH_BIN}/Contents/Frameworks/Syphon.framework/Syphon
codesign --no-strict --deep --force --verify --verbose=4 --sign "Developer ID Application: Digital Essence" ${PATH_BIN}/Contents/PlugIns/*/*
codesign --no-strict --deep --force --verify --verbose=4 --sign "Developer ID Application: Digital Essence" ${PATH_BIN}/Contents/MacOS/*
codesign --no-strict --sign "Developer ID Application: Digital Essence" --deep --verbose=4 ${PATH_BIN}
echo ------------------------------------------------------------
echo "Verify application signing"
echo ------------------------------------------------------------
codesign --deep --verify --verbose=4 -d ${PATH_BIN}
spctl --verbose=4 --assess --type execute ${PATH_BIN} && dropdmg --config-name=heavym ${PATH_BIN}
echo -------------------------FINISHED-------------------------------
任何人都知道什么会导致这个问题,或者任何人都面临同样的问题?提前致谢。