Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How to create a .qs file

How to create a .qs file

Scheduled Pinned Locked Moved Unsolved General and Desktop
29 Posts 5 Posters 12.6k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • tomyT tomy

    Hi,
    Yeah, I used it. There should be some issue in paths in my stuff. :(

    mrjjM Offline
    mrjjM Offline
    mrjj
    Lifetime Qt Champion
    wrote on last edited by
    #12

    @tomy
    with spaces or what kind of issues?

    1 Reply Last reply
    0
    • tomyT Offline
      tomyT Offline
      tomy
      wrote on last edited by
      #13

      Please take a look at this:
      https://postimg.org/image/kaf5gm31t/

      mrjjM 1 Reply Last reply
      0
      • tomyT tomy

        Please take a look at this:
        https://postimg.org/image/kaf5gm31t/

        mrjjM Offline
        mrjjM Offline
        mrjj
        Lifetime Qt Champion
        wrote on last edited by
        #14

        @tomy
        Oh, there is something in the files it dont like. it seems.

        When you tried the example , no errors were displayed?

        tomyT 1 Reply Last reply
        1
        • mrjjM mrjj

          @tomy
          Oh, there is something in the files it dont like. it seems.

          When you tried the example , no errors were displayed?

          tomyT Offline
          tomyT Offline
          tomy
          wrote on last edited by
          #15

          @mrjj
          The code is of months ago but the Qt_Calculator.exe of Release mode now works fine in the data folder.
          I think the problem is of either installscript.qs file or pageform.ui file. :(

          mrjjM 1 Reply Last reply
          0
          • tomyT tomy

            @mrjj
            The code is of months ago but the Qt_Calculator.exe of Release mode now works fine in the data folder.
            I think the problem is of either installscript.qs file or pageform.ui file. :(

            mrjjM Offline
            mrjjM Offline
            mrjj
            Lifetime Qt Champion
            wrote on last edited by
            #16

            @tomy
            But the errors seems to point to package.xml ?

            1 Reply Last reply
            1
            • tomyT Offline
              tomyT Offline
              tomy
              wrote on last edited by tomy
              #17

              This is the contents of that file:
              https://postimg.org/image/hsuszqcel/

              I see nothing clearly wrong in it.

              mrjjM 1 Reply Last reply
              0
              • tomyT tomy

                This is the contents of that file:
                https://postimg.org/image/hsuszqcel/

                I see nothing clearly wrong in it.

                mrjjM Offline
                mrjjM Offline
                mrjj
                Lifetime Qt Champion
                wrote on last edited by
                #18

                @tomy
                well the errors says it wont use name, but i fail to see the "meta" it talks about.
                It also says the default and virtual should not be used together so maybe try to remove one?

                tomyT 1 Reply Last reply
                1
                • mrjjM mrjj

                  @tomy
                  well the errors says it wont use name, but i fail to see the "meta" it talks about.
                  It also says the default and virtual should not be used together so maybe try to remove one?

                  tomyT Offline
                  tomyT Offline
                  tomy
                  wrote on last edited by
                  #19

                  @mrjj
                  Well it worked, not completely although. :)

                  I removed that virtual line in the package.xml. And it is in the meta folder. Please look:
                  https://postimg.org/image/u84mw60p9/

                  Then re-done the command. It again returned some issues:
                  https://postimg.org/image/y1wdy7ihz/

                  It finally created an installer in the Result folder on desktop. But It doesn't put a shortcut of the program on desktop, and it's the contents of the installation folder:
                  https://postimg.org/image/kvdfu4zcb/

                  I think now I should somehow change the contents of installscript.qs file.

                  mrjjM 1 Reply Last reply
                  0
                  • tomyT tomy

                    @mrjj
                    Well it worked, not completely although. :)

                    I removed that virtual line in the package.xml. And it is in the meta folder. Please look:
                    https://postimg.org/image/u84mw60p9/

                    Then re-done the command. It again returned some issues:
                    https://postimg.org/image/y1wdy7ihz/

                    It finally created an installer in the Result folder on desktop. But It doesn't put a shortcut of the program on desktop, and it's the contents of the installation folder:
                    https://postimg.org/image/kvdfu4zcb/

                    I think now I should somehow change the contents of installscript.qs file.

                    mrjjM Offline
                    mrjjM Offline
                    mrjj
                    Lifetime Qt Champion
                    wrote on last edited by
                    #20

                    @tomy
                    Yes the installscript.qs should contain the actual
                    code to execute while installing.

                    1 Reply Last reply
                    1
                    • tomyT Offline
                      tomyT Offline
                      tomy
                      wrote on last edited by tomy
                      #21

                      Yes, it seems to be the last important issue on the app. How to change it to work fine, please?
                      This is its code:

                      function Component()
                      {
                          // Install to @RootDir@ instead of @HomeDir@ on Windows
                          if (installer.value("os") === "win") {
                              var homeDir = installer.value("HomeDir");
                              var targetDir = installer.value("TargetDir").replace(homeDir, "@RootDir@");
                              installer.setValue("TargetDir", targetDir);
                          }
                      
                          // do not show component selection page
                          installer.setDefaultPageVisible(QInstaller.ComponentSelection, false);
                          // no startmenu entry so no need to ask where to create it
                          installer.setDefaultPageVisible(QInstaller.StartMenuSelection, false);
                      }
                      
                      mrjjM 1 Reply Last reply
                      0
                      • tomyT tomy

                        Yes, it seems to be the last important issue on the app. How to change it to work fine, please?
                        This is its code:

                        function Component()
                        {
                            // Install to @RootDir@ instead of @HomeDir@ on Windows
                            if (installer.value("os") === "win") {
                                var homeDir = installer.value("HomeDir");
                                var targetDir = installer.value("TargetDir").replace(homeDir, "@RootDir@");
                                installer.setValue("TargetDir", targetDir);
                            }
                        
                            // do not show component selection page
                            installer.setDefaultPageVisible(QInstaller.ComponentSelection, false);
                            // no startmenu entry so no need to ask where to create it
                            installer.setDefaultPageVisible(QInstaller.StartMenuSelection, false);
                        }
                        
                        mrjjM Offline
                        mrjjM Offline
                        mrjj
                        Lifetime Qt Champion
                        wrote on last edited by
                        #22

                        @tomy
                        That i dont know
                        It seems to be commands from
                        http://doc.qt.io/qtinstallerframework/scripting.html

                        So you will also need some copy commands from ( i think)
                        http://doc.qt.io/qtinstallerframework/operations.html

                        1 Reply Last reply
                        2
                        • tomyT Offline
                          tomyT Offline
                          tomy
                          wrote on last edited by
                          #23

                          OK, mate. I will read both posts precisely and will post again to you here about the results.

                          1 Reply Last reply
                          1
                          • tomyT Offline
                            tomyT Offline
                            tomy
                            wrote on last edited by
                            #24

                            I read the pages and changed the installscript.qs to this:

                            function Component()
                            {
                                if (installer.value("os") === "win")
                                  {
                                     installer.setValue("ApplicationsDir", "ApplicationsDir");
                                     component.addOperation("CreateShortcut",
                                     "@DesktopDir@/Qt_Calculator.exe", "@StartMenuDir@/Qt_Calculator.lnk");
                                  }
                            }
                            

                            My purposes were to first make the app be installed in C:\ProgramFiles folder and then to have a shortcut of the app on my Desktop.
                            The data folder contains a Qt_Calculator.icon file. These are all contents of that folder:
                            https://postimg.org/image/f3fddnww5/

                            Then I again used this command:
                            C:\Users\Abbasi\Desktop\package_directory\packages\com.vendor.product\data> C:\Qt\QtIFW2.0.1\bin\binarycreator.exe -c C:\Users\Abbasi\Desktop\package_directory\config\config.xml -p C:\Users\Abbasi\Desktop\package_directory\packages C:\Users\Abbasi\Desktop\Result\Qt_Calculator.exe

                            I got an error and a warning as below:
                            https://postimg.org/image/w6p5ajr25/

                            At the end, it created the installer but it works this way:
                            It creates an installer file in the Result folder and have the default path of C:\Users\Abbasi for installation and after installing it creates no shourcut on the Desktop.

                            1 Reply Last reply
                            0
                            • RatzzR Offline
                              RatzzR Offline
                              Ratzz
                              wrote on last edited by
                              #25

                              @tomy
                              I used this

                              Component.prototype.createOperations = function()
                              {
                                  try {
                                      // call the base create operations function
                                      component.createOperations();
                                      if (installer.value("os") == "win") { 
                                          try {
                                              var userProfile = installer.environmentVariable("USERPROFILE");
                                              installer.setValue("UserProfile", userProfile);
                              				component.addOperation("CreateShortcut", "@TargetDir@/MyApp.exe", "@UserProfile@/Desktop/MyApp.lnk" ,"workingDirectory=@TargetDir@", "iconPath=@TargetDir@/MyApp.ico");			
                              				component.addOperation("CreateShortcut", "@TargetDir@/MyApp.exe", "@TargetDir@/MyApp.lnk" ,"workingDirectory=@TargetDir@", "iconPath=@TargetDir@/MyApp.ico");			
                              				component.addOperation("CreateShortcut", "@TargetDir@/MyApp.exe", "@StartMenuDir@/MyApp.lnk", "workingDirectory=@TargetDir@", "iconPath=@TargetDir@/MyApp.ico");
                                          } catch (e) {
                                              // Do nothing if key doesn't exist
                                          }
                                      }
                                  } catch (e) {
                                      print(e);
                                  }
                              }

                              --Alles ist gut.

                              1 Reply Last reply
                              3
                              • tomyT Offline
                                tomyT Offline
                                tomy
                                wrote on last edited by tomy
                                #26

                                Thank you for your reply, I used your code and only changed MyApp to Qt_Calculator but it even didn't create the installer! :( :(

                                Component.prototype.createOperations = function()
                                {
                                    try {
                                        // call the base create operations function
                                        component.createOperations();
                                        if (installer.value("os") == "win") {
                                            try {
                                                var userProfile = installer.environmentVariable("USERPROFILE");
                                                installer.setValue("UserProfile", userProfile);
                                                                component.addOperation("CreateShortcut", "@TargetDir@/Qt_Calculator.exe", "@UserProfile@/Desktop/Qt_Calculator.lnk" ,"workingDirectory=@TargetDir@", "iconPath=@TargetDir@/Qt_Calculator.ico");
                                                                component.addOperation("CreateShortcut", "@TargetDir@/Qt_Calculator.exe", "@TargetDir@/Qt_Calculator.lnk" ,"workingDirectory=@TargetDir@", "iconPath=@TargetDir@/Qt_Calculator.ico");
                                                                component.addOperation("CreateShortcut", "@TargetDir@/Qt_Calculator.exe", "@StartMenuDir@/Qt_Calculator.lnk", "workingDirectory=@TargetDir@", "iconPath=@TargetDir@/Qt_Calculator.ico");
                                            } catch (e) {
                                                // Do nothing if key doesn't exist
                                            }
                                        }
                                    } catch (e) {
                                        print(e);
                                    }
                                }
                                

                                I used the command below and got errors:

                                alt text

                                And my data folder consists of:

                                alt text

                                J.HilkJ 1 Reply Last reply
                                0
                                • tomyT tomy

                                  Thank you for your reply, I used your code and only changed MyApp to Qt_Calculator but it even didn't create the installer! :( :(

                                  Component.prototype.createOperations = function()
                                  {
                                      try {
                                          // call the base create operations function
                                          component.createOperations();
                                          if (installer.value("os") == "win") {
                                              try {
                                                  var userProfile = installer.environmentVariable("USERPROFILE");
                                                  installer.setValue("UserProfile", userProfile);
                                                                  component.addOperation("CreateShortcut", "@TargetDir@/Qt_Calculator.exe", "@UserProfile@/Desktop/Qt_Calculator.lnk" ,"workingDirectory=@TargetDir@", "iconPath=@TargetDir@/Qt_Calculator.ico");
                                                                  component.addOperation("CreateShortcut", "@TargetDir@/Qt_Calculator.exe", "@TargetDir@/Qt_Calculator.lnk" ,"workingDirectory=@TargetDir@", "iconPath=@TargetDir@/Qt_Calculator.ico");
                                                                  component.addOperation("CreateShortcut", "@TargetDir@/Qt_Calculator.exe", "@StartMenuDir@/Qt_Calculator.lnk", "workingDirectory=@TargetDir@", "iconPath=@TargetDir@/Qt_Calculator.ico");
                                              } catch (e) {
                                                  // Do nothing if key doesn't exist
                                              }
                                          }
                                      } catch (e) {
                                          print(e);
                                      }
                                  }
                                  

                                  I used the command below and got errors:

                                  alt text

                                  And my data folder consists of:

                                  alt text

                                  J.HilkJ Offline
                                  J.HilkJ Offline
                                  J.Hilk
                                  Moderators
                                  wrote on last edited by
                                  #27

                                  Hi @tomy the QInstallerFramework can be confusing, especiall if you don't have a workign example, like it seems to be the case for you.

                                  I went and uploded the InstallerFramework example for an Installer with a -Windows- Start Menu entry.

                                  Let's see if the fileupload system of the updated forum works:
                                  seems like a admin/mod only thing.
                                  External link here:

                                  It boils down to a few steps that we can walk through, if you want to.

                                  if you unzip the file, you get a folder with 2 subfolders config and packages
                                  in the config folder you'll find the config.xml,
                                  This one has information about your Installer over all, infos about your app the developer, release date, links to repositories(only needed for online installer)

                                  In packages you'll find 2 folders data and meta. in Data you place all needed dlls files exe's you need to run your Application without Qt-Installed on your system.

                                  In meta you place the installer script file additional ui-files licenzes etc.

                                  Now open your cmd-line tool on windows.

                                  Win-Key + R
                                  cmd
                                  Enter //ctrl +shift+ enter for elevated rights
                                  
                                  //cd to your folder that contains config- and packages folders
                                  cd c:\Path\To\example\startmenu
                                  
                                  //now enter:
                                  c:\Path\to\QtInstallerFrameWork\bin\binarycreator.exe --offline-only -c config\config.xml -p packages TheNameYourInstallerShallHave.exe
                                  

                                  let's see if you still get errors.


                                  Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                                  Q: What's that?
                                  A: It's blue light.
                                  Q: What does it do?
                                  A: It turns blue.

                                  1 Reply Last reply
                                  2
                                  • mrjjM Offline
                                    mrjjM Offline
                                    mrjj
                                    Lifetime Qt Champion
                                    wrote on last edited by
                                    #28

                                    Hmm, only some types are allowed it seems. ( even for mods)
                                    alt text

                                    1 Reply Last reply
                                    1
                                    • tomyT Offline
                                      tomyT Offline
                                      tomy
                                      wrote on last edited by
                                      #29

                                      Thank you very much all.
                                      The program/process works fine now.

                                      I think I can use this process for any other new example too, with probably some modifications of course.

                                      I have some questions that will be helpful for my information if they are answered.

                                      1- What is that .ui file for? (while it contains almost nothing!)
                                      2- You programmers do program, but don't you create installers for them? If not, so how could they be useful? And if yes, what tool (if not Qt Installer Framework) do you use for that?
                                      3- Are the errors/warns I get while running the CMD command unimportant and should I ignore them?

                                      alt text

                                      Thanks.

                                      1 Reply Last reply
                                      0

                                      • Login

                                      • Login or register to search.
                                      • First post
                                        Last post
                                      0
                                      • Categories
                                      • Recent
                                      • Tags
                                      • Popular
                                      • Users
                                      • Groups
                                      • Search
                                      • Get Qt Extensions
                                      • Unsolved