Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-13159

qmake propagates the same deployment rules to both *_template and *_installer PKG files

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: P2: Important P2: Important
    • 4.7.2
    • 4.6.3
    • Build tools: qmake
    • None
    • Nokia Qt SDK 1.0 (updated), Qt 4.6.3, Windows
    • a537137fffd72d153a35828228c00567a563e787

      There is no support for creating differentiated deployment scripting for qmake which would target the above mentioned files, *_template.pkg and *_installer.pkg. In the current implementation it seems that all customized default_deployment.pkg_prerules strings are sent to both files. Unfortunately they may not make sense to be there and can result on some behaviors tricky to explain.

      Here's one example ( based on recent discussion which can be seen at http://discussion.forum.nokia.com/forum/showthread.php?207982-Application-deployed-with-smart-installer-only-starts-once-on-Nokia-5800-X6 )

      default_deployment.pkg_prerules = "; CameraWrapper embedded sis"
      default_deployment.pkg_prerules += "IF NOT package(0x2001ec5f)"
      default_deployment.pkg_prerules += "@\".\Embedded\camerawrapper.sisx\", (0x2001ec5f)"
      default_deployment.pkg_prerules += "endif"
      default_deployment.pkg_prerules += "[0x2000DA56],0,0,0,

      {\"Nokia 5800 XpressMusic\"}"
      default_deployment.pkg_prerules += "[0x20023763],0,0,0,{\"Nokia 5230\"}"
      default_deployment.pkg_prerules += "[0x20023764],0,0,0,{"Nokia 5230"}"
      default_deployment.pkg_prerules += "[0x20024105],0,0,0,{\"Nokia 5230\"}"
      default_deployment.pkg_prerules += "[0x2002376B],0,0,0,{"Nokia 5230"}"
      default_deployment.pkg_prerules += "[0x20014DDD],0,0,0,{\"Nokia N97\"}"
      default_deployment.pkg_prerules += "[0x20014DDE],0,0,0,{"Nokia N97"}"
      default_deployment.pkg_prerules += "[0x20023766],0,0,0,{\"Nokia N97 mini\"}"
      default_deployment.pkg_prerules += "[0x200227DD],0,0,0,{\"Nokia X6\"}"
      default_deployment.pkg_prerules += "[0x2002BF91],0,0,0,{\"Nokia C6\"}"
      default_deployment.pkg_prerules += "[0x2000c520],0,0,0,{\"Samsung i8910 Omnia HD\"}"
      default_deployment.pkg_prerules += "[0x2001F0A1],0,0,0,{\"Sony Ericsson Satio\"}"
      default_deployment.pkg_prerules += "[0x20024EEC],0,0,0,{\"Sony Ericsson Vivaz\"}"
      default_deployment.pkg_prerules += "[0x20024EED],0,0,0,{\"Sony Ericsson Vivaz Pro\"}"

      The above statements are valid for a Qt app and presuming that it does not use smart installer and that Qt is already installed on the target devices all would be OK. But in the smart installer context we see three groups of rules:

      The first group does not belong to the smart installer wrapper. The installer does not need it and the embedded file will be removed when the wrapper is uninstalled becoming inaccessible to the app which needs it.

      default_deployment.pkg_prerules = "; CameraWrapper embedded sis"
      default_deployment.pkg_prerules += "IF NOT package(0x2001ec5f)"
      default_deployment.pkg_prerules += "@\".\Embedded\camerawrapper.sisx\", (0x2001ec5f)"
      default_deployment.pkg_prerules += "endif"

      The second group is OK, and it would actually be beneficial to be included in the installer wrapper so that the installation is limited to supported devices to start with. It could in fact be a set of rules/script used only in the installer, since once passed this the installtion clearly is allowed so the main app needs not do any more checking:

      default_deployment.pkg_prerules += "[0x2000DA56],0,0,0,{"Nokia 5800 XpressMusic"}

      "
      default_deployment.pkg_prerules += "[0x20023763],0,0,0,

      {\"Nokia 5230\"}"
      default_deployment.pkg_prerules += "[0x20023764],0,0,0,{"Nokia 5230"}

      "
      default_deployment.pkg_prerules += "[0x20024105],0,0,0,

      {\"Nokia 5230\"}"
      default_deployment.pkg_prerules += "[0x2002376B],0,0,0,{"Nokia 5230"}

      "
      default_deployment.pkg_prerules += "[0x20014DDD],0,0,0,

      {\"Nokia N97\"}"
      default_deployment.pkg_prerules += "[0x20014DDE],0,0,0,{"Nokia N97"}

      "
      default_deployment.pkg_prerules += "[0x20023766],0,0,0,

      {\"Nokia N97 mini\"}

      "
      default_deployment.pkg_prerules += "[0x200227DD],0,0,0,

      {\"Nokia X6\"}

      "
      default_deployment.pkg_prerules += "[0x2002BF91],0,0,0,

      {\"Nokia C6\"}

      "

      And finally, the 3rd group, referring to non-Nokia devices which the smart installer solution does not currently support. They are benign as such.

      default_deployment.pkg_prerules += "[0x2000c520],0,0,0,

      {\"Samsung i8910 Omnia HD\"}

      "
      default_deployment.pkg_prerules += "[0x2001F0A1],0,0,0,

      {\"Sony Ericsson Satio\"}

      "
      default_deployment.pkg_prerules += "[0x20024EEC],0,0,0,

      {\"Sony Ericsson Vivaz\"}

      "
      default_deployment.pkg_prerules += "[0x20024EED],0,0,0,

      {\"Sony Ericsson Vivaz Pro\"}

      "

      So, this being the background story, my proposal is as follows:

      • add scripting capability for differentiating the targeted PKG file
      • until done so, do not propagate any such rules to the _install.pkg file (or generate it but commented out for the developer to be able to easily enable the parts which make sense)
      • provide docs (in smart installer and Nokia Qt SDK) to indicate existing limitations with the wrapper level PKG scripting and qmake's support for the two pkg files

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            e0348803 Miikka Heikkinen
            lucian Lucian Tomuta
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes