Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

MacOS application stopped working properly after using macdeploy



  • Hello,

    I'm trying to deploy MacOS application using macdeployqt tool. Problem is that before I using the tool, app generated byQt works fine, but after using macdeployqt app can't connect with server.

    This is my steps:

    macdeployqt <APP_NAME>.app -qmldir=<APP_NAME>/qml -verbose=3 -executable=<APP_NAME>.app/Contents/MacOS/<binary> -libpath=<APP_NAME>.app/Contents/Frameworks -qmlimport=/Path/to/qml/sources -always-overwrite

    After this step application could not connect with server
    I was add chmod -RH u+w,go-w,a+rX <APP_NAME>.app and check binary linking + Frameworks & Plugins cross-reference linking in bundle by otool -L <Lib_Name>.

    Every path linked outside was change in this way: install_name_tool -change @rpath/QtSvg.framework/Versions/5/QtSvg @executable_path/../Frameworks/QtSvg.framework/Versions/5/QtSvg <APP_NAME>.app/Contents/Frameworks/QtSvg.framework/Versions/5/QtSvg

    At the end bundle is signed by codesign --force --deep --sign <DEVELOPER_ID> <APP_NAME>.app to be sure that every Framework and Plugin will be signed.

    It looks like some kind of permissioning problem or maybe wrong library linking but I'm not sure.

    Is there any other way to diagnose what is the problem?


  • Lifetime Qt Champion

    Hi,

    Did you starting the application directly from the command line ?



  • Hi @SGaist ,

    Yes I'm do it in that way.


  • Lifetime Qt Champion

    Do you get any message in the terminal ?


  • Banned

    This post is deleted!


  • @SGaist ,

    The only message I have is that the application cannot create OpcUA client. Not sure if it help but application is using a configuration file to get server url and the file is located in QStandardPaths::writableLocation(QStandardPaths::ApplicationDataLocation) which is a equivalent of ~/Library/Application Support/<APP_NAME> but I'm not sure if thats have any impact of this behaviour.

    Hi, @alanaalison currently I'm using this tools install_name_tool and otool to validate the Frameworks and Plugins paths and the output looks like that:

    <APP_NAME>.app/Contents/Frameworks/QtDBus.framework/QtDBus:
     @executable_path/../Frameworks/QtDBus.framework/Versions/5/QtDBus 
     @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore
     /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration 
     /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
     /usr/lib/libc++.1.dylib 
     /usr/lib/libSystem.B.dylib
    

    All Qt libs were copied to Frameworks folder. Or maybe I should also add the user libs?


  • Lifetime Qt Champion

    What modules are you using ?



  • @SGaist I'm using

    QtCore
    QtMultimedia
    QtOpcUa
    QtQuick
    QtNetwork
    QtGui
    QtMacExtras
    QtQml
    QtQuickControls2
    QtQuickTemplates2
    QtXml
    QtWidgets
    QtMultimediaWidgets
    QtDBus
    QtPrintSupport
    QtOpenGL
    QtSvg


  • Lifetime Qt Champion

    What version of Qt are you using ?



  • @SGaist Qt 5.13.0


  • Lifetime Qt Champion

    Can you test with a more recent version ? Current is 5.14.2 with 5.15.0 around the corner.



  • @SGaist for Qt 5.14.1 got this same. I also checked behaviour of deployed application for windows and it works this same.


  • Lifetime Qt Champion

    What server are you connecting to ? Does it use SSL ?


Log in to reply