summaryrefslogtreecommitdiffstats
path: root/Source/CPack/cmCPackNSISGenerator.cxx
diff options
context:
space:
mode:
authorDavid Cole <david.cole@kitware.com>2010-12-17 18:29:10 (GMT)
committerDavid Cole <david.cole@kitware.com>2010-12-17 18:29:10 (GMT)
commitcd9aa73f3a40b20ea6414779e4057ac236314d86 (patch)
treed4db7b90a5a9c975e0f0764dc6ffb256c41401f2 /Source/CPack/cmCPackNSISGenerator.cxx
parentd11c70295b072d19c90c3e5d415d27de10253615 (diff)
downloadCMake-cd9aa73f3a40b20ea6414779e4057ac236314d86.zip
CMake-cd9aa73f3a40b20ea6414779e4057ac236314d86.tar.gz
CMake-cd9aa73f3a40b20ea6414779e4057ac236314d86.tar.bz2
CPack: look for makensis in the PATH (#8210)
Previously, we would search in the Windows registry for the path to makensis, and fail immediately if we could not read the registry value, assuming that it was simply not installed. This change looks for makensis in the PATH even if the registry value is not there, enabling the scenario where makensis is installed without admin privileges and never even touches HKEY_LOCAL_MACHINE during the non-admin install.
Diffstat (limited to 'Source/CPack/cmCPackNSISGenerator.cxx')
-rw-r--r--Source/CPack/cmCPackNSISGenerator.cxx32
1 files changed, 23 insertions, 9 deletions
diff --git a/Source/CPack/cmCPackNSISGenerator.cxx b/Source/CPack/cmCPackNSISGenerator.cxx
index d0eda81..f25866c 100644
--- a/Source/CPack/cmCPackNSISGenerator.cxx
+++ b/Source/CPack/cmCPackNSISGenerator.cxx
@@ -337,6 +337,7 @@ int cmCPackNSISGenerator::InitializeInternal()
<< std::endl);
std::vector<std::string> path;
std::string nsisPath;
+ bool gotRegValue = true;
#ifdef _WIN32
if ( !cmsys::SystemTools::ReadRegistryValue(
@@ -346,24 +347,37 @@ int cmCPackNSISGenerator::InitializeInternal()
if ( !cmsys::SystemTools::ReadRegistryValue(
"HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS", nsisPath) )
{
- cmCPackLogger
- (cmCPackLog::LOG_ERROR,
- "Cannot find NSIS registry value. This is usually caused by NSIS "
- "not being installed. Please install NSIS from "
- "http://nsis.sourceforge.net"
- << std::endl);
- return 0;
+ gotRegValue = false;
}
}
- path.push_back(nsisPath);
+
+ if (gotRegValue)
+ {
+ path.push_back(nsisPath);
+ }
#endif
+
nsisPath = cmSystemTools::FindProgram("makensis", path, false);
+
if ( nsisPath.empty() )
{
- cmCPackLogger(cmCPackLog::LOG_ERROR, "Cannot find NSIS compiler"
+ cmCPackLogger(cmCPackLog::LOG_ERROR,
+ "Cannot find NSIS compiler makensis: likely it is not installed, "
+ "or not in your PATH"
<< std::endl);
+
+ if (!gotRegValue)
+ {
+ cmCPackLogger(cmCPackLog::LOG_ERROR,
+ "Could not read NSIS registry value. This is usually caused by "
+ "NSIS not being installed. Please install NSIS from "
+ "http://nsis.sourceforge.net"
+ << std::endl);
+ }
+
return 0;
}
+
std::string nsisCmd = "\"" + nsisPath + "\" " NSIS_OPT "VERSION";
cmCPackLogger(cmCPackLog::LOG_VERBOSE, "Test NSIS version: "
<< nsisCmd.c_str() << std::endl);