diff --git a/Source/CPack/cmCPackNSISGenerator.cxx b/Source/CPack/cmCPackNSISGenerator.cxx
index ad77386..1ee2c76 100644
--- a/Source/CPack/cmCPackNSISGenerator.cxx
+++ b/Source/CPack/cmCPackNSISGenerator.cxx
@@ -373,7 +373,8 @@ int cmCPackNSISGenerator::InitializeInternal()
     &output, &retVal, 0, this->GeneratorVerbose, 0);
 
   cmsys::RegularExpression versionRex("v([0-9]+.[0-9]+)");
-  if ( !resS || retVal || !versionRex.find(output))
+  cmsys::RegularExpression versionRexAlt("v([0-9]*.[0-9]+)*.");
+  if ( !resS || retVal || ( !versionRex.find(output) && !versionRexAlt.find(output)))
     {
     std::string tmpFile = this->GetOption("CPACK_TOPLEVEL_DIRECTORY");
     tmpFile += "/NSISOutput.log";
@@ -387,10 +388,20 @@ int cmCPackNSISGenerator::InitializeInternal()
       << "Please check " << tmpFile.c_str() << " for errors" << std::endl);
     return 0;
     }
-  double nsisVersion = atof(versionRex.match(1).c_str());
+  double nsisVersion = 0;
   double minNSISVersion = 2.09;
+  if ( versionRex.find(output))
+    {
+    nsisVersion = atof(versionRex.match(1).c_str());
+    cmCPackLogger(cmCPackLog::LOG_DEBUG, "NSIS Version: "
+      << nsisVersion << std::endl);
+    }
+  if ( versionRexAlt.find(output))
+    {
+    nsisVersion = atof(versionRexAlt.match(1).c_str()) * 0.1;
   cmCPackLogger(cmCPackLog::LOG_DEBUG, "NSIS Version: "
     << nsisVersion << std::endl);
+    }
   if ( nsisVersion < minNSISVersion )
     {
     cmCPackLogger(cmCPackLog::LOG_ERROR,
