diff --git a/Contrib/Makensisw/makensisw.cpp b/Contrib/Makensisw/makensisw.cpp index 2a915667..54f68fc5 100644 --- a/Contrib/Makensisw/makensisw.cpp +++ b/Contrib/Makensisw/makensisw.cpp @@ -210,6 +210,11 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { DialogBox(g_hInstance,MAKEINTRESOURCE(DLG_ABOUT),g_hwnd,(DLGPROC)AboutProc); return TRUE; } + case IDM_ABOUTNSIS: + { + DialogBox(g_hInstance,MAKEINTRESOURCE(DLG_ABOUTNSIS),g_hwnd,(DLGPROC)AboutNSISProc); + return TRUE; + } case IDM_NSISHOME: { ShellExecute(g_hwnd,"open",NSIS_URL,NULL,NULL,SW_SHOWNORMAL); @@ -448,7 +453,91 @@ BOOL CALLBACK DialogResize(HWND hWnd, LPARAM /* unused */) return TRUE; } +#define CONTRIBCOUNT 3 +char * ContribUsers[] = { + "Fritz Elfert", + "Justin Frankel", + "Amir Szekely" +}; + +extern char *g_branding; + +BOOL CALLBACK AboutNSISProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { + switch(msg) { + case WM_INITDIALOG: + { + HFONT bfont = CreateFont(14,0,0,0,FW_BOLD,FALSE,FALSE,FALSE,DEFAULT_CHARSET, + OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, + FIXED_PITCH|FF_DONTCARE, "MS Shell Dlg"); + HFONT hFont = CreateFont(12,0,0,0,FW_NORMAL,0,0,0,DEFAULT_CHARSET,OUT_CHARACTER_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FIXED_PITCH|FF_DONTCARE,"MS Shell Dlg"); + if (bfont) SendDlgItemMessage(hwndDlg, IDC_NSISVER, WM_SETFONT, (WPARAM)bfont, FALSE); + SetDlgItemText(hwndDlg,IDC_NSISVER,g_branding); + SendDlgItemMessage(hwndDlg,IDC_NSISNFO,WM_SETFONT,(WPARAM)hFont,0); + SendDlgItemMessage(hwndDlg,IDC_NSISNFO,EM_SETBKGNDCOLOR,0,GetSysColor(COLOR_BTNFACE)); + { + char *s; + s = (char *)GlobalAlloc(GPTR,lstrlen(EXENAME)+10); + wsprintf(s,"%s /license",EXENAME); + STARTUPINFO si={sizeof(si),}; + SECURITY_ATTRIBUTES sa={sizeof(sa),}; + SECURITY_DESCRIPTOR sd={0,}; + PROCESS_INFORMATION pi={0,}; + HANDLE newstdout=0,read_stdout=0; + + OSVERSIONINFO osv={sizeof(osv)}; + GetVersionEx(&osv); + if (osv.dwPlatformId == VER_PLATFORM_WIN32_NT) { + InitializeSecurityDescriptor(&sd,SECURITY_DESCRIPTOR_REVISION); + SetSecurityDescriptorDacl(&sd,true,NULL,false); + sa.lpSecurityDescriptor = &sd; + } + else sa.lpSecurityDescriptor = NULL; + sa.bInheritHandle = true; + if (!CreatePipe(&read_stdout,&newstdout,&sa,0)) { + return 0; + } + GetStartupInfo(&si); + si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW; + si.wShowWindow = SW_HIDE; + si.hStdOutput = newstdout; + si.hStdError = newstdout; + if (!CreateProcess(NULL,s,NULL,NULL,TRUE,CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi)) { + CloseHandle(newstdout); + CloseHandle(read_stdout); + return 0; + } + char szBuf[2048]; + DWORD dwRead = 1; + DWORD dwExit = !STILL_ACTIVE; + if (WaitForSingleObject(pi.hProcess,10000)!=WAIT_OBJECT_0) { + return 0; + } + ReadFile(read_stdout, szBuf, sizeof(szBuf)-1, &dwRead, NULL); + szBuf[dwRead] = 0; + if (lstrlen(szBuf)==0) EndDialog(hwndDlg,TRUE); + SetDlgItemText(hwndDlg,IDC_NSISNFO,szBuf); + GlobalFree(s); + } + break; + } + case WM_CLOSE: + EndDialog(hwndDlg, TRUE); + break; + case WM_COMMAND: + { + switch (LOWORD(wParam)) { + case WM_CLOSE: + case IDOK: + EndDialog(hwndDlg, TRUE); + break; + } + } + } + return FALSE; +} + BOOL CALLBACK AboutProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { + static HBRUSH hBrush; switch(msg) { case WM_INITDIALOG: { @@ -465,9 +554,25 @@ BOOL CALLBACK AboutProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { } SetDlgItemText(hwndDlg,IDC_ABOUTVERSION,NSISW_VERSION); SetDlgItemText(hwndDlg,IDC_ABOUTCOPY,COPYRIGHT); - SetDlgItemText(hwndDlg,IDC_ABOUTPORTIONS,CONTRIBUTOR); + HWND ilist = GetDlgItem(hwndDlg,IDC_CONTRIB); + int i; + if (ilist) { + for (i = 0; i < CONTRIBCOUNT; i++) { + SendMessage(ilist, LB_ADDSTRING, 0, (LPARAM) ContribUsers[i]); + SendMessage(ilist, LB_SETITEMDATA, i, (LPARAM) i); + } + } break; } + case WM_CTLCOLORDLG: + case WM_CTLCOLORSTATIC: + case WM_CTLCOLORLISTBOX: + { + if(!hBrush) hBrush=CreateSolidBrush(GetSysColor(COLOR_BTNFACE)); + SetBkColor((HDC)wParam, GetSysColor(COLOR_BTNFACE)); + SelectObject((HDC)wParam, hBrush); + return((LONG)hBrush); + } case WM_CLOSE: EndDialog(hwndDlg, TRUE); break; @@ -477,6 +582,7 @@ BOOL CALLBACK AboutProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { case WM_CLOSE: case IDOK: EndDialog(hwndDlg, TRUE); + break; } } } diff --git a/Contrib/Makensisw/makensisw.h b/Contrib/Makensisw/makensisw.h index ab1c6b30..6c5b613a 100644 --- a/Contrib/Makensisw/makensisw.h +++ b/Contrib/Makensisw/makensisw.h @@ -33,7 +33,6 @@ #define NSIS_URL "http://sourceforge.net/projects/nsis/" #define USAGE "Usage:\r\n\r\n - File | Load Script...\r\n - Drag the .nsi file into this window\r\n - Right click the .nsi file and choose \"Compile NSI\"" #define COPYRIGHT "Copyright (c) 2002 Robert Rainwater" -#define CONTRIBUTOR "Contributors: Justin Frankel, Fritz Elfert, and Amir Szekely" #define DOCPATH "http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/nsis/NSIS/docs/index.html?rev=HEAD" #define LOCALDOCS "\\docs\\index.html" #define NSISERROR "Unable to intialize MakeNSIS. Please verify that makensis.exe is in the same directory as makensisw.exe." @@ -65,6 +64,7 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, char *cmdParam, int cm static BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); 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); void CompileNSISScript(); diff --git a/Contrib/Makensisw/resource.h b/Contrib/Makensisw/resource.h index 98eb439f..a9eb16b2 100644 --- a/Contrib/Makensisw/resource.h +++ b/Contrib/Makensisw/resource.h @@ -11,6 +11,7 @@ #define IDI_ABOUT 110 #define IDM_LOGWIN 111 #define IDI_SHELL 112 +#define DLG_ABOUTNSIS 113 #define IDC_LOGWIN 402 #define IDC_VERSION 405 #define IDC_CLOSE 406 @@ -25,20 +26,24 @@ #define IDC_ABOUTVERSION 1001 #define IDC_ABOUTCOPY 1003 #define IDC_ABOUTPORTIONS 1005 +#define IDC_CONTRIB 1009 +#define IDC_NSISVER 1010 +#define IDC_NSISNFO 1011 #define IDM_TEST 40002 #define IDM_EDITSCRIPT 40003 #define IDM_DOCS 40004 #define IDM_LOADSCRIPT 40005 #define IDM_FIND 40006 #define IDM_SELECTALL 40007 +#define IDM_ABOUTNSIS 40008 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 113 -#define _APS_NEXT_COMMAND_VALUE 40008 -#define _APS_NEXT_CONTROL_VALUE 1009 +#define _APS_NEXT_RESOURCE_VALUE 114 +#define _APS_NEXT_COMMAND_VALUE 40009 +#define _APS_NEXT_CONTROL_VALUE 1013 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/Contrib/Makensisw/resource.rc b/Contrib/Makensisw/resource.rc index 4193917a..36a4c877 100644 --- a/Contrib/Makensisw/resource.rc +++ b/Contrib/Makensisw/resource.rc @@ -2,6 +2,11 @@ // #include "resource.h" +// Generated Help ID header file +#define APSTUDIO_HIDDEN_SYMBOLS +#include "resource.hm" +#undef APSTUDIO_HIDDEN_SYMBOLS + #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // @@ -90,7 +95,8 @@ BEGIN MENUITEM "NSIS Home", IDM_NSISHOME MENUITEM "Documentation", IDM_DOCS MENUITEM SEPARATOR - MENUITEM "&About", IDM_ABOUT + MENUITEM "About &NSIS", IDM_ABOUTNSIS + MENUITEM "&About MakeNSISW", IDM_ABOUT END END @@ -132,7 +138,7 @@ END DLG_MAIN DIALOG DISCARDABLE 0, 0, 361, 228 STYLE DS_3DLOOK | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | - WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_CLIPCHILDREN + WS_VISIBLE | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "MakeNSIS" MENU IDM_MENU FONT 8, "MS Shell Dlg" @@ -146,18 +152,37 @@ BEGIN PUSHBUTTON "&Test Installer",IDC_TEST,230,208,60,15,WS_DISABLED END -DLG_ABOUT DIALOG DISCARDABLE 0, 0, 235, 86 +DLG_ABOUT DIALOGEX 0, 0, 235, 105 STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "About MakeNSISW" -FONT 8, "MS Shell Dlg" +FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - ICON IDI_ICON,IDC_STATIC,7,4,20,20 - DEFPUSHBUTTON "Clo&se",IDOK,185,64,43,15 + ICON IDI_ICON,IDC_STATIC,7,4,21,20 + DEFPUSHBUTTON "Clo&se",IDOK,185,86,43,15 LTEXT "MakeNSISW",IDC_ABOUTVERSION,44,4,184,8 LTEXT "Copyright",IDC_ABOUTCOPY,44,18,184,8 - CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,45,55,183,1 - LTEXT "Portions Copyright",IDC_ABOUTPORTIONS,44,30,184,20 + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,47,78,181,1 + LTEXT "Other Contributors:",IDC_ABOUTPORTIONS,44,30,184,10,0,0, + HIDC_ABOUTPORTIONS + LISTBOX IDC_CONTRIB,48,40,179,33,LBS_SORT | LBS_NOINTEGRALHEIGHT | + LBS_NOSEL | NOT WS_BORDER | WS_VSCROLL | WS_TABSTOP, + WS_EX_TRANSPARENT +END + +DLG_ABOUTNSIS DIALOG DISCARDABLE 0, 0, 311, 161 +STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | WS_CAPTION | + WS_SYSMENU +CAPTION "About NSIS" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "&Close",IDOK,254,140,50,14 + ICON IDI_ICON,IDC_STATIC,7,7,20,20 + LTEXT "NSIS",IDC_NSISVER,38,13,90,11 + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,133,297,1 + CONTROL "",IDC_NSISNFO,"RICHEDIT",ES_MULTILINE | ES_AUTOVSCROLL | + ES_NOHIDESEL | ES_READONLY | ES_NUMBER | WS_BORDER | + WS_VSCROLL,7,32,297,97 END @@ -174,7 +199,15 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 228 TOPMARGIN, 4 - BOTTOMMARGIN, 79 + BOTTOMMARGIN, 101 + END + + DLG_ABOUTNSIS, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 304 + TOPMARGIN, 7 + BOTTOMMARGIN, 154 END END #endif // APSTUDIO_INVOKED