J'ai écrit une application crossplatform Qt4/PyQt4/python, à savoir MyGreatApp, dont la dernière version nécessite le module Phonon. MyGreatApp fonctionne très bien sur ma propre machine sous Mac OS X 10.6 Snow Leopard, et plus généralement sur tous les macs où Qt4.4 arrive à être installé. Cependant, les machines innocentes échouent lamentablement à charger Phonon:Comment déployer une application Qt4/PyQt4/python dépendante de Phonon sur Mac OS X?
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
Il semble évident que certains restent dans l'dépendances exécutable. Voici les trucs de phonon inclus:
$ find . -name "*phonon*" -print
./Contents/Frameworks/phonon.framework
./Contents/Frameworks/phonon.framework/phonon
./Contents/Frameworks/phonon.framework/phonon.prl
./Contents/Frameworks/phonon.framework/Versions/4/phonon
./Contents/plugins/phonon_backend
./Contents/plugins/phonon_backend/libphonon_qt7.dylib
./Contents/Resources/lib/python2.5/lib-dynload/PyQt4/phonon.so
Et voici les install_name_tool
commandes, j'invoque après la construction de l'application:
PLUGINSREF = /usr/local/Trolltech/Qt-4.4.3/plugins
QTLIB = /usr/local/Trolltech/Qt-4.4.3/lib
PLUGINS = dist/MyGreatApp.app/Contents/plugins
RESOURCES = dist/MyGreatApp.app/Contents/Resources
PHONON = phonon.framework/Versions/4/phonon
QTCORE = QtCore.framework/Versions/4/QtCore
QTGUI = QtGui.framework/Versions/4/QtGui
echo "Installing plugins"
mkdir -p "$PLUGINS"/phonon_backend
cp $PLUGINSREF/phonon_backend/libphonon_qt7.dylib "$PLUGINS"/phonon_backend
install_name_tool -change $QTLIB/$PHONON @executable_path/../Frameworks/$PHONON "$PLUGINS"/phonon_backend/libphonon_qt7.dylib
install_name_tool -change $QTLIB/$QTCORE @executable_path/../Frameworks/$QTCORE "$PLUGINS"/phonon_backend/libphonon_qt7.dylib
install_name_tool -change $QTLIB/$QTGUI @executable_path/../Frameworks/$QTGUI "$PLUGINS"/phonon_backend/libphonon_qt7.dylib
echo "Adding Panther compatibility when building on Leopard"
install_name_tool -change /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore "$PLUGINS"/phonon_backend/libphonon_qt7.dylib
echo "Installing dynamic libraries"
install_name_tool -change $QTLIB/$PHONON @executable_path/../Resources/lib/$PHONON "$RESOURCES"/lib/python2.5/lib-dynload/PyQt4/phonon.so
install_name_tool -change $QTLIB/$QTCORE @executable_path/../Resources/lib/$QTCORE "$RESOURCES"/lib/python2.5/lib-dynload/PyQt4/phonon.so
install_name_tool -change $QTLIB/$QTGUI @executable_path/../Resources/lib/$QTGUI "$RESOURCES"/lib/python2.5/lib-dynload/PyQt4/phonon.so
Toute idée sur ce qui va mal, ou tout soupçon d'améliorer le diagnostic?
Curieux si 'pyinstaller' associé à' appdmg' résout cela pour vous? –