How to publish an app?



  • Hi all,

    I've currently created a calculator app that has good features. I copied its .exe file from Debug directory of where it's stored and pasted that file onto desktop (Windows 7 desktop). It needs a few .dll files to be run.
    When I put those .dll-s and .exe files the same folder. It works. Now, for example, consider I want to send it to a friend or simply publish it. (I may do it again for the next apps I will create) What is the right way to do this? What should be done?
    Thanks.





  • Thank you for your answer. But there may be a misunderstanding! My purpose is sending that executable file (My_First_Calculator.exe) for others to use the app. I can send it now but the problem is the .dll files. I want to make the work easy for them. Of course if I also send the .dll files with .exe they can, like me, put all in a folder and without any further work, use and enjoy it.

    I want that when they have the .exe file (My_First_Calculator.exe), they copy a copy of it on the Windows desktop and use it.

    I don't know I could convey my intention appropriately or not. :(

    And about that link, I saw it, it seems to be an instruction for commercial of large applications, but my one, isn't such. I even don't know whether I ran my app in release mode or debug mode.
    :(
    I got confused by context of that link.

    Please guide me by walking through the simplest way.
    This is my first app in Qt for sharing.

    http://uploads.im/2rWAn.jpg



  • Looks like I had the same question some months ago: Take a look here .





  • @tomy Yea it sounds like you want static linking. However, be aware that you need a commerical license (last time I checked) for static linking to Qt.

    So I would definitely not distribute a static linked binary unless you have a commercial license or risk some serious legal ramifications.

    The other way to do it is use the windows deployment tool.

    http://doc.qt.io/qt-5/windows-deployment.html#the-windows-deployment-tool



  • @cpper

    Looks like I had the same question some months ago: Take a look here .

    I read your link. And also went to the links there they were provided. And tried to go through a path and make my app ready for sending. But the result was completely awful. I became really confused by those many complicated and complex contents. :(
    Whatever I tried to find a way for my app, I couldn't. :(

    What about you? Could you share your app as you wanted? If so, please tell me what steps are needed, or how could you do it?

    @dheerendra

    This link should help you.
    http://doc.qt.io/qt-5/windows-deployment.html#static-linking

    I could find windeployqt.exe in this path
    C:\Qt\Qt5.5.1\5.5\mingw492_32\bin\windeployqt.exe
    (remember please that I used Qt Creator for creating the app)
    And also I created a release mode of the app. And now I have two folders named
    build-My_First_Calculator-Desktop-Release which contains a release folder with some files inside it. I then, went to that path (release folder) by a command line and pasted the path to windeployqt.exe. I don't know now how to add configure -static. However I type it, the command line gets an error!

    I also collected some .dll files as follows and put them in a same folder with My_First_Calculator.exe (from release folder). That .exe files is much smaller in size compared to the .exe file of the debug folder.

    libgcc_s_dw2-1.dll
    libwinpthread-1.dll
    Qt5Cored.dll
    Qt5Guid.dll
    libstdc++-6.dll
    Qt5Gui.dll
    Qt5Widgetsd.dll

    Now what should I do?
    It does not matter that I go through a hundred steps, but just guide me step-by-step, I will do it.

    @ambershark

    @tomy Yea it sounds like you want static linking. However, be aware that you need a commerical license (last time I checked) for static linking to Qt.

    What does that mean please?
    It was me who wrote the code and have the source code. I think if someone else, wants to use it (without getting permission from me) he/she should get a licence for it. Or maybe there is some misunderstanding for me (because it's the first time I do it).

    So I would definitely not distribute a static linked binary unless you have a commercial license or risk some serious legal ramifications.

    Would you please shortly say what do you mean by this, in some works? I would be grateful.

    The other way to do it is use the windows deployment tool.

    http://doc.qt.io/qt-5/windows-deployment.html#the-windows-deployment-tool

    As I said, I saw all of these, but the problem is, for a newcomer of Qt (I have just read two chapters of the official book on Qt 4.x) they are very complicated and seems complex.

    What I need is only a step-by-step solution. Thanks.


  • Qt Champions 2016

    I also liked the info here
    http://www.tripleboot.org/?p=138

    There is a thing to understand
    for a Release Build use the DLLS with NO "d" in name

    This for debug build. Notice the D

    Qt5Widgetsd.dll

    Please do NOT mix release and debug dlls. :)



  • @mrjj
    In my folder (that .exe and .dll files exist) there are also other ended to d file names as well.
    Qt5Cored.dll
    Qt5Guid.dll

    So I first delete those ones from the folder and remain it alone. Then I start reading the link until the comments. And if there is something not clear for me, I will ask here again.
    Thanks.


  • Qt Champions 2016

    @tomy
    Those with d is debug version.
    Normally you only make deployment folders for Release version but
    a debug version is also possible. Just dont mix it :)



  • @mrjj
    Thanks.

    What I have done are as follows:
    1- I read the instructions carefully and on a virtual machine (Win 10 x64) created a folder named test. Then I went to the path C:\Qt\Qt5.5.1\5.5\mingw492_32 (on my real machine, a Windows 7 x64) .
    2- Then I copied 10 .dll files from there into the test folder of virtual machine.
    3- There are two .exe files on my system. One of the Debug mode with size about 1.4MB and one for the release mode wih size about 49KB. (Very smaller)
    Since we need the release files I copied that .exe files into the test folder.
    4- Then I double clicked on that file (in the test folder) but an error was shown up. I clicked on OK button of the error message and another error!

    http://uploads.im/HJ3nO.jpg
    http://uploads.im/OEXcL.jpg

    My questions:
    Why do I get these errors?
    Consider the .exe file works well there, OK, so what is the rest of the process?


  • Qt Champions 2016

    Hi
    As should be clear from the link,
    you need sub folder too called
    platforms and dll in there.
    alt text



  • @mrjj

    Hi
    As should be clear from the link,
    you need sub folder too called

    Hi,
    What sub folder do you mean?
    Where my Qt projects are stored there are My_First_Calculator, build-My_First_Calculator-Desktop-Debug and build-My_First_Calculator-Desktop-Release folders.

    platforms and dll in there.

    All the mentioned .dll files are pasted into the test folder (as shown in the images above).
    And what platforms?


  • Qt Champions 2016

    @tomy

    inside test, you must have platforms
    and inside platforms u must have the dll as shown and written in the link / picture.

    So your test folder is the deployment folder.

    the
    build-My_First_Calculator-Desktop-Debug and
    build-My_First_Calculator-Desktop-Release
    are the build folders.



  • I got it. :)

    I created a folder named platforms inside test and copied the qwindows into it. Now the app works well. Thanks so much.

    This step is finished. Now the main goal. How to make one .exe file or installer file or whatsoever, for publishing the app to others please?


  • Qt Champions 2016

    @tomy said in How to publish an app:

    How to make one .exe file or installer file or whatsoever, for publishing the app to others please?

    There are many install makers.

    I like this one
    http://www.innosetup.com/isinfo.php
    for windows deployment

    but Qt also have its own
    http://doc.qt.io/qtinstallerframework/

    That works cross platform etc.

    So use what ever fit the goal.

    This one i have been told is epic easy
    http://installforge.net/features/
    but I have not tested that claim.



  • @mrjj
    Thank you. I went for Qt's one. I'm in Setting up Qt Installer Framework.
    There it says:
    "Clone the Qt Installer Framework source code from http://code.qt.io/cgit/installer-framework/installer-framework.git/ to get the sources for the tools."
    And when I go to there and click on clones at the bottom of the page, nothing will be done.


  • Qt Champions 2016

    @tomy
    well that do not work anymore as far as i know.
    You must use a git client.



  • I found this page but there are only codes there seemingly. Is a git a tool/program to use it for making the installer? If so, where to download it?


  • Qt Champions 2016

    @tomy
    GIT is the world most used tool for source code revision control.
    It will download the source code.

    https://backlogtool.com/git-guide/en/
    http://rogerdudler.github.io/git-guide/

    Make sure u understand what it is. you just need it for download.

    But are u sure u need to build it ?
    Its include in the installer.
    (0_1485786277438_upload-cc10dcf6-f7bf-4788-9209-08486bb74a0a



  • @mrjj said in How to publish an app:

    @tomy
    GIT is the world most used tool for source code revision control.
    It will download the source code.

    https://backlogtool.com/git-guide/en/
    http://rogerdudler.github.io/git-guide/

    Make sure u understand what it is. you just need it for download.

    Honestly I don't know what it is but something to make an installer for my app :)

    But are u sure u need to build it ?

    I can't remember if I downloaded it at the times of downloading and installing Qt Creatro or not. If it's installed perhaps, where to find it?

    Its include in the installer.
    (0_1485786277438_upload-cc10dcf6-f7bf-4788-9209-08486bb74a0a


  • Qt Champions 2016

    @tomy
    Use the maintenance tool found with the rest of Qt and check.



  • @mrjj said in How to publish an app:

    @tomy
    Use the maintenance tool found with the rest of Qt and check.

    Sorry but I didn't get it!!
    I searched that maintenance tool in tools tab of Qt Creator and also the page http://doc.qt.io/qtinstallerframework/
    but couldn't find it.
    I downloaded the Git using the second link and installed it and have this window now:

    http://uploads.im/EK0bB.jpg


  • Qt Champions 2016

    @tomy

    No, the maintenance tool is a standalone application.
    Its not inside Creator
    Mine is here
    "D:\Qt\MaintenanceTool.exe"



  • @mrjj said in How to publish an app:

    @tomy

    No, the maintenance tool is a standalone application.
    Its not inside Creator
    Mine is here
    "D:\Qt\MaintenanceTool.exe"

    I found it and created a temporary repository (just clicked Add and set a password) on it. Then pressed "Add or Remove" option there. Now I'm to select some components as follows:
    http://uploads.im/5FWui.jpg


  • Qt Champions 2016

    Super. Not sure if there for 5.5 but maybe u can just use never Qt ?



  • @mrjj said in How to publish an app:

    Super. Not sure if there for 5.5 but maybe u can just use never Qt ?

    ??
    There isn't Qt Installer Framework on the list.
    http://uploads.im/4uCsN.jpg


  • Qt Champions 2016

    @tomy
    Ok, then it was not added back in Qt5.5
    Then you must download and compile it or
    simply install Qt5.7 where i know its there. maybe even 5.6

    There is also
    https://download.qt.io/official_releases/qt-installer-framework/2.0.1/



  • @mrjj

    @mrjj said in How to publish an app:

    @tomy
    Ok, then it was not added back in Qt5.5
    Then you must download and compile it or
    simply install Qt5.7 where i know its there. maybe even 5.6

    There is also
    https://download.qt.io/official_releases/qt-installer-framework/2.0.1/

    I downloaded and installed Qt Installer Framework Opensource 2.0.1 from that address.

    Now the next step is maybe returning to this page and following instructions from number 2, yes?

    It says: 2- Build the tools by running the "qmake" from the static Qt, followed by "make" or "nmake".
    Again, how to run "qmake" from the static Qt, followed by "make" or "nmake".?

    I've just run qmake from a command line for creating .pro files for my projects so far.


  • Qt Champions 2016

    @tomy
    How to install it depends on your compiler and if you really have a static version ?
    Since you need DLLs , it sounds you are not using a static version so by static , you mean "installed" ?

    "The Qt Installer Framework can be compiled with Microsoft Visual Studio 2013 and newer, GCC 4.7 and newer, and Clang 3.1 and newer."

    So use the one that comes with your compiler.



  • @mrjj

    How to install it depends on your compiler and if you really have a static version ?

    Install what? If, Qt Installer Framework Opensource 2.0.1, I installed it!
    A static version for the app? So why not have a static version?Does it have risks or whatever?

    Since you need DLLs , it sounds you are not using a static version so by static , you mean "installed" ?

    Dear mrjj, I really know nothing about these things! I'm a programmer of console apps of C++ and if you see that I could write a good calculator, it's not because of Qt, as I said I just read the first 2 chapters of C++-GUI-Programming-with-Qt-4-2ndEdition, and it was because I learnt C++ programming by PPP book of Stroustrup. So I think I'm good in C++ but very very novice in Qt. That is why I don't understand many things.

    My purpose/goal is to be able to create an installer for the apps I create. I publish them for free but maybe some time later I sell them.

    "The Qt Installer Framework can be compiled with Microsoft Visual Studio 2013 and newer, GCC 4.7 and newer, and Clang 3.1 and newer."

    Do you mean that although I installed Qt Installer Framework Opensource 2.0.1, I can't use it for my purpose on Qt Creator and I should use VS? OK, I've Ms VS 2015 installed on my machine.

    So use the one that comes with your compiler.

    My compiler for Qt programming is Qt Creator 3.6.0. But for console programming in C++, I use VS 2015.



  • @ambershark

    @tomy Yea it sounds like you want static linking. However, be aware that you need a commerical license (last time I checked) for static linking to Qt.

    What does that mean please?
    It was me who wrote the code and have the source code. I think if someone else, wants to use it (without getting permission from me) he/she should get a licence for it. Or maybe there is some misunderstanding for me (because it's the first time I do it).

    You should read about licensing Qt. If you like statically to Qt you have to have a commercial license. They are quite expensive. If you don't do static linking and instead use the dlls you can use the L-GPL license.

    It has nothing to do with you writing the code but you using the Qt library. My assumption on this is they want to make sure people aren't using their code in a modified state. Which is easy to do with dynamic linking and much harder with static.

    Either way it's their terms and if you statically link you have to have a commercial license. Last one I bought was around $2000, so I would just use dynamic linking if I were you. ;)

    To explain why the end user wouldn't pay for it .. you are the one using the software (Qt). Not the end user. If you wanted to you could write your own library of cross platform "widgets" and then you wouldn't need to use Qt or pay for it. In the same vein the end user of your product would be the one who needed to pay for it, not what you used to develop it. Hope that helps clear it up. :)


  • Qt Champions 2016

    @tomy
    Hi
    Ok, you don't have a static Qt. It's just you said static and it means a special version. But let's forget that again.
    Since you Qt5.5 did not have the Installer Framework pre-made, we need to build it.
    And to build it, it must be the same compiler as you use Qt with. VS 2015.
    And it must also be installed into the Qt as a module. All of this require reading docs and carefully
    input commands to build it.

    So I wondering if it not would be FAR, FAR easier to

    Use maintenance tool. Install Qt 5.7
    There u just can have Installer Framework and use it.
    No building and installing.

    Alternatively just find something easy to use to make installer
    Test
    http://izpack.org/

    You still FIRST have to make deployment folder and then
    use tool to make it an installer/ include in the installer.



  • @ambershark
    Hi,
    Thank you for your good info.

    @mrjj
    Hi,
    Thank you.
    I still have some questions in my mind about the whole issue. I have a plan:
    Since still I don't completely know about "pre-made", "static", "commercial licence" and many other things, and also you recommended that I install Qt 5.7, I want to:

    Firstly, download and install "qt-opensource-windows-x86-mingw530-5.7.0.exe" from here.

    Secondly, read this page and try to find answers for the questions I have in mind.
    Do you agree?

    If yes, OK & thanks. About installing the new Qt 5.7, since now I have two Qt-es (Qt5.5.1 and qtcreator-3.6.0) on my Win x64 machine, should I first uninstall both of these and then install the new Qt5.7 or install it over them!?
    As you know the purpose is to make a written Qt app, installabe on other systems when I want to share.
    Thanks once again.


  • Qt Champions 2016

    Yes or just use the online installer.

    http://doc.qt.io/qt-5/deployment.html
    is good for a start and also the link i posted where
    they discuss the same or simply search the forum
    as this is often a question.
    Making the deployment folder is real work and do not
    just work if not done right so please use both the tool and
    read the docs.

    • r install it over them!?
      It wont install over them. you would then have both.
      To minimize confusion, please remove all first and then install 5.7

    • As you know the purpose is to make a written Qt app, installabe on other systems when I want to share.

    Yes and for that u need
    1: The deplyment folder with the RIGHT dlls so your app can start.
    2: Some sort of installer that will copy these dlls and exe into c:\whatever etc and make icons etc.



  • @ambershark said in How to publish an app?:

    @ambershark

    @tomy Yea it sounds like you want static linking. However, be aware that you need a commerical license (last time I checked) for static linking to Qt.

    What does that mean please?
    It was me who wrote the code and have the source code. I think if someone else, wants to use it (without getting permission from me) he/she should get a licence for it. Or maybe there is some misunderstanding for me (because it's the first time I do it).

    You should read about licensing Qt. If you like statically to Qt you have to have a commercial license. They are quite expensive. If you don't do static linking and instead use the dlls you can use the L-GPL license.

    No, no. If you link statically you can use either commercial or LGPL licence, but if you use LGPL, you have to release your own code under LGPL, too. If you link dynamically you don't have to open your own source code even if you use LGPL Qt.



  • @Eeli-K Ah yes this is true. I forget about that as most people with licensing issues tend to be closed source people.

    Plus since I work in a 95% closed source world I tend to forget about the open source part of releasing with L-GPL.

    So @tomy if you release your code then you can statically link using the L-GPL side of the license without buying the commercial one. :)


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.