Browse Source

ENH: NSIS exists also for Linux, not only Windows, so enable it there too
patch by Michal Čihař <michal (AT) cihar.com>

Alex

Alexander Neundorf 18 năm trước cách đây
mục cha
commit
ef81ac50e5
2 tập tin đã thay đổi với 12 bổ sung6 xóa
  1. 1 5
      Source/CPack/cmCPackGenerators.cxx
  2. 11 1
      Source/CPack/cmCPackNSISGenerator.cxx

+ 1 - 5
Source/CPack/cmCPackGenerators.cxx

@@ -23,9 +23,7 @@
 #include "cmCPackTarCompressGenerator.h"
 #include "cmCPackZIPGenerator.h"
 #include "cmCPackSTGZGenerator.h"
-#ifdef _WIN32
-#  include "cmCPackNSISGenerator.h"
-#endif
+#include "cmCPackNSISGenerator.h"
 #ifdef __APPLE__
 #  include "cmCPackPackageMakerGenerator.h"
 #  include "cmCPackOSXX11Generator.h"
@@ -45,10 +43,8 @@ cmCPackGenerators::cmCPackGenerators()
     cmCPackTGZGenerator::CreateGenerator);
   this->RegisterGenerator("STGZ", "Self extracting Tar GZip compression",
     cmCPackSTGZGenerator::CreateGenerator);
-#ifdef _WIN32
   this->RegisterGenerator("NSIS", "Null Soft Installer",
     cmCPackNSISGenerator::CreateGenerator);
-#endif
 #ifdef __CYGWIN__
   this->RegisterGenerator("CygwinBinary", "Cygwin Binary Installer",
                           cmCPackCygwinBinaryGenerator::CreateGenerator);

+ 11 - 1
Source/CPack/cmCPackNSISGenerator.cxx

@@ -29,6 +29,13 @@
 #include <cmsys/Directory.hxx>
 #include <cmsys/RegularExpression.hxx>
 
+/* NSIS uses different command line syntax on Windows and others */
+#ifdef _WIN32
+# define NSIS_OPT "/"
+#else
+# define NSIS_OPT "-"
+#endif
+
 //----------------------------------------------------------------------
 cmCPackNSISGenerator::cmCPackNSISGenerator()
 {
@@ -144,6 +151,8 @@ int cmCPackNSISGenerator::InitializeInternal()
     << std::endl);
   std::vector<std::string> path;
   std::string nsisPath;
+
+#ifdef _WIN32
   if ( !cmsys::SystemTools::ReadRegistryValue(
       "HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS", nsisPath) )
     {
@@ -156,6 +165,7 @@ int cmCPackNSISGenerator::InitializeInternal()
     return 0;
     }
   path.push_back(nsisPath);
+#endif
   nsisPath = cmSystemTools::FindProgram("makensis", path, false);
   if ( nsisPath.empty() )
     {
@@ -163,7 +173,7 @@ int cmCPackNSISGenerator::InitializeInternal()
       << std::endl);
     return 0;
     }
-  std::string nsisCmd = "\"" + nsisPath + "\" /VERSION";
+  std::string nsisCmd = "\"" + nsisPath + "\" " NSIS_OPT "VERSION";
   cmCPackLogger(cmCPackLog::LOG_VERBOSE, "Test NSIS version: "
     << nsisCmd.c_str() << std::endl);
   std::string output;