Comments like C/C++; Added commands to support VersionInformation (VIProductVersion, VIProductName, VICompanyName, VIComments, VILegalTrademarks, VILegalCopyrights, VIDescription); Support to named user variables (up to 500) but disabled by define
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@2623 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
c5c57c0fdb
commit
f758230f19
14 changed files with 823 additions and 128 deletions
|
@ -26,6 +26,13 @@
|
|||
// really a big deal, but not usually needed).
|
||||
#define NSIS_MAX_STRLEN 1024
|
||||
|
||||
#define USER_VARS_COUNT 26
|
||||
|
||||
// MAX_NAMED_USER_VARS defines the maximum of named user variables
|
||||
// the complier also use this value to abort if exceded
|
||||
// The real maximum is (0x0FFF - USER_VARS_COUNT) = 4069
|
||||
// But 500 variables are a more than enough (and only consume more 512kb of memory)
|
||||
#define MAX_NAMED_USER_VARS 500
|
||||
|
||||
// NSIS_MAX_INST_TYPES specified the maximum install types.
|
||||
// note that this should not exceed 32, ever.
|
||||
|
@ -195,6 +202,14 @@
|
|||
// NSIS_SUPPORT_MESSAGEBOX enables support for MessageBox
|
||||
#define NSIS_SUPPORT_MESSAGEBOX
|
||||
|
||||
// Added by ramon 3 jun 2003
|
||||
// NSIS_SUPPORT_NAMED_USERVARS enables support for user variables
|
||||
//#define NSIS_SUPPORT_NAMED_USERVARS
|
||||
|
||||
// Added by ramon 5 jun 2003
|
||||
// NSIS_SUPPORT_VERSION_INFO enables support for version information on final exe
|
||||
#define NSIS_SUPPORT_VERSION_INFO
|
||||
|
||||
|
||||
// Added by Ximon Eighteen 5th August 2002
|
||||
// If this is uncommented the following changes/new features are
|
||||
|
|
|
@ -513,11 +513,16 @@ BOOL NSISCALL ReadSelfFile(LPVOID lpBuffer, DWORD nNumberOfBytesToRead);
|
|||
DWORD NSISCALL SetSelfFilePointer(LONG lDistanceToMove, DWORD dwMoveMethod);
|
||||
|
||||
// $0..$9, $INSTDIR, etc are encoded as ASCII bytes starting from this value.
|
||||
// Added by ramon 3 jun 2003
|
||||
#ifdef NSIS_SUPPORT_NAMED_USERVARS
|
||||
#define VAR_CODES_START (256 - 38)
|
||||
#else
|
||||
#ifdef NSIS_CONFIG_PLUGIN_SUPPORT
|
||||
#define VAR_CODES_START (256 - 37)
|
||||
#else
|
||||
#define VAR_CODES_START (256 - 36)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
union installer_flags {
|
||||
struct {
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
extern char temp_directory[NSIS_MAX_STRLEN];
|
||||
|
||||
extern char g_usrvars[26][NSIS_MAX_STRLEN];
|
||||
#ifdef NSIS_SUPPORT_NAMED_USERVARS
|
||||
extern char g_usrvars[MAX_NAMED_USER_VARS+USER_VARS_COUNT][NSIS_MAX_STRLEN];
|
||||
#else
|
||||
extern char g_usrvars[USER_VARS_COUNT][NSIS_MAX_STRLEN];
|
||||
#endif
|
||||
extern char *state_command_line;
|
||||
extern char *state_install_directory;
|
||||
extern char *state_output_directory;
|
||||
|
|
|
@ -16,7 +16,11 @@ char g_log_file[1024];
|
|||
|
||||
char temp_directory[NSIS_MAX_STRLEN];
|
||||
|
||||
char g_usrvars[26][NSIS_MAX_STRLEN];
|
||||
#ifdef NSIS_SUPPORT_NAMED_USERVARS
|
||||
char g_usrvars[MAX_NAMED_USER_VARS+USER_VARS_COUNT][NSIS_MAX_STRLEN];
|
||||
#else
|
||||
char g_usrvars[USER_VARS_COUNT][NSIS_MAX_STRLEN];
|
||||
#endif
|
||||
char *state_command_line=g_usrvars[20];
|
||||
char *state_install_directory=g_usrvars[21];
|
||||
char *state_output_directory=g_usrvars[22];
|
||||
|
@ -398,11 +402,11 @@ char * NSISCALL process_string(const char *in)
|
|||
int nVarIdx = (unsigned char)*in++;
|
||||
if (nVarIdx < VAR_CODES_START)
|
||||
{
|
||||
*out++ = nVarIdx;
|
||||
*out++ = nVarIdx;
|
||||
}
|
||||
else if (nVarIdx == 255)
|
||||
{
|
||||
*out++ = *in++;
|
||||
*out++ = *in++;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -439,9 +443,24 @@ char * NSISCALL process_string(const char *in)
|
|||
case VAR_CODES_START + 24: // EXEDIR
|
||||
case VAR_CODES_START + 25: // LANGUAGE
|
||||
case VAR_CODES_START + 26: // PLUGINSDIR
|
||||
#ifdef NSIS_SUPPORT_NAMED_USERVARS
|
||||
case VAR_CODES_START + 36: // NAMED USER VARS
|
||||
{
|
||||
if ( nVarIdx == (VAR_CODES_START + 36) )
|
||||
{
|
||||
//char Buf[200];
|
||||
nVarIdx = *(WORD*)in & 0x0FFF; in+=sizeof(WORD);
|
||||
//wsprintf(Buf, "Request var index %d", nVarIdx);
|
||||
//MessageBox(0,Buf,0,0);
|
||||
}
|
||||
else
|
||||
nVarIdx = nVarIdx - (VAR_CODES_START + 1);
|
||||
mystrcpy(out, g_usrvars[nVarIdx]);
|
||||
}
|
||||
#else
|
||||
mystrcpy(out, g_usrvars[nVarIdx - (VAR_CODES_START + 1)]);
|
||||
break;
|
||||
|
||||
#endif
|
||||
case VAR_CODES_START + 27: // PROGRAMFILES
|
||||
smwcvesf[41]=0;
|
||||
myRegGetStr(HKEY_LOCAL_MACHINE, smwcvesf, "ProgramFilesDir", out);
|
||||
|
@ -503,12 +522,22 @@ char * NSISCALL process_string(const char *in)
|
|||
GetSystemDirectory(out, NSIS_MAX_STRLEN);
|
||||
break;
|
||||
|
||||
#ifdef NSIS_SUPPORT_NAMED_USERVARS
|
||||
#if USER_VARS_COUNT + MAX_NAMED_USER_VARS > 0x0FFF
|
||||
#error "Too many named variables! Decrease MAX_NAMED_USER_VARS"
|
||||
#endif
|
||||
|
||||
#if VAR_CODES_START + 36 >= 255
|
||||
#error "Too many variables! Extend VAR_CODES_START!"
|
||||
#endif
|
||||
#else
|
||||
#if VAR_CODES_START + 35 >= 255
|
||||
#error "Too many variables! Extend VAR_CODES_START!"
|
||||
#endif
|
||||
#endif
|
||||
} // switch
|
||||
// validate the directory name
|
||||
if (nVarIdx > 21+VAR_CODES_START) { // only if not $0 to $R9, $CMDLINE, or $HWNDPARENT
|
||||
if (nVarIdx > 21+VAR_CODES_START && nVarIdx < VAR_CODES_START + 36 ) { // only if not $0 to $R9, $CMDLINE, or $HWNDPARENT
|
||||
// ($LANGUAGE can't have trailing backslash anyway...)
|
||||
validate_filename(out);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue