CPack/NSIS: Add support for 64-bit NSIS (#13203)
This commit is contained in:
parent
51da766a6d
commit
6ff730a498
|
@ -61,6 +61,8 @@ cmCPackGeneratorFactory::cmCPackGeneratorFactory()
|
||||||
{
|
{
|
||||||
this->RegisterGenerator("NSIS", "Null Soft Installer",
|
this->RegisterGenerator("NSIS", "Null Soft Installer",
|
||||||
cmCPackNSISGenerator::CreateGenerator);
|
cmCPackNSISGenerator::CreateGenerator);
|
||||||
|
this->RegisterGenerator("NSIS64", "Null Soft Installer (64-bit)",
|
||||||
|
cmCPackNSISGenerator::CreateGenerator64);
|
||||||
}
|
}
|
||||||
#ifdef __CYGWIN__
|
#ifdef __CYGWIN__
|
||||||
if (cmCPackCygwinBinaryGenerator::CanGenerate())
|
if (cmCPackCygwinBinaryGenerator::CanGenerate())
|
||||||
|
|
|
@ -33,8 +33,9 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
cmCPackNSISGenerator::cmCPackNSISGenerator()
|
cmCPackNSISGenerator::cmCPackNSISGenerator(bool nsis64)
|
||||||
{
|
{
|
||||||
|
Nsis64 = nsis64;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
@ -359,6 +360,21 @@ int cmCPackNSISGenerator::InitializeInternal()
|
||||||
bool gotRegValue = false;
|
bool gotRegValue = false;
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
if (Nsis64)
|
||||||
|
{
|
||||||
|
if ( !gotRegValue && cmsys::SystemTools::ReadRegistryValue(
|
||||||
|
"HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS\\Unicode", nsisPath,
|
||||||
|
cmsys::SystemTools::KeyWOW64_64) )
|
||||||
|
{
|
||||||
|
gotRegValue = true;
|
||||||
|
}
|
||||||
|
if ( !gotRegValue && cmsys::SystemTools::ReadRegistryValue(
|
||||||
|
"HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS", nsisPath,
|
||||||
|
cmsys::SystemTools::KeyWOW64_64) )
|
||||||
|
{
|
||||||
|
gotRegValue = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
if ( !gotRegValue && cmsys::SystemTools::ReadRegistryValue(
|
if ( !gotRegValue && cmsys::SystemTools::ReadRegistryValue(
|
||||||
"HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS\\Unicode", nsisPath,
|
"HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS\\Unicode", nsisPath,
|
||||||
cmsys::SystemTools::KeyWOW64_32) )
|
cmsys::SystemTools::KeyWOW64_32) )
|
||||||
|
|
|
@ -27,10 +27,13 @@ class cmCPackNSISGenerator : public cmCPackGenerator
|
||||||
public:
|
public:
|
||||||
cmCPackTypeMacro(cmCPackNSISGenerator, cmCPackGenerator);
|
cmCPackTypeMacro(cmCPackNSISGenerator, cmCPackGenerator);
|
||||||
|
|
||||||
|
static cmCPackGenerator* CreateGenerator64()
|
||||||
|
{ return new cmCPackNSISGenerator(true); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct generator
|
* Construct generator
|
||||||
*/
|
*/
|
||||||
cmCPackNSISGenerator();
|
cmCPackNSISGenerator(bool nsis64 = false);
|
||||||
virtual ~cmCPackNSISGenerator();
|
virtual ~cmCPackNSISGenerator();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -77,6 +80,8 @@ protected:
|
||||||
/// Translations any newlines found in the string into \\r\\n, so that the
|
/// Translations any newlines found in the string into \\r\\n, so that the
|
||||||
/// resulting string can be used within NSIS.
|
/// resulting string can be used within NSIS.
|
||||||
static std::string TranslateNewlines(std::string str);
|
static std::string TranslateNewlines(std::string str);
|
||||||
|
|
||||||
|
bool Nsis64;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue