Merge branch 'cpackifw-search-algorithm' into release
diff --git a/Modules/CPackIFW.cmake b/Modules/CPackIFW.cmake
index 6c93ddb..08078cb 100644
--- a/Modules/CPackIFW.cmake
+++ b/Modules/CPackIFW.cmake
@@ -433,11 +433,15 @@
 
 # Default path
 
-set(_CPACK_IFW_PATHS
-  "${QTIFWDIR}"
-  "$ENV{QTIFWDIR}"
-  "${QTDIR}"
-  "$ENV{QTIFWDIR}")
+foreach(_CPACK_IFW_PATH_VAR "QTIFWDIR" "QTDIR")
+  if(DEFINED ${_CPACK_IFW_PATH_VAR}
+    AND NOT "${${_CPACK_IFW_PATH_VAR}}" STREQUAL "")
+    list(APPEND _CPACK_IFW_PATHS "${${_CPACK_IFW_PATH_VAR}}")
+  endif()
+  if(NOT "$ENV{${_CPACK_IFW_PATH_VAR}}" STREQUAL "")
+    list(APPEND _CPACK_IFW_PATHS "$ENV{${_CPACK_IFW_PATH_VAR}}")
+  endif()
+endforeach()
 if(WIN32)
   list(APPEND _CPACK_IFW_PATHS
     "$ENV{HOMEDRIVE}/Qt"
@@ -447,22 +451,44 @@
     "$ENV{HOME}/Qt"
     "/opt/Qt")
 endif()
+list(REMOVE_DUPLICATES _CPACK_IFW_PATHS)
 
-set(_CPACK_IFW_SUFFIXES
-# Common
-  "bin"
-# Second branch
-  "QtIFW2.3.0/bin"
-  "QtIFW2.2.0/bin"
-  "QtIFW2.1.0/bin"
-  "QtIFW2.0.3/bin"
-  "QtIFW2.0.1/bin"
-  "QtIFW2.0.0/bin"
-# First branch
-  "QtIFW-1.6.0/bin"
-  "QtIFW-1.5.0/bin"
-  "QtIFW-1.4.0/bin"
-  "QtIFW-1.3.0/bin")
+set(_CPACK_IFW_PREFIXES
+  # QtSDK
+  "Tools/QtInstallerFramework/"
+  # Second branch
+  "QtIFW"
+  # First branch
+  "QtIFW-")
+
+set(_CPACK_IFW_VERSIONS
+  "2.3"
+  "2.3.0"
+  "2.2"
+  "2.2.0"
+  "2.1"
+  "2.1.0"
+  "2.0"
+  "2.0.3"
+  "2.0.2"
+  "2.0.1"
+  "2.0.0"
+  "1.6"
+  "1.6.0"
+  "1.5"
+  "1.5.0"
+  "1.4"
+  "1.4.0"
+  "1.3"
+  "1.3.0")
+
+set(_CPACK_IFW_SUFFIXES "bin")
+foreach(_CPACK_IFW_PREFIX ${_CPACK_IFW_PREFIXES})
+  foreach(_CPACK_IFW_VERSION ${_CPACK_IFW_VERSIONS})
+    list(APPEND
+      _CPACK_IFW_SUFFIXES "${_CPACK_IFW_PREFIX}${_CPACK_IFW_VERSION}/bin")
+  endforeach()
+endforeach()
 
 # Look for 'binarycreator'