This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  55de65e7179782b252ea803b3087d6df59da9d28 (commit)
       via  9f5108f1983306b0abf4c91b36fdb8199bc9f6ef (commit)
       via  bb68011cbabc40fedf3c7c9cbfe05f85473b26cf (commit)
       via  9d11f6d9df187945025d062b103cfdc38d94b105 (commit)
       via  5911453fd21455cf56f339604c83fb49fb4bf6c2 (commit)
       via  6d77e1ab3f6cfe5e2019a418da7c18cc3515ab54 (commit)
       via  8c0e32550cf8afbb8419dff3698915b550e9c86d (commit)
      from  ee4b951bd45a68c5f81715d33b4139bde4932fe8 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=55de65e7179782b252ea803b3087d6df59da9d28
commit 55de65e7179782b252ea803b3087d6df59da9d28
Merge: ee4b951 9f5108f
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Fri Jul 19 13:50:15 2013 -0400
Commit:     CMake Topic Stage <kwro...@kitware.com>
CommitDate: Fri Jul 19 13:50:15 2013 -0400

    Merge topic 'cpack-wix' into next
    
    9f5108f CPackWIX: Add support for custom WiX templates
    bb68011 CMakeCPack: Provide an upgrade guid for WiX
    9d11f6d CPackWIX: Add option to specify the language(s) of the installer
    5911453 CPackWIX: Handle multiple shortcuts in the start menu
    6d77e1a CPackWIX: Fix MSI package layout regression from parent
    8c0e325 CPackWIX: Handle CPACK_PACKAGE_EXECUTABLES (#13967)


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9f5108f1983306b0abf4c91b36fdb8199bc9f6ef
commit 9f5108f1983306b0abf4c91b36fdb8199bc9f6ef
Author:     Adam J. Weigold <a...@adamweigold.com>
AuthorDate: Tue Jul 2 17:19:31 2013 -0500
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Fri Jul 19 11:42:16 2013 -0400

    CPackWIX: Add support for custom WiX templates
    
    WiX provides a lot of functionality for installers that cannot be
    supported (easily) in the default WIX.template.in file.
    
    For most users, the default template should be fine.  However if users
    want to produce merge modules, include custom actions, etc, this new
    option allows for a hook into how the wxs is produced.

diff --git a/Modules/CPackWIX.cmake b/Modules/CPackWIX.cmake
index 4f57efa..fce25f0 100644
--- a/Modules/CPackWIX.cmake
+++ b/Modules/CPackWIX.cmake
@@ -93,6 +93,15 @@
 # http://wix.sourceforge.net/manual-wix3/WixUI_localization.htm
 #
 ##end
+##variable
+# CPACK_WIX_TEMPLATE - Template file for WiX generation
+#
+# If this variable is set, the specified template will be used to generate the 
WiX wxs file.
+# This should be used if further customization of the output is required.
+#
+# If this variable is not set, the default MSI template included with CMake 
will be used.
+#
+##end
 
 #=============================================================================
 # Copyright 2012 Kitware, Inc.
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.cxx 
b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
index 9ea4b7a..e921819 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.cxx
+++ b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
@@ -451,6 +451,10 @@ bool cmCPackWIXGenerator::CreateWiXSourceFiles()
   directoryDefinitions.EndElement();
 
   std::string wixTemplate = FindTemplate("WIX.template.in");
+  if(GetOption("CPACK_WIX_TEMPLATE") != 0)
+    {
+    wixTemplate = GetOption("CPACK_WIX_TEMPLATE");
+    }
   if(wixTemplate.empty())
     {
     cmCPackLogger(cmCPackLog::LOG_ERROR,

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bb68011cbabc40fedf3c7c9cbfe05f85473b26cf
commit bb68011cbabc40fedf3c7c9cbfe05f85473b26cf
Author:     Richard Ulrich <ri...@paraeasy.ch>
AuthorDate: Wed May 8 17:13:31 2013 +0200
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Fri Jul 19 11:41:16 2013 -0400

    CMakeCPack: Provide an upgrade guid for WiX
    
    Set CPACK_WIX_UPGRADE_GUID.  Without this upgrade GUID, you end up with
    multiple instances of the same installation when installing cmake from a
    WIX generated installer.

diff --git a/CMakeCPack.cmake b/CMakeCPack.cmake
index a27d000..2495c44 100644
--- a/CMakeCPack.cmake
+++ b/CMakeCPack.cmake
@@ -113,6 +113,8 @@ if(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
     include(Utilities/Release/Cygwin/CMakeLists.txt)
   endif()
 
+  set(CPACK_WIX_UPGRADE_GUID "8ffd1d72-b7f1-11e2-8ee5-00238bca4991")
+
   # Set the options file that needs to be included inside 
CMakeCPackOptions.cmake
   set(QT_DIALOG_CPACK_OPTIONS_FILE 
${CMake_BINARY_DIR}/Source/QtDialog/QtDialogCPack.cmake)
   configure_file("${CMake_SOURCE_DIR}/CMakeCPackOptions.cmake.in"

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9d11f6d9df187945025d062b103cfdc38d94b105
commit 9d11f6d9df187945025d062b103cfdc38d94b105
Author:     Richard Ulrich <ri...@paraeasy.ch>
AuthorDate: Mon May 6 17:21:42 2013 +0200
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Fri Jul 19 10:52:28 2013 -0400

    CPackWIX: Add option to specify the language(s) of the installer
    
    Add option "CPACK_WIX_CULTURES".

diff --git a/Modules/CPackWIX.cmake b/Modules/CPackWIX.cmake
index 69a181e..4f57efa 100644
--- a/Modules/CPackWIX.cmake
+++ b/Modules/CPackWIX.cmake
@@ -81,6 +81,17 @@
 # CPACK_WIX_PROGRAM_MENU_FOLDER - Start menu folder name for launcher.
 #
 # If this variable is not set, it will be initialized with CPACK_PACKAGE_NAME
+#
+##end
+##variable
+# CPACK_WIX_CULTURES - Language(s) of the installer
+#
+# Languages are compiled into the WixUI extension library. To use them,
+# simply provide the name of the culture.  If you specify more than one
+# culture identifier in a comma or semicolon delimited list, the first one
+# that is found will be used.  You can find a list of supported languages at:
+# http://wix.sourceforge.net/manual-wix3/WixUI_localization.htm
+#
 ##end
 
 #=============================================================================
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.cxx 
b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
index 8d50a60..9ea4b7a 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.cxx
+++ b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
@@ -100,6 +100,11 @@ bool cmCPackWIXGenerator::RunLightCommand(const 
std::string& objectFiles)
   command << " -nologo";
   command << " -out " << QuotePath(packageFileNames.at(0));
   command << " -ext WixUIExtension";
+  const char* const cultures = GetOption("CPACK_WIX_CULTURES");
+  if(cultures)
+    {
+    command << " -cultures:" << cultures;
+    }
   command << " " << objectFiles;
 
   return RunWiXCommand(command.str());

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5911453fd21455cf56f339604c83fb49fb4bf6c2
commit 5911453fd21455cf56f339604c83fb49fb4bf6c2
Author:     Richard Ulrich <ri...@paraeasy.ch>
AuthorDate: Wed May 8 16:39:32 2013 +0200
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Fri Jul 19 10:52:25 2013 -0400

    CPackWIX: Handle multiple shortcuts in the start menu

diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.cxx 
b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
index f443905..8d50a60 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.cxx
+++ b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
@@ -380,7 +380,14 @@ bool cmCPackWIXGenerator::CreateWiXSourceFiles()
   directoryDefinitions.EndElement();
   directoryDefinitions.EndElement();
 
-  if (dirIdExecutables.size() > 0 && dirIdExecutables.size() % 3 == 0) {
+  if (dirIdExecutables.size() > 0 && dirIdExecutables.size() % 3 == 0)
+    {
+    fileDefinitions.BeginElement("DirectoryRef");
+    fileDefinitions.AddAttribute("Id", "PROGRAM_MENU_FOLDER");
+    fileDefinitions.BeginElement("Component");
+    fileDefinitions.AddAttribute("Id", "SHORTCUT");
+    fileDefinitions.AddAttribute("Guid", "*");
+
     std::vector<std::string>::iterator it;
     for ( it = dirIdExecutables.begin() ;
           it != dirIdExecutables.end();
@@ -390,13 +397,12 @@ bool cmCPackWIXGenerator::CreateWiXSourceFiles()
       std::string iconName = *it++;
       std::string directoryId = *it;
 
-      fileDefinitions.BeginElement("DirectoryRef");
-      fileDefinitions.AddAttribute("Id", "PROGRAM_MENU_FOLDER");
-      fileDefinitions.BeginElement("Component");
-      fileDefinitions.AddAttribute("Id", "SHORTCUT");
-      fileDefinitions.AddAttribute("Guid", "*");
       fileDefinitions.BeginElement("Shortcut");
-      fileDefinitions.AddAttribute("Id", "SHORTCUT_");
+      std::string shortcutName = fileName; // the iconName is mor likely to 
contain blanks early on
+      const std::string::difference_type dotPos = shortcutName.find('.');
+      if(std::string::npos == dotPos)
+        shortcutName = shortcutName.substr(0, dotPos);
+      fileDefinitions.AddAttribute("Id", "SHORTCUT_" + shortcutName);
       fileDefinitions.AddAttribute("Name", iconName);
       std::string target = "[" + directoryId + "]" + fileName;
       fileDefinitions.AddAttribute("Target", target);

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6d77e1ab3f6cfe5e2019a418da7c18cc3515ab54
commit 6d77e1ab3f6cfe5e2019a418da7c18cc3515ab54
Author:     Ian Monroe <imon...@kde.org>
AuthorDate: Thu Apr 18 10:19:13 2013 -0700
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Fri Jul 19 10:49:20 2013 -0400

    CPackWIX: Fix MSI package layout regression from parent
    
    The parent commit added a regression where if the install directory had:
    
      parent
        child A
        child B
    
    the produced MSI would install:
    
      parent
        child A
           child B

diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.cxx 
b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
index fc51b77..f443905 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.cxx
+++ b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
@@ -377,10 +377,6 @@ bool cmCPackWIXGenerator::CreateWiXSourceFiles()
     directoryDefinitions, fileDefinitions, featureDefinitions,
     directoryCounter, fileCounter, cpackPkgExecutables, dirIdExecutables);
 
-  for(size_t i = 1; i < install_root.size(); ++i)
-    {
-    directoryDefinitions.EndElement();
-    }
   directoryDefinitions.EndElement();
   directoryDefinitions.EndElement();
 
@@ -558,7 +554,7 @@ void cmCPackWIXGenerator::AddDirectoryAndFileDefinitons(
         fileCounter,
         pkgExecutables,
         dirIdExecutables);
-
+      directoryDefinitions.EndElement();
       }
     else
       {

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8c0e32550cf8afbb8419dff3698915b550e9c86d
commit 8c0e32550cf8afbb8419dff3698915b550e9c86d
Author:     Fredrik Axelsson <fra...@gmail.com>
AuthorDate: Fri Mar 1 11:09:58 2013 +0900
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Fri Jul 19 10:49:00 2013 -0400

    CPackWIX: Handle CPACK_PACKAGE_EXECUTABLES (#13967)
    
    Add start menu items including an uninstall shortcut.  Add variable
    CPACK_WIX_PROGRAM_MENU_FOLDER to configure folder name.

diff --git a/Modules/CPackWIX.cmake b/Modules/CPackWIX.cmake
index 0c0a8f1..69a181e 100644
--- a/Modules/CPackWIX.cmake
+++ b/Modules/CPackWIX.cmake
@@ -76,6 +76,12 @@
 # This image must be 493 by 312 pixels.
 #
 ##end
+#
+##variable
+# CPACK_WIX_PROGRAM_MENU_FOLDER - Start menu folder name for launcher.
+#
+# If this variable is not set, it will be initialized with CPACK_PACKAGE_NAME
+##end
 
 #=============================================================================
 # Copyright 2012 Kitware, Inc.
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.cxx 
b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
index e8b0ea9..fc51b77 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.cxx
+++ b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
@@ -224,6 +224,9 @@ bool cmCPackWIXGenerator::CreateWiXVariablesIncludeFile()
   CopyDefinition(includeFile, "CPACK_WIX_PRODUCT_ICON");
   CopyDefinition(includeFile, "CPACK_WIX_UI_BANNER");
   CopyDefinition(includeFile, "CPACK_WIX_UI_DIALOG");
+  SetOptionIfNotSet("CPACK_WIX_PROGRAM_MENU_FOLDER",
+    GetOption("CPACK_PACKAGE_NAME"));
+  CopyDefinition(includeFile, "CPACK_WIX_PROGRAM_MENU_FOLDER");
 
   return true;
 }
@@ -339,22 +342,105 @@ bool cmCPackWIXGenerator::CreateWiXSourceFiles()
   featureDefinitions.BeginElement("FeatureRef");
   featureDefinitions.AddAttribute("Id", "ProductFeature");
 
+  const char *cpackPackageExecutables = GetOption("CPACK_PACKAGE_EXECUTABLES");
+  std::vector<std::string> cpackPkgExecutables;
+  std::string regKey;
+  if ( cpackPackageExecutables )
+    {
+    cmSystemTools::ExpandListArgument(cpackPackageExecutables,
+      cpackPkgExecutables);
+    if ( cpackPkgExecutables.size() % 2 != 0 )
+      {
+      cmCPackLogger(cmCPackLog::LOG_ERROR,
+        "CPACK_PACKAGE_EXECUTABLES should contain pairs of <executable> and "
+        "<icon name>." << std::endl);
+      cpackPkgExecutables.clear();
+      }
+
+    const char *cpackVendor = GetOption("CPACK_PACKAGE_VENDOR");
+    const char *cpackPkgName = GetOption("CPACK_PACKAGE_NAME");
+    if (!cpackVendor || !cpackPkgName)
+      {
+      cmCPackLogger(cmCPackLog::LOG_WARNING, "CPACK_PACKAGE_VENDOR and "
+                    "CPACK_PACKAGE_NAME must be defined for shortcut creation" 
<< std::endl);
+      cpackPkgExecutables.clear();
+      }
+    else
+      {
+        regKey = std::string("Software/") + cpackVendor + "/" + cpackPkgName;
+      }
+    }
+
+  std::vector<std::string> dirIdExecutables;
   AddDirectoryAndFileDefinitons(
     toplevel, "INSTALL_ROOT",
     directoryDefinitions, fileDefinitions, featureDefinitions,
-    directoryCounter, fileCounter);
-
-  featureDefinitions.EndElement();
-  featureDefinitions.EndElement();
-  fileDefinitions.EndElement();
+    directoryCounter, fileCounter, cpackPkgExecutables, dirIdExecutables);
 
   for(size_t i = 1; i < install_root.size(); ++i)
     {
     directoryDefinitions.EndElement();
     }
-
   directoryDefinitions.EndElement();
   directoryDefinitions.EndElement();
+
+  if (dirIdExecutables.size() > 0 && dirIdExecutables.size() % 3 == 0) {
+    std::vector<std::string>::iterator it;
+    for ( it = dirIdExecutables.begin() ;
+          it != dirIdExecutables.end();
+          ++it)
+      {
+      std::string fileName = *it++;
+      std::string iconName = *it++;
+      std::string directoryId = *it;
+
+      fileDefinitions.BeginElement("DirectoryRef");
+      fileDefinitions.AddAttribute("Id", "PROGRAM_MENU_FOLDER");
+      fileDefinitions.BeginElement("Component");
+      fileDefinitions.AddAttribute("Id", "SHORTCUT");
+      fileDefinitions.AddAttribute("Guid", "*");
+      fileDefinitions.BeginElement("Shortcut");
+      fileDefinitions.AddAttribute("Id", "SHORTCUT_");
+      fileDefinitions.AddAttribute("Name", iconName);
+      std::string target = "[" + directoryId + "]" + fileName;
+      fileDefinitions.AddAttribute("Target", target);
+      fileDefinitions.AddAttribute("WorkingDirectory", directoryId);
+      fileDefinitions.EndElement();
+      }
+    fileDefinitions.BeginElement("Shortcut");
+    fileDefinitions.AddAttribute("Id", "UNINSTALL");
+    std::string pkgName = GetOption("CPACK_PACKAGE_NAME");
+    fileDefinitions.AddAttribute("Name", "Uninstall " + pkgName);
+    fileDefinitions.AddAttribute("Description", "Uninstalls " + pkgName);
+    fileDefinitions.AddAttribute("Target", "[SystemFolder]msiexec.exe");
+    fileDefinitions.AddAttribute("Arguments", "/x [ProductCode]");
+    fileDefinitions.EndElement();
+    fileDefinitions.BeginElement("RemoveFolder");
+    fileDefinitions.AddAttribute("Id", "PROGRAM_MENU_FOLDER");
+    fileDefinitions.AddAttribute("On", "uninstall");
+    fileDefinitions.EndElement();
+    fileDefinitions.BeginElement("RegistryValue");
+    fileDefinitions.AddAttribute("Root", "HKCU");
+    fileDefinitions.AddAttribute("Key", regKey);
+    fileDefinitions.AddAttribute("Name", "installed");
+    fileDefinitions.AddAttribute("Type", "integer");
+    fileDefinitions.AddAttribute("Value", "1");
+    fileDefinitions.AddAttribute("KeyPath", "yes");
+
+    featureDefinitions.BeginElement("ComponentRef");
+    featureDefinitions.AddAttribute("Id", "SHORTCUT");
+    featureDefinitions.EndElement();
+    directoryDefinitions.BeginElement("Directory");
+    directoryDefinitions.AddAttribute("Id", "ProgramMenuFolder");
+    directoryDefinitions.BeginElement("Directory");
+    directoryDefinitions.AddAttribute("Id", "PROGRAM_MENU_FOLDER");
+    const char *startMenuFolder = GetOption("CPACK_WIX_PROGRAM_MENU_FOLDER");
+    directoryDefinitions.AddAttribute("Name", startMenuFolder);
+  }
+
+  featureDefinitions.EndElement();
+  featureDefinitions.EndElement();
+  fileDefinitions.EndElement();
   directoryDefinitions.EndElement();
 
   std::string wixTemplate = FindTemplate("WIX.template.in");
@@ -435,7 +521,9 @@ void cmCPackWIXGenerator::AddDirectoryAndFileDefinitons(
   cmWIXSourceWriter& fileDefinitions,
   cmWIXSourceWriter& featureDefinitions,
   size_t& directoryCounter,
-  size_t& fileCounter)
+  size_t& fileCounter,
+  const std::vector<std::string>& pkgExecutables,
+  std::vector<std::string>& dirIdExecutables)
 {
   cmsys::Directory dir;
   dir.Load(topdir.c_str());
@@ -467,9 +555,10 @@ void cmCPackWIXGenerator::AddDirectoryAndFileDefinitons(
         fileDefinitions,
         featureDefinitions,
         directoryCounter,
-        fileCounter);
+        fileCounter,
+        pkgExecutables,
+        dirIdExecutables);
 
-      directoryDefinitions.EndElement();
       }
     else
       {
@@ -499,6 +588,23 @@ void cmCPackWIXGenerator::AddDirectoryAndFileDefinitons(
       featureDefinitions.BeginElement("ComponentRef");
       featureDefinitions.AddAttribute("Id", componentId);
       featureDefinitions.EndElement();
+
+      std::vector<std::string>::const_iterator it;
+      for (it = pkgExecutables.begin() ;
+           it != pkgExecutables.end() ;
+           ++it)
+        {
+        std::string execName = *it++;
+        std::string iconName = *it;
+
+        if (cmSystemTools::LowerCase(fileName) ==
+            cmSystemTools::LowerCase(execName) + ".exe")
+          {
+            dirIdExecutables.push_back(fileName);
+            dirIdExecutables.push_back(iconName);
+            dirIdExecutables.push_back(directoryId);
+          }
+        }
       }
     }
 }
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.h 
b/Source/CPack/WiX/cmCPackWIXGenerator.h
index 0e95d70..aaccf9d 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.h
+++ b/Source/CPack/WiX/cmCPackWIXGenerator.h
@@ -83,7 +83,11 @@ private:
     cmWIXSourceWriter& fileDefinitions,
     cmWIXSourceWriter& featureDefinitions,
     size_t& directoryCounter,
-    size_t& fileCounter);
+    size_t& fileCounter,
+    const std::vector<std::string>& pkgExecutables,
+    std::vector<std::string>& dirIdExecutables
+    );
+
 
   bool RequireOption(const std::string& name, std::string& value) const;
 
diff --git a/Tests/CPackWiXGenerator/CMakeLists.txt 
b/Tests/CPackWiXGenerator/CMakeLists.txt
index ce02f11..475e60d 100644
--- a/Tests/CPackWiXGenerator/CMakeLists.txt
+++ b/Tests/CPackWiXGenerator/CMakeLists.txt
@@ -35,6 +35,8 @@ set(CPACK_PACKAGE_VERSION_PATCH "0")
 set(CPACK_PACKAGE_INSTALL_DIRECTORY "CPack Component Example")
 
 set(CPACK_WIX_UPGRADE_GUID "BF20CE5E-7F7C-401D-8F7C-AB45E8D170E6")
+set(CPACK_WIX_UNINSTALL "1")
+set(CPACK_PACKAGE_EXECUTABLES "mylibapp; CPack Wix Test")
 
 include(CPack)
 

-----------------------------------------------------------------------

Summary of changes:
 CMakeCPack.cmake                         |    2 +
 Modules/CPackWIX.cmake                   |   26 ++++++
 Source/CPack/WiX/cmCPackWIXGenerator.cxx |  141 +++++++++++++++++++++++++++---
 Source/CPack/WiX/cmCPackWIXGenerator.h   |    6 +-
 Tests/CPackWiXGenerator/CMakeLists.txt   |    2 +
 5 files changed, 164 insertions(+), 13 deletions(-)


hooks/post-receive
-- 
CMake
_______________________________________________
Cmake-commits mailing list
Cmake-commits@cmake.org
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-commits

Reply via email to