iceman_k's define list for MakeNSISw
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@2536 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
b06d2531d5
commit
3c08909d1d
7 changed files with 794 additions and 575 deletions
|
@ -37,6 +37,7 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, char *cmdParam, int cmd
|
|||
my_memset(&g_find,0,sizeof(NFINDREPLACE));
|
||||
g_sdata.hInstance=GetModuleHandle(0);
|
||||
g_sdata.script_alloced=false;
|
||||
g_sdata.defines = NULL;
|
||||
g_sdata.script=GetCommandLine();
|
||||
if (*g_sdata.script=='"') { g_sdata.script++; while (*g_sdata.script && *g_sdata.script++!='"' ); }
|
||||
else while (*g_sdata.script!=' ' && *g_sdata.script) g_sdata.script++;
|
||||
|
@ -300,6 +301,11 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
|
|||
CompileNSISScript();
|
||||
return TRUE;
|
||||
}
|
||||
case IDM_DEFINES:
|
||||
{
|
||||
DialogBox(g_sdata.hInstance,MAKEINTRESOURCE(DLG_DEFINES),g_sdata.hwnd,(DLGPROC)DefinesProc);
|
||||
return TRUE;
|
||||
}
|
||||
case IDM_TEST:
|
||||
case IDC_TEST:
|
||||
{
|
||||
|
@ -535,3 +541,127 @@ BOOL CALLBACK AboutProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
|
|||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL CALLBACK DefinesProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
|
||||
switch(msg) {
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
if(g_sdata.defines) {
|
||||
int i=0;
|
||||
while(g_sdata.defines[i]) {
|
||||
SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_ADDSTRING, 0, (LPARAM)g_sdata.defines[i]);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDRIGHT), FALSE);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDLEFT), FALSE);
|
||||
SetFocus(GetDlgItem(hwndDlg, IDC_SYMBOL));
|
||||
break;
|
||||
}
|
||||
case WM_COMMAND:
|
||||
{
|
||||
switch (LOWORD(wParam)) {
|
||||
case IDOK:
|
||||
{
|
||||
ResetObjects();
|
||||
if(g_sdata.input_script) {
|
||||
g_sdata.script_alloced = true;
|
||||
g_sdata.script = (char *)GlobalAlloc(GPTR, (lstrlen(g_sdata.input_script)+3)*sizeof(char));
|
||||
wsprintf(g_sdata.script,"\"%s\"",g_sdata.input_script);
|
||||
}
|
||||
int n = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETCOUNT, 0, 0);
|
||||
if(n > 0) {
|
||||
g_sdata.defines = (char **)GlobalAlloc(GPTR, (n+1)*sizeof(char *));
|
||||
for(int i=0; i<n; i++) {
|
||||
int len = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETTEXTLEN, (WPARAM)i, 0);
|
||||
g_sdata.defines[i] = (char *)GlobalAlloc(GPTR, (len+1)*sizeof(char));
|
||||
SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETTEXT, (WPARAM)i, (LPARAM)g_sdata.defines[i]);
|
||||
}
|
||||
g_sdata.defines[n] = NULL;
|
||||
}
|
||||
EndDialog(hwndDlg, TRUE);
|
||||
}
|
||||
break;
|
||||
case IDCANCEL:
|
||||
EndDialog(hwndDlg, TRUE);
|
||||
break;
|
||||
case IDRIGHT:
|
||||
{
|
||||
int n = SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_GETTEXTLENGTH, 0, 0);
|
||||
if(n > 0) {
|
||||
char *buf = (char *)GlobalAlloc(GPTR, (n+1)*sizeof(char));
|
||||
SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_GETTEXT, n+1, (LPARAM)buf);
|
||||
if(my_strstr(buf," ") || my_strstr(buf,"\t")) {
|
||||
MessageBox(hwndDlg,DEFINESERROR,"Error",MB_OK|MB_ICONSTOP);
|
||||
GlobalFree(buf);
|
||||
break;
|
||||
}
|
||||
|
||||
n = SendDlgItemMessage(hwndDlg, IDC_VALUE, WM_GETTEXTLENGTH, 0, 0);
|
||||
if(n > 0) {
|
||||
char *buf2 = (char *)GlobalAlloc(GPTR, (n+1)*sizeof(char));
|
||||
SendDlgItemMessage(hwndDlg, IDC_VALUE, WM_GETTEXT, n+1, (LPARAM)buf2);
|
||||
char *buf3 = (char *)GlobalAlloc(GPTR, (lstrlen(buf)+lstrlen(buf2)+2)*sizeof(char));
|
||||
wsprintf(buf3,"%s=%s",buf,buf2);
|
||||
GlobalFree(buf);
|
||||
buf = buf3;
|
||||
GlobalFree(buf2);
|
||||
}
|
||||
SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_ADDSTRING, 0, (LPARAM)buf);
|
||||
SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_SETTEXT, 0, 0);
|
||||
SendDlgItemMessage(hwndDlg, IDC_VALUE, WM_SETTEXT, 0, 0);
|
||||
GlobalFree(buf);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case IDLEFT:
|
||||
{
|
||||
int index = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETCURSEL, 0, 0);
|
||||
if(index != LB_ERR) {
|
||||
int n = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETTEXTLEN, (WPARAM)index, 0);
|
||||
if(n > 0) {
|
||||
char *buf = (char *)GlobalAlloc(GPTR, (n+1)*sizeof(char));
|
||||
SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETTEXT, (WPARAM)index, (LPARAM)buf);
|
||||
char *p = my_strstr(buf,"=");
|
||||
if(p) {
|
||||
SendDlgItemMessage(hwndDlg, IDC_VALUE, WM_SETTEXT, 0, (LPARAM)(p+1));
|
||||
*p=0;
|
||||
}
|
||||
SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_SETTEXT, 0, (LPARAM)buf);
|
||||
GlobalFree(buf);
|
||||
SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_DELETESTRING, (WPARAM)index, (LPARAM)buf);
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDLEFT), FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case IDC_SYMBOL:
|
||||
if(HIWORD(wParam) == EN_CHANGE)
|
||||
{
|
||||
int n = SendDlgItemMessage(hwndDlg, IDC_SYMBOL, WM_GETTEXTLENGTH, 0, 0);
|
||||
if(n > 0) {
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDRIGHT), TRUE);
|
||||
}
|
||||
else {
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDRIGHT), FALSE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case IDC_DEFINES:
|
||||
if(HIWORD(wParam) == LBN_SELCHANGE)
|
||||
{
|
||||
int n = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETCURSEL, 0, 0);
|
||||
if(n != LB_ERR) {
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDLEFT), TRUE);
|
||||
}
|
||||
else {
|
||||
EnableWindow(GetDlgItem(hwndDlg, IDLEFT), FALSE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
|
@ -80,7 +80,7 @@ BSC32=bscmake.exe
|
|||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 wsock32.lib comctl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 wsock32.lib comctl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /out:"../../makensisw.exe" /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
@ -137,6 +137,10 @@ SOURCE=.\utils.h
|
|||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE="..\Icons\adni18-installer-B.ico"
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\logo.bmp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
@ -160,5 +164,9 @@ SOURCE=.\shell.ico
|
|||
SOURCE=.\Readme.txt
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\makensisw.xml
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
#define LOCALDOCS "\\docs\\index.html"
|
||||
#define NSISERROR "Unable to intialize MakeNSIS. Please verify that makensis.exe is in the same directory as makensisw.exe."
|
||||
#define DLGERROR "Unable to intialize MakeNSISW."
|
||||
#define DEFINESERROR "Symbol cannot contain whitespace characters"
|
||||
#define REGSEC HKEY_LOCAL_MACHINE
|
||||
#define REGKEY "Software\\NSIS"
|
||||
#define REGLOC "MakeNSISWPlacement"
|
||||
|
@ -69,7 +70,9 @@ DWORD WINAPI MakeNSISProc(LPVOID p);
|
|||
BOOL CALLBACK DialogResize(HWND hWnd, LPARAM /* unused*/);
|
||||
BOOL CALLBACK AboutNSISProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||
BOOL CALLBACK AboutProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||
BOOL CALLBACK DefinesProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||
void CompileNSISScript();
|
||||
char* BuildDefines();
|
||||
|
||||
typedef struct NSISScriptData {
|
||||
bool script_alloced;
|
||||
|
@ -78,6 +81,7 @@ typedef struct NSISScriptData {
|
|||
char *input_script;
|
||||
char *branding;
|
||||
char *brandingv;
|
||||
char **defines;
|
||||
int retcode;
|
||||
DWORD logLength;
|
||||
DWORD warnings;
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#define IDK_ACCEL 105
|
||||
#define IDI_SHELL 112
|
||||
#define IDB_LOGO 115
|
||||
#define DLG_DEFINES 116
|
||||
#define IDC_LOGWIN 402
|
||||
#define IDC_VERSION 405
|
||||
#define IDC_CLOSE 406
|
||||
|
@ -26,6 +27,11 @@
|
|||
#define IDC_CONTRIB 1009
|
||||
#define IDC_NSISVER 1010
|
||||
#define IDC_OTHERCONTRIB 1016
|
||||
#define IDC_SYMBOL 1017
|
||||
#define IDC_VALUE 1018
|
||||
#define IDRIGHT 1019
|
||||
#define IDLEFT 1020
|
||||
#define IDC_DEFINES 1021
|
||||
#define IDM_TEST 40002
|
||||
#define IDM_EDITSCRIPT 40003
|
||||
#define IDM_DOCS 40004
|
||||
|
@ -36,14 +42,15 @@
|
|||
#define IDM_BROWSESCR 40013
|
||||
#define IDM_NSISDEV 40014
|
||||
#define IDM_FORUM 40016
|
||||
#define IDM_DEFINES 40017
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 116
|
||||
#define _APS_NEXT_COMMAND_VALUE 40017
|
||||
#define _APS_NEXT_CONTROL_VALUE 1017
|
||||
#define _APS_NEXT_RESOURCE_VALUE 117
|
||||
#define _APS_NEXT_COMMAND_VALUE 40018
|
||||
#define _APS_NEXT_CONTROL_VALUE 1023
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -83,6 +83,7 @@ BEGIN
|
|||
POPUP "&Tools"
|
||||
BEGIN
|
||||
MENUITEM "&Recompile\tCtrl+R", IDM_RECOMPILE
|
||||
MENUITEM "&Define Symbols\tCtrl+D", IDM_DEFINES
|
||||
MENUITEM "Test &Installer\tCtrl+T", IDM_TEST
|
||||
MENUITEM "Edit Script\tCtrl+E", IDM_EDITSCRIPT
|
||||
MENUITEM "Browse Script\tCtrl+B", IDM_BROWSESCR
|
||||
|
@ -111,6 +112,7 @@ BEGIN
|
|||
"A", IDM_SELECTALL, VIRTKEY, CONTROL, NOINVERT
|
||||
"B", IDM_BROWSESCR, VIRTKEY, CONTROL, NOINVERT
|
||||
"C", IDM_COPYSELECTED, VIRTKEY, CONTROL, NOINVERT
|
||||
"D", IDM_DEFINES, VIRTKEY, CONTROL, NOINVERT
|
||||
"E", IDM_EDITSCRIPT, VIRTKEY, CONTROL, NOINVERT
|
||||
"F", IDM_FIND, VIRTKEY, CONTROL, NOINVERT
|
||||
"L", IDM_LOADSCRIPT, VIRTKEY, CONTROL, NOINVERT
|
||||
|
@ -160,6 +162,24 @@ BEGIN
|
|||
CONTROL 115,IDC_STATIC,"Static",SS_BITMAP,0,0,20,20
|
||||
END
|
||||
|
||||
DLG_DEFINES DIALOGEX 0, 0, 250, 127
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Define Symbols"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "&OK",IDOK,145,106,48,14
|
||||
PUSHBUTTON "&Cancel",IDCANCEL,195,106,48,14
|
||||
EDITTEXT IDC_SYMBOL,7,37,74,12,ES_AUTOHSCROLL,WS_EX_CLIENTEDGE
|
||||
EDITTEXT IDC_VALUE,7,63,74,12,ES_AUTOHSCROLL,WS_EX_CLIENTEDGE
|
||||
PUSHBUTTON ">",IDRIGHT,91,41,14,14
|
||||
PUSHBUTTON "<",IDLEFT,91,56,14,14
|
||||
LTEXT "Symbol",IDC_STATIC,7,28,24,8
|
||||
LTEXT "Value (optional)",IDC_STATIC,7,54,50,8
|
||||
LISTBOX IDC_DEFINES,117,16,121,79,LBS_NOINTEGRALHEIGHT |
|
||||
WS_VSCROLL | WS_HSCROLL | WS_TABSTOP,WS_EX_CLIENTEDGE
|
||||
GROUPBOX "Defined Symbols List",IDC_STATIC,112,7,131,93
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
@ -173,6 +193,14 @@ BEGIN
|
|||
BEGIN
|
||||
BOTTOMMARGIN, 121
|
||||
END
|
||||
|
||||
DLG_DEFINES, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 243
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 120
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
|
|
@ -83,6 +83,7 @@ void DisableItems(HWND hwnd) {
|
|||
EnableMenuItem(g_sdata.menu,IDM_EXIT,MF_GRAYED);
|
||||
EnableMenuItem(g_sdata.menu,IDM_LOADSCRIPT,MF_GRAYED);
|
||||
EnableMenuItem(g_sdata.menu,IDM_RECOMPILE,MF_GRAYED);
|
||||
EnableMenuItem(g_sdata.menu,IDM_DEFINES,MF_GRAYED);
|
||||
EnableMenuItem(g_sdata.menu,IDM_COPY,MF_GRAYED);
|
||||
EnableMenuItem(g_sdata.menu,IDM_COPYSELECTED,MF_GRAYED);
|
||||
EnableMenuItem(g_sdata.menu,IDM_EDITSCRIPT,MF_GRAYED);
|
||||
|
@ -103,6 +104,7 @@ void EnableItems(HWND hwnd) {
|
|||
EnableMenuItem(g_sdata.menu,IDM_EXIT,MF_ENABLED);
|
||||
EnableMenuItem(g_sdata.menu,IDM_LOADSCRIPT,MF_ENABLED);
|
||||
EnableMenuItem(g_sdata.menu,IDM_RECOMPILE,MF_ENABLED);
|
||||
EnableMenuItem(g_sdata.menu,IDM_DEFINES,MF_ENABLED);
|
||||
EnableMenuItem(g_sdata.menu,IDM_COPY,MF_ENABLED);
|
||||
EnableMenuItem(g_sdata.menu,IDM_COPYSELECTED,MF_ENABLED);
|
||||
EnableMenuItem(g_sdata.menu,IDM_EDITSCRIPT,MF_ENABLED);
|
||||
|
@ -120,6 +122,7 @@ void CompileNSISScript() {
|
|||
if (lstrlen(g_sdata.script)==0) {
|
||||
LogMessage(g_sdata.hwnd,USAGE);
|
||||
EnableMenuItem(g_sdata.menu,IDM_RECOMPILE,MF_GRAYED);
|
||||
EnableMenuItem(g_sdata.menu,IDM_DEFINES,MF_GRAYED);
|
||||
EnableMenuItem(g_sdata.menu,IDM_EDITSCRIPT,MF_GRAYED);
|
||||
EnableMenuItem(g_sdata.menu,IDM_TEST,MF_GRAYED);
|
||||
EnableMenuItem(g_sdata.menu,IDM_BROWSESCR,MF_GRAYED);
|
||||
|
@ -129,8 +132,10 @@ void CompileNSISScript() {
|
|||
}
|
||||
if (!g_sdata.appended) {
|
||||
if (s) GlobalFree(s);
|
||||
s = (char *)GlobalAlloc(GPTR, lstrlen(g_sdata.script)+sizeof(EXENAME)+sizeof(" /NOTIFYHWND ")+16);
|
||||
wsprintf(s,"%s /NOTIFYHWND %d %s",EXENAME,g_sdata.hwnd,g_sdata.script);
|
||||
char *defines = BuildDefines();
|
||||
s = (char *)GlobalAlloc(GPTR, lstrlen(g_sdata.script)+lstrlen(defines)+sizeof(EXENAME)+sizeof(" /NOTIFYHWND ")+16);
|
||||
wsprintf(s,"%s %s /NOTIFYHWND %d %s",EXENAME,defines,g_sdata.hwnd,g_sdata.script);
|
||||
GlobalFree(defines);
|
||||
if (g_sdata.script_alloced) GlobalFree(g_sdata.script);
|
||||
g_sdata.script_alloced = true;
|
||||
g_sdata.script = s;
|
||||
|
@ -174,6 +179,15 @@ void SaveWindowPos(HWND hwnd) {
|
|||
}
|
||||
|
||||
void ResetObjects() {
|
||||
if(g_sdata.defines) {
|
||||
int i=0;
|
||||
while(g_sdata.defines[i]) {
|
||||
GlobalFree(g_sdata.defines[i]);
|
||||
i++;
|
||||
}
|
||||
GlobalFree(g_sdata.defines);
|
||||
g_sdata.defines = NULL;
|
||||
}
|
||||
g_sdata.appended = FALSE;
|
||||
g_sdata.warnings = FALSE;
|
||||
g_sdata.retcode = -1;
|
||||
|
@ -284,3 +298,31 @@ void ShowDocs() {
|
|||
if ((int)ShellExecute(g_sdata.hwnd,"open",pathf,NULL,NULL,SW_SHOWNORMAL)<=32)
|
||||
ShellExecute(g_sdata.hwnd,"open",DOCPATH,NULL,NULL,SW_SHOWNORMAL);
|
||||
}
|
||||
|
||||
char* BuildDefines()
|
||||
{
|
||||
char *buf = NULL;
|
||||
|
||||
if(g_sdata.defines) {
|
||||
int i=0;
|
||||
while(g_sdata.defines[i]) {
|
||||
if(buf) {
|
||||
char *buf3 = (char *)GlobalAlloc(GPTR,(lstrlen(buf)+lstrlen(g_sdata.defines[i])+6)*sizeof(char));
|
||||
wsprintf(buf3,"%s \"/D%s\"",buf,g_sdata.defines[i]);
|
||||
GlobalFree(buf);
|
||||
buf = buf3;
|
||||
}
|
||||
else {
|
||||
buf = (char *)GlobalAlloc(GPTR,(lstrlen(g_sdata.defines[i])+5)*sizeof(char));
|
||||
wsprintf(buf,"\"/D%s\"",g_sdata.defines[i]);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
else {
|
||||
buf = (char *)GlobalAlloc(GPTR, sizeof(char));
|
||||
lstrcpy(buf,"");
|
||||
}
|
||||
|
||||
return buf;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue