diff --git a/Source/CPack/cmCPackGenerators.cxx b/Source/CPack/cmCPackGenerators.cxx index e94fb337a..629156a3f 100644 --- a/Source/CPack/cmCPackGenerators.cxx +++ b/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); diff --git a/Source/CPack/cmCPackNSISGenerator.cxx b/Source/CPack/cmCPackNSISGenerator.cxx index f973acc6b..dc1b852dc 100644 --- a/Source/CPack/cmCPackNSISGenerator.cxx +++ b/Source/CPack/cmCPackNSISGenerator.cxx @@ -29,6 +29,13 @@ #include #include +/* 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 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;