Ver código fonte

CPackIFW: Add support for ProductImages config option

Erlend E. Aasland 4 anos atrás
pai
commit
6d39c845ee

+ 8 - 0
Help/cpack_gen/ifw.rst

@@ -248,6 +248,14 @@ Package
  By default is ``OFF`` or used value
  from ``CPACK_DOWNLOAD_ALL`` if set
 
+.. variable:: CPACK_IFW_PACKAGE_PRODUCT_IMAGES
+
+ .. versionadded:: 3.23
+
+ A list of images to be shown on the ``PerformInstallationPage``.
+
+ This feature is available for QtIFW 4.0.0 or newer.
+
 Components
 """"""""""
 

+ 8 - 0
Help/release/dev/cpackifw-package-product-images.rst

@@ -0,0 +1,8 @@
+
+cpackifw-package-product-images
+-------------------------------
+
+* The :cpack_gen:`CPack IFW Generator` gained the new
+  :variable:`CPACK_IFW_PACKAGE_PRODUCT_IMAGES` variable for adding a list of
+  images to be shown on the ``PerformInstallationPage``.
+  This feature is available for QtIFW 4.0 and newer.

+ 19 - 0
Source/CPack/IFW/cmCPackIFWInstaller.cxx

@@ -275,6 +275,13 @@ void cmCPackIFWInstaller::ConfigureFromOptions()
     this->Resources.clear();
     cmExpandList(optIFW_PACKAGE_RESOURCES, this->Resources);
   }
+
+  // ProductImages
+  if (cmValue productImages =
+        this->GetOption("CPACK_IFW_PACKAGE_PRODUCT_IMAGES")) {
+    this->ProductImages.clear();
+    cmExpandList(productImages, this->ProductImages);
+  }
 }
 
 /** \class cmCPackIFWResourcesParser
@@ -508,6 +515,18 @@ void cmCPackIFWInstaller::GenerateInstallerFile()
     xout.Element("ControlScript", name);
   }
 
+  // Product images (copy to config dir)
+  if (!this->IsVersionLess("4.0") && !this->ProductImages.empty()) {
+    xout.StartElement("ProductImages");
+    for (auto const& srcImg : this->ProductImages) {
+      std::string name = cmSystemTools::GetFilenameName(srcImg);
+      std::string dstImg = this->Directory + "/config/" + name;
+      cmsys::SystemTools::CopyFileIfDifferent(srcImg, dstImg);
+      xout.Element("Image", name);
+    }
+    xout.EndElement();
+  }
+
   // Resources (copy to resources dir)
   if (!this->Resources.empty()) {
     std::vector<std::string> resources;

+ 3 - 0
Source/CPack/IFW/cmCPackIFWInstaller.h

@@ -118,6 +118,9 @@ public:
   /// List of resources to include in the installer binary
   std::vector<std::string> Resources;
 
+  /// A list of images to be shown on PerformInstallationPage.
+  std::vector<std::string> ProductImages;
+
 public:
   // Internal implementation