Merge topic 'cpack-nsis64-patches'
6ff730a
CPack/NSIS: Add support for 64-bit NSIS (#13203)51da766
CPack/NSIS: Fix compatibility issues with prerelease NSIS (#13202)
This commit is contained in:
commit
f30393e28a
|
@ -37,6 +37,9 @@
|
|||
;Set compression
|
||||
SetCompressor @CPACK_NSIS_COMPRESSOR@
|
||||
|
||||
;Require administrator access
|
||||
RequestExecutionLevel admin
|
||||
|
||||
@CPACK_NSIS_DEFINES@
|
||||
|
||||
!include Sections.nsh
|
||||
|
@ -119,7 +122,7 @@ Var AR_RegFlags
|
|||
"exit_${SecName}:"
|
||||
!macroend
|
||||
|
||||
!macro RemoveSection SecName
|
||||
!macro RemoveSection_CPack SecName
|
||||
; This macro is used to call section's Remove_... macro
|
||||
;from the uninstaller.
|
||||
;Input: section index constant name specified in Section command.
|
||||
|
@ -841,7 +844,7 @@ Section "Uninstall"
|
|||
DeleteRegKey SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
|
||||
|
||||
; Removes all optional components
|
||||
!insertmacro SectionList "RemoveSection"
|
||||
!insertmacro SectionList "RemoveSection_CPack"
|
||||
|
||||
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
|
||||
|
||||
|
|
|
@ -61,6 +61,8 @@ cmCPackGeneratorFactory::cmCPackGeneratorFactory()
|
|||
{
|
||||
this->RegisterGenerator("NSIS", "Null Soft Installer",
|
||||
cmCPackNSISGenerator::CreateGenerator);
|
||||
this->RegisterGenerator("NSIS64", "Null Soft Installer (64-bit)",
|
||||
cmCPackNSISGenerator::CreateGenerator64);
|
||||
}
|
||||
#ifdef __CYGWIN__
|
||||
if (cmCPackCygwinBinaryGenerator::CanGenerate())
|
||||
|
|
|
@ -33,8 +33,9 @@
|
|||
#endif
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
cmCPackNSISGenerator::cmCPackNSISGenerator()
|
||||
cmCPackNSISGenerator::cmCPackNSISGenerator(bool nsis64)
|
||||
{
|
||||
Nsis64 = nsis64;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
@ -359,6 +360,21 @@ int cmCPackNSISGenerator::InitializeInternal()
|
|||
bool gotRegValue = false;
|
||||
|
||||
#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(
|
||||
"HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS\\Unicode", nsisPath,
|
||||
cmsys::SystemTools::KeyWOW64_32) )
|
||||
|
|
|
@ -27,10 +27,13 @@ class cmCPackNSISGenerator : public cmCPackGenerator
|
|||
public:
|
||||
cmCPackTypeMacro(cmCPackNSISGenerator, cmCPackGenerator);
|
||||
|
||||
static cmCPackGenerator* CreateGenerator64()
|
||||
{ return new cmCPackNSISGenerator(true); }
|
||||
|
||||
/**
|
||||
* Construct generator
|
||||
*/
|
||||
cmCPackNSISGenerator();
|
||||
cmCPackNSISGenerator(bool nsis64 = false);
|
||||
virtual ~cmCPackNSISGenerator();
|
||||
|
||||
protected:
|
||||
|
@ -77,6 +80,8 @@ protected:
|
|||
/// Translations any newlines found in the string into \\r\\n, so that the
|
||||
/// resulting string can be used within NSIS.
|
||||
static std::string TranslateNewlines(std::string str);
|
||||
|
||||
bool Nsis64;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue