Преглед на файлове

CPack/DragNDrop: Optionally disable `/Applications` symlink

Harry Mallon преди 9 години
родител
ревизия
3acc29fca9
променени са 3 файла, в които са добавени 21 реда и са изтрити 5 реда
  1. 6 0
      Help/release/dev/cpack-dmg-no-app-link.rst
  2. 5 0
      Modules/CPackDMG.cmake
  3. 10 5
      Source/CPack/cmCPackDragNDropGenerator.cxx

+ 6 - 0
Help/release/dev/cpack-dmg-no-app-link.rst

@@ -0,0 +1,6 @@
+cpack-dmg-no-app-link
+---------------------
+
+* The :module:`CPackDMG` module learned a new option to tell the CPack
+  ``DragNDrop`` generaor to skip the ``/Applications`` symlink.
+  See the :variable:`CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK` variable.

+ 5 - 0
Modules/CPackDMG.cmake

@@ -46,6 +46,11 @@
 #  CPACK_DMG_DS_STORE_SETUP_SCRIPT is executed or CPACK_DMG_DS_STORE is
 #  CPACK_DMG_DS_STORE_SETUP_SCRIPT is executed or CPACK_DMG_DS_STORE is
 #  installed.  By default no background image is set.
 #  installed.  By default no background image is set.
 #
 #
+# .. variable:: CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK
+#
+#  Default behaviour is to include a symlink to ``/Applications`` in the DMG.
+#  Set this option to ``ON`` to avoid adding the symlink.
+#
 # .. variable:: CPACK_DMG_SLA_DIR
 # .. variable:: CPACK_DMG_SLA_DIR
 #
 #
 #   Directory where license and menu files for different languages are stored.
 #   Directory where license and menu files for different languages are stored.

+ 10 - 5
Source/CPack/cmCPackDragNDropGenerator.cxx

@@ -305,6 +305,9 @@ int cmCPackDragNDropGenerator::CreateDMG(const std::string& src_dir,
     ? this->GetOption("CPACK_DMG_DS_STORE_SETUP_SCRIPT")
     ? this->GetOption("CPACK_DMG_DS_STORE_SETUP_SCRIPT")
     : "";
     : "";
 
 
+  const bool cpack_dmg_disable_applications_symlink =
+    this->IsOn("CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK");
+
   // only put license on dmg if is user provided
   // only put license on dmg if is user provided
   if (!cpack_license_file.empty() &&
   if (!cpack_license_file.empty() &&
       cpack_license_file.find("CPack.GenericLicense.txt") !=
       cpack_license_file.find("CPack.GenericLicense.txt") !=
@@ -323,11 +326,13 @@ int cmCPackDragNDropGenerator::CreateDMG(const std::string& src_dir,
   staging << src_dir;
   staging << src_dir;
 
 
   // Add a symlink to /Applications so users can drag-and-drop the bundle
   // Add a symlink to /Applications so users can drag-and-drop the bundle
-  // into it
-  std::ostringstream application_link;
-  application_link << staging.str() << "/Applications";
-  cmSystemTools::CreateSymlink("/Applications",
-                               application_link.str().c_str());
+  // into it unless this behaviour was disabled
+  if (!cpack_dmg_disable_applications_symlink) {
+    std::ostringstream application_link;
+    application_link << staging.str() << "/Applications";
+    cmSystemTools::CreateSymlink("/Applications",
+                                 application_link.str().c_str());
+  }
 
 
   // Optionally add a custom volume icon ...
   // Optionally add a custom volume icon ...
   if (!cpack_package_icon.empty()) {
   if (!cpack_package_icon.empty()) {