From 3acc29fca9395c7e76f0884d182da6da2e022b81 Mon Sep 17 00:00:00 2001 From: Harry Mallon Date: Wed, 25 May 2016 13:43:31 +0100 Subject: [PATCH] CPack/DragNDrop: Optionally disable `/Applications` symlink --- Help/release/dev/cpack-dmg-no-app-link.rst | 6 ++++++ Modules/CPackDMG.cmake | 5 +++++ Source/CPack/cmCPackDragNDropGenerator.cxx | 15 ++++++++++----- 3 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 Help/release/dev/cpack-dmg-no-app-link.rst diff --git a/Help/release/dev/cpack-dmg-no-app-link.rst b/Help/release/dev/cpack-dmg-no-app-link.rst new file mode 100644 index 000000000..46101a5f9 --- /dev/null +++ b/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. diff --git a/Modules/CPackDMG.cmake b/Modules/CPackDMG.cmake index 1959f22f4..929b2f621 100644 --- a/Modules/CPackDMG.cmake +++ b/Modules/CPackDMG.cmake @@ -46,6 +46,11 @@ # CPACK_DMG_DS_STORE_SETUP_SCRIPT is executed or CPACK_DMG_DS_STORE is # 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 # # Directory where license and menu files for different languages are stored. diff --git a/Source/CPack/cmCPackDragNDropGenerator.cxx b/Source/CPack/cmCPackDragNDropGenerator.cxx index 9576effce..f4379c13d 100644 --- a/Source/CPack/cmCPackDragNDropGenerator.cxx +++ b/Source/CPack/cmCPackDragNDropGenerator.cxx @@ -305,6 +305,9 @@ int cmCPackDragNDropGenerator::CreateDMG(const std::string& src_dir, ? 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 if (!cpack_license_file.empty() && cpack_license_file.find("CPack.GenericLicense.txt") != @@ -323,11 +326,13 @@ int cmCPackDragNDropGenerator::CreateDMG(const std::string& src_dir, staging << src_dir; // 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 ... if (!cpack_package_icon.empty()) {