From 7fe6a9959dd33086b7aafc57142033b8c7ece545 Mon Sep 17 00:00:00 2001 From: icemank Date: Wed, 19 Nov 2003 04:38:14 +0000 Subject: [PATCH] Added compressor setting option git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3167 212acab6-be3b-0410-9dea-997c60f758d6 --- Contrib/Makensisw/Readme.txt | 2 + Contrib/Makensisw/makensisw.cpp | 179 ++++++++++++++++++++++---------- Contrib/Makensisw/makensisw.dsp | 4 + Contrib/Makensisw/makensisw.h | 26 +++-- Contrib/Makensisw/noclib.cpp | 7 ++ Contrib/Makensisw/noclib.h | 1 + Contrib/Makensisw/resource.h | 16 +-- Contrib/Makensisw/resource.rc | 13 ++- Contrib/Makensisw/toolbar.bmp | Bin 2678 -> 2806 bytes Contrib/Makensisw/toolbar.cpp | 66 ++++++------ Contrib/Makensisw/toolbar.h | 17 ++- Contrib/Makensisw/utils.cpp | 91 +++++++++++++++- Contrib/Makensisw/utils.h | 4 + 13 files changed, 301 insertions(+), 125 deletions(-) diff --git a/Contrib/Makensisw/Readme.txt b/Contrib/Makensisw/Readme.txt index ce315a35..e2ba5a02 100644 --- a/Contrib/Makensisw/Readme.txt +++ b/Contrib/Makensisw/Readme.txt @@ -173,6 +173,8 @@ Version History - Added NSIS Update menu. - Added toolbar for commonly used menus. - Made the Toolbar style flat + - Added option for compile & run + - Added compressor setting option Copyright Information --------------------- diff --git a/Contrib/Makensisw/makensisw.cpp b/Contrib/Makensisw/makensisw.cpp index 47d6e185..82370e90 100644 --- a/Contrib/Makensisw/makensisw.cpp +++ b/Contrib/Makensisw/makensisw.cpp @@ -1,4 +1,4 @@ -/* +/* Copyright (c) 2002 Robert Rainwater Contributors: Justin Frankel, Fritz Elfert, Amir Szekely, and Sunil Kamath @@ -94,6 +94,15 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, char *cmdParam, int cmd return msg.wParam; } +void ResetInputScript() +{ + 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); + } +} + BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { static HINSTANCE hRichEditDLL = 0; if (!hRichEditDLL) hRichEditDLL= LoadLibrary("RichEd32.dll"); @@ -102,10 +111,10 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { { g_sdata.hwnd=hwndDlg; HICON hIcon = LoadIcon(g_sdata.hInstance,MAKEINTRESOURCE(IDI_ICON)); - SetClassLong(hwndDlg,GCL_HICON,(long)hIcon); + SetClassLong(hwndDlg,GCL_HICON,(long)hIcon); // Altered by Darren Owen (DrO) on 29/9/2003 // Added in receiving of mouse and key events from the richedit control - SendMessage(GetDlgItem(hwndDlg,IDC_LOGWIN),EM_SETEVENTMASK,NULL,ENM_SELCHANGE|ENM_MOUSEEVENTS|ENM_KEYEVENTS); + SendMessage(GetDlgItem(hwndDlg,IDC_LOGWIN),EM_SETEVENTMASK,NULL,ENM_SELCHANGE|ENM_MOUSEEVENTS|ENM_KEYEVENTS); DragAcceptFiles(g_sdata.hwnd,FALSE); g_sdata.menu = GetMenu(g_sdata.hwnd); g_sdata.fileSubmenu = GetSubMenu(g_sdata.menu, FILE_MENU_INDEX); @@ -114,14 +123,12 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { RestoreMRUList(); CreateToolBar(); InitTooltips(g_sdata.hwnd); -#ifdef COMPRESSOR_OPTION - SetCompressor(IDM_DEFAULT); -#endif SetBranding(g_sdata.hwnd); HFONT hFont = CreateFont(14,0,0,0,FW_NORMAL,0,0,0,DEFAULT_CHARSET,OUT_CHARACTER_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FIXED_PITCH|FF_DONTCARE,"Courier New"); SendDlgItemMessage(hwndDlg,IDC_LOGWIN,WM_SETFONT,(WPARAM)hFont,0); SendDlgItemMessage(hwndDlg,IDC_LOGWIN,EM_SETBKGNDCOLOR,0,GetSysColor(COLOR_BTNFACE)); RestoreWindowPos(g_sdata.hwnd); + RestoreCompressor(); CompileNSISScript(); return TRUE; } @@ -140,6 +147,7 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { { SaveDefines(); SaveMRUList(); + SaveCompressor(); SaveWindowPos(g_sdata.hwnd); DestroyTooltips(); PostQuitMessage(0); @@ -173,7 +181,7 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { } case WM_GETMINMAXINFO: { - ((MINMAXINFO*)lParam)->ptMinTrackSize.x=MINWIDTH; + ((MINMAXINFO*)lParam)->ptMinTrackSize.x=MINWIDTH; ((MINMAXINFO*)lParam)->ptMinTrackSize.y=MINHEIGHT; } case WM_ENTERSIZEMOVE: @@ -209,6 +217,66 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { CloseHandle(g_sdata.thread); g_sdata.thread=0; } + if(g_sdata.compressor == COMPRESSOR_BEST) { + if (g_sdata.retcode==0 && FileExists(g_sdata.output_exe)) { + char zlib_file_name[MAX_PATH]; + wsprintf(zlib_file_name,"%s_makensisw_zlib",g_sdata.output_exe); + if(!lstrcmpi(g_sdata.compressor_name,ZLIB_COMPRESSOR_NAME)) { + CopyFile(g_sdata.output_exe,zlib_file_name,false); + g_sdata.compressor_name = BZIP2_COMPRESSOR_NAME; + ResetObjects(); + ResetInputScript(); + + CompileNSISScript(); + return TRUE; + } + else { + g_sdata.compressor_name = ZLIB_COMPRESSOR_NAME; + g_sdata.appended = false; + ResetInputScript(); + + if(FileExists(zlib_file_name)) { + HANDLE hZlib, hBzip2; + DWORD zlibSize, bzip2Size; + + hZlib = CreateFile(zlib_file_name,GENERIC_READ, FILE_SHARE_READ, + NULL, OPEN_EXISTING, NULL, NULL); + if(hZlib != INVALID_HANDLE_VALUE) { + zlibSize = GetFileSize(hZlib, 0); + CloseHandle(hZlib); + + if(zlibSize != INVALID_FILE_SIZE) { + hBzip2 = CreateFile(g_sdata.output_exe,GENERIC_READ, FILE_SHARE_READ, + NULL, OPEN_EXISTING, NULL, NULL); + if(hBzip2 != INVALID_HANDLE_VALUE) { + bzip2Size = GetFileSize(hBzip2, 0); + CloseHandle(hBzip2); + + char buf[1024]; + + if(bzip2Size != INVALID_FILE_SIZE) { + if(zlibSize < bzip2Size) { + CopyFile(zlib_file_name,g_sdata.output_exe,false); + wsprintf(buf,COMPRESSOR_MESSAGE,ZLIB_COMPRESSOR_NAME,zlibSize, + BZIP2_COMPRESSOR_NAME,bzip2Size); + LogMessage(g_sdata.hwnd,buf); + LogMessage(g_sdata.hwnd,ZLIB_COMPRESSOR_MESSAGE); + LogMessage(g_sdata.hwnd, g_sdata.compressor_stats); + } + else { + wsprintf(buf,COMPRESSOR_MESSAGE,BZIP2_COMPRESSOR_NAME,bzip2Size, + ZLIB_COMPRESSOR_NAME,zlibSize); + LogMessage(g_sdata.hwnd,buf); + } + } + } + } + } + DeleteFile(zlib_file_name); + } + } + } + } EnableItems(g_sdata.hwnd); if (g_sdata.retcode==0) { MessageBeep(MB_ICONASTERISK); @@ -233,7 +301,7 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { } case WM_NOTIFY: switch (((NMHDR*)lParam)->code ) { - case EN_SELCHANGE: + case EN_SELCHANGE: SendDlgItemMessage(hwndDlg,IDC_LOGWIN, EM_EXGETSEL, 0, (LPARAM) &g_sdata.textrange); { BOOL enabled = (g_sdata.textrange.cpMax-g_sdata.textrange.cpMin<=0?FALSE:TRUE); @@ -264,7 +332,6 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { MapWindowPoints(edit, HWND_DESKTOP, &pt, 1); TrackPopupMenu(g_sdata.editSubmenu, TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, pt.x, pt.y, 0, g_sdata.hwnd, 0); } -#ifdef COMPRESSOR_OPTION case TBN_DROPDOWN: { LPNMTOOLBAR pToolBar = (LPNMTOOLBAR) lParam; @@ -276,7 +343,6 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { return TBDDRET_NODEFAULT; } } -#endif } return TRUE; case WM_COPYDATA: @@ -389,23 +455,11 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { case IDM_CLEAR_MRU_LIST: ClearMRUList(); return TRUE; -#ifdef COMPRESSOR_OPTION case IDM_COMPRESSOR: { - switch(g_sdata.compressor) { - case COMPRESSOR_DEFAULT: - SetCompressor(IDM_ZLIB); - break; - case COMPRESSOR_ZLIB: - SetCompressor(IDM_GZIP); - break; - case COMPRESSOR_GZIP: - SetCompressor(IDM_DEFAULT); - break; - } + SetCompressor((NCOMPRESSOR)(g_sdata.compressor+1)); return TRUE; } -#endif case IDM_CLEARLOG: { if (!g_sdata.thread) { @@ -495,7 +549,7 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { CloseHandle(hFile); GlobalFree(existing_text); } - } + } return TRUE; } case IDM_FIND: @@ -511,12 +565,18 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { g_find.hwndFind = FindText(&g_find.fr); return TRUE; } -#ifdef COMPRESSOR_OPTION case IDM_DEFAULT: + SetCompressor(COMPRESSOR_DEFAULT); + return TRUE; case IDM_ZLIB: - case IDM_GZIP: - return SetCompressor(LOWORD(wParam)); -#endif + SetCompressor(COMPRESSOR_ZLIB); + return TRUE; + case IDM_BZIP2: + SetCompressor(COMPRESSOR_BZIP2); + return TRUE; + case IDM_BEST: + SetCompressor(COMPRESSOR_BEST); + return TRUE; } } } @@ -547,7 +607,7 @@ DWORD WINAPI MakeNSISProc(LPVOID p) { SECURITY_ATTRIBUTES sa={sizeof(sa),}; SECURITY_DESCRIPTOR sd={0,}; PROCESS_INFORMATION pi={0,}; - HANDLE newstdout=0,read_stdout=0; + HANDLE newstdout=0,read_stdout=0; OSVERSIONINFO osv={sizeof(osv)}; GetVersionEx(&osv); if (osv.dwPlatformId == VER_PLATFORM_WIN32_NT) { @@ -603,7 +663,7 @@ DWORD WINAPI MakeNSISProc(LPVOID p) { return 0; } -BOOL CALLBACK DialogResize(HWND hWnd, LPARAM /* unused */) +BOOL CALLBACK DialogResize(HWND hWnd, LPARAM /* unused */) { RECT r; GetWindowRect(hWnd, &r); @@ -632,16 +692,16 @@ BOOL CALLBACK AboutProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { case WM_INITDIALOG: { HFONT bfont = CreateFont(13,0,0,0,FW_NORMAL,FALSE,FALSE,FALSE,DEFAULT_CHARSET, - OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, + OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH|FF_DONTCARE, "Tahoma"); HFONT bfontb = CreateFont(13,0,0,0,FW_BOLD,FALSE,FALSE,FALSE,DEFAULT_CHARSET, - OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, + OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH|FF_DONTCARE, "Tahoma"); HFONT rfont = CreateFont(12,0,0,0,FW_NORMAL,FALSE,FALSE,FALSE,DEFAULT_CHARSET, - OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, + OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH|FF_DONTCARE, "MS Shell Dlg"); HFONT rfontb = CreateFont(12,0,0,0,FW_BOLD,FALSE,FALSE,FALSE,DEFAULT_CHARSET, - OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, + OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH|FF_DONTCARE, "MS Shell Dlg"); if (bfont&&bfontb) { SendDlgItemMessage(hwndDlg, IDC_ABOUTVERSION, WM_SETFONT, (WPARAM)bfontb, FALSE); @@ -666,7 +726,7 @@ BOOL CALLBACK AboutProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { case WM_COMMAND: { switch (LOWORD(wParam)) { - case IDOK: + case IDOK: EndDialog(hwndDlg, TRUE); break; } @@ -697,12 +757,8 @@ BOOL CALLBACK DefinesProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) case IDOK: { ResetObjects(); + ResetInputScript(); ResetDefines(); - 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 *)); @@ -716,7 +772,7 @@ BOOL CALLBACK DefinesProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) EndDialog(hwndDlg, TRUE); } break; - case IDCANCEL: + case IDCANCEL: EndDialog(hwndDlg, TRUE); break; case IDRIGHT: @@ -800,29 +856,40 @@ BOOL CALLBACK DefinesProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) return FALSE; } -#ifdef COMPRESSOR_OPTION -BOOL SetCompressor(WORD command) +void SetCompressor(NCOMPRESSOR compressor) { - switch(command) { - case IDM_DEFAULT: - g_sdata.compressor = COMPRESSOR_DEFAULT; + if(g_sdata.compressor != compressor) { + WORD command; + char *compressor_name; + + switch(compressor) { + case COMPRESSOR_ZLIB: + command = IDM_ZLIB; + compressor_name = ZLIB_COMPRESSOR_NAME; break; - case IDM_ZLIB: - g_sdata.compressor = COMPRESSOR_ZLIB; + case COMPRESSOR_BZIP2: + command = IDM_BZIP2; + compressor_name = BZIP2_COMPRESSOR_NAME; break; - case IDM_GZIP: - g_sdata.compressor = COMPRESSOR_GZIP; + case COMPRESSOR_BEST: + command = IDM_BEST; + compressor_name = ZLIB_COMPRESSOR_NAME; break; default: - return FALSE; + compressor = COMPRESSOR_DEFAULT; + command = IDM_DEFAULT; + compressor_name = ""; } + g_sdata.compressor = compressor; + g_sdata.compressor_name = compressor_name; UpdateToolBarCompressorButton(); CheckMenuItem(g_sdata.menu, IDM_DEFAULT, MF_BYCOMMAND | MF_UNCHECKED); CheckMenuItem(g_sdata.menu, IDM_ZLIB, MF_BYCOMMAND | MF_UNCHECKED); - CheckMenuItem(g_sdata.menu, IDM_GZIP, MF_BYCOMMAND | MF_UNCHECKED); - + CheckMenuItem(g_sdata.menu, IDM_BZIP2, MF_BYCOMMAND | MF_UNCHECKED); + CheckMenuItem(g_sdata.menu, IDM_BEST, MF_BYCOMMAND | MF_UNCHECKED); CheckMenuItem(g_sdata.menu, command, MF_BYCOMMAND | MF_CHECKED); - - return TRUE; + ResetObjects(); + ResetInputScript(); + } } -#endif \ No newline at end of file + diff --git a/Contrib/Makensisw/makensisw.dsp b/Contrib/Makensisw/makensisw.dsp index 1f44c8e7..5acc807c 100644 --- a/Contrib/Makensisw/makensisw.dsp +++ b/Contrib/Makensisw/makensisw.dsp @@ -153,6 +153,10 @@ SOURCE=.\logo.bmp # End Source File # Begin Source File +SOURCE="..\Graphics\Icons\modern-install-blue-full.ico" +# End Source File +# Begin Source File + SOURCE="..\Icons\modern-install.ico" # End Source File # Begin Source File diff --git a/Contrib/Makensisw/makensisw.h b/Contrib/Makensisw/makensisw.h index 29af2f4c..321d7f27 100644 --- a/Contrib/Makensisw/makensisw.h +++ b/Contrib/Makensisw/makensisw.h @@ -1,4 +1,4 @@ -/* +/* Copyright (c) 2002 Robert Rainwater Contributors: Justin Frankel, Fritz Elfert, Amir Szekely, and Sunil Kamath @@ -44,6 +44,7 @@ #define REGSEC HKEY_LOCAL_MACHINE #define REGKEY "Software\\NSIS" #define REGLOC "MakeNSISWPlacement" +#define REGCOMPRESSOR "Compressor" #define REGDEFSUBKEY "Defines" #define REGDEFCOUNT "MakeNSISWDefinesCount" #define REGMRUSUBKEY "MRU" @@ -55,6 +56,13 @@ #define FILE_MENU_INDEX 0 #define EDIT_MENU_INDEX 1 #define TOOLS_MENU_INDEX 2 +#define COMPRESSOR_MENU_INDEX 4 +#define BZIP2_COMPRESSOR_NAME "bzip2" +#define ZLIB_COMPRESSOR_NAME "zlib" +#define COMPRESSOR_MESSAGE "\n\nThe %s compressor (%d bytes) created a smaller file than the %s compressor (%d bytes)." +#define ZLIB_COMPRESSOR_MESSAGE "\nThe bzip2 compressed version was replaced with zlib compressed version." +#define EXE_HEADER_COMPRESSOR_STAT "EXE header size:" +#define TOTAL_SIZE_COMPRESSOR_STAT "Total size:" #define WM_MAKENSIS_PROCESSCOMPLETE (WM_USER+1001) @@ -65,18 +73,18 @@ enum { MAKENSIS_NOTIFY_OUTPUT }; -#ifdef COMPRESSOR_OPTION typedef enum { COMPRESSOR_DEFAULT, COMPRESSOR_ZLIB, - COMPRESSOR_GZIP + COMPRESSOR_BZIP2, + COMPRESSOR_BEST } NCOMPRESSOR; -#endif + // Extern Variables extern const char* NSISW_VERSION; int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, char *cmdParam, int cmdShow); -static BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); +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); @@ -84,9 +92,7 @@ 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(); -#ifdef COMPRESSOR_OPTION -BOOL SetCompressor(WORD); -#endif +void SetCompressor(NCOMPRESSOR); void RestoreDefines(); void SaveDefines(); void RestoreMRUList(); @@ -113,9 +119,9 @@ typedef struct NSISScriptData { HANDLE thread; HWND focused_hwnd; CHARRANGE textrange; -#ifdef COMPRESSOR_OPTION NCOMPRESSOR compressor; -#endif + char *compressor_name; + char compressor_stats[512]; // Added by Darren Owen (DrO) on 1/10/2003 int recompile_test; } NSCRIPTDATA; diff --git a/Contrib/Makensisw/noclib.cpp b/Contrib/Makensisw/noclib.cpp index 75e6f3cf..563b530d 100644 --- a/Contrib/Makensisw/noclib.cpp +++ b/Contrib/Makensisw/noclib.cpp @@ -48,4 +48,11 @@ char *my_strstr(char *i, char *s) { void *my_memset(void *dest, int c, size_t count) { for (size_t i=0; i 0) && (*s1) && (*s2) && (*(s1) == *(s2))) chars--, s1++, s2++; + if ((chars == 0) || (*s1 == *s2)) return 0; + return (*s1 - *s2); } \ No newline at end of file diff --git a/Contrib/Makensisw/noclib.h b/Contrib/Makensisw/noclib.h index 80b518a6..0ad56d55 100644 --- a/Contrib/Makensisw/noclib.h +++ b/Contrib/Makensisw/noclib.h @@ -27,4 +27,5 @@ char *my_strstr(char *i, char *s); char *my_strrchr(const char *string, int c); void *my_memset(void *dest, int c, size_t count); +int lstrcmpn(char *s1, const char *s2, int chars); #endif \ No newline at end of file diff --git a/Contrib/Makensisw/resource.h b/Contrib/Makensisw/resource.h index 030bdbb1..97278ba0 100644 --- a/Contrib/Makensisw/resource.h +++ b/Contrib/Makensisw/resource.h @@ -9,6 +9,7 @@ #define IDS_FIND 5 #define IDS_RECOMPILE 6 #define IDS_DEFINES 7 +#define IDS_COMPRESSOR 8 #define IDS_TEST 9 #define IDS_EDITSCRIPT 10 #define IDS_BROWSESCR 11 @@ -19,9 +20,10 @@ #define IDS_DOCS 17 #define IDS_DEFAULT 18 #define IDS_ZLIB 19 -#define IDS_GZIP 20 +#define IDS_BZIP2 20 // Added by Darren Owen (DrO) on 1/10/2003 -#define IDS_RECOMPILE_TEST 21 +#define IDS_RECOMPILE_TEST 21 +#define IDS_BEST 22 #define DLG_MAIN 101 #define IDI_ICON 102 @@ -56,8 +58,9 @@ #define IDLEFT 1020 #define IDC_DEFINES 1021 // Added by Darren Owen (DrO) on 1/10/2003 -#define IDC_RECOMPILE_TEST 1022 +#define IDC_RECOMPILE_TEST 1022 +#define IDM_COMPRESSOR 40001 #define IDM_TEST 40002 #define IDM_EDITSCRIPT 40003 #define IDM_DOCS 40004 @@ -71,14 +74,15 @@ #define IDM_NSISUPDATE 40018 #define IDM_DEFAULT 40020 #define IDM_ZLIB 40021 -#define IDM_GZIP 40022 +#define IDM_BZIP2 40022 #define IDM_MRU_FILE 40023 #define IDM_CLEAR_MRU_LIST 40029 // Added by Darren Owen (DrO) on 1/10/2003 -#define IDM_RECOMPILE_TEST 40030 +#define IDM_RECOMPILE_TEST 40030 +#define IDM_BEST 40031 // Next default values for new objects -// +// #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 124 diff --git a/Contrib/Makensisw/resource.rc b/Contrib/Makensisw/resource.rc index 4344334b..ce06192f 100644 --- a/Contrib/Makensisw/resource.rc +++ b/Contrib/Makensisw/resource.rc @@ -88,6 +88,13 @@ BEGIN MENUITEM "&Define Symbols...\tCtrl+D", IDM_DEFINES MENUITEM "Test &Installer\tCtrl+T", IDM_TEST MENUITEM "Recompile and Run\tCtrl+M", IDM_RECOMPILE_TEST + POPUP "&Set Compressor" + BEGIN + MENUITEM "Defa&ult", IDM_DEFAULT + MENUITEM "&zlib", IDM_ZLIB + MENUITEM "bzi&p2", IDM_BZIP2 + MENUITEM "&Best", IDM_BEST + END MENUITEM "Edit Script\tCtrl+E", IDM_EDITSCRIPT MENUITEM "Browse Script\tCtrl+B", IDM_BROWSESCR MENUITEM "Clear &Log Window\tCtrl+W", IDM_CLEARLOG @@ -119,9 +126,9 @@ BEGIN "D", IDM_DEFINES, VIRTKEY, CONTROL, NOINVERT "E", IDM_EDITSCRIPT, VIRTKEY, CONTROL, NOINVERT "F", IDM_FIND, VIRTKEY, CONTROL, NOINVERT - "G", IDM_GZIP, VIRTKEY, CONTROL, NOINVERT "L", IDM_LOADSCRIPT, VIRTKEY, CONTROL, NOINVERT "M", IDM_RECOMPILE_TEST, VIRTKEY, CONTROL, NOINVERT + "P", IDM_BZIP2, VIRTKEY, CONTROL, NOINVERT "R", IDM_RECOMPILE, VIRTKEY, CONTROL, NOINVERT "T", IDM_TEST, VIRTKEY, CONTROL, NOINVERT "U", IDM_DEFAULT, VIRTKEY, CONTROL, NOINVERT @@ -248,6 +255,7 @@ BEGIN IDS_FIND "Find..." IDS_RECOMPILE "Recompile" IDS_DEFINES "Define Symbols..." + IDS_COMPRESSOR "Set Compressor" IDS_TEST "Test Installer" IDS_EDITSCRIPT "Edit Script" IDS_BROWSESCR "Browse Script" @@ -262,8 +270,9 @@ BEGIN IDS_DOCS "Documentation" IDS_DEFAULT "Default" IDS_ZLIB "zlib" - IDS_GZIP "gzip" + IDS_BZIP2 "bzip2" IDS_RECOMPILE_TEST "Recompile and run" + IDS_BEST "Best" END #endif // English (U.S.) resources diff --git a/Contrib/Makensisw/toolbar.bmp b/Contrib/Makensisw/toolbar.bmp index 64e2faf490a496324ef0ce838e6fc38a78b8ba29..ae3a274e8474ab1a37aad61119607854a26ecc01 100644 GIT binary patch delta 336 zcmYL_F-`+95JhKU!#GqFAzdQ04HT(!0D2^HmSLg+m?fDb@&!N_O^kdv=e&H2{oF_B>zm&<{Vugun?dFHCBc;R?%ee{qlUnTHE z42gkHJI}-DYZ%~b1;F1dtew{p7nJW`EC(S4!#1T9lKD>z=@2wz4}#)KGi+RuX56*| sK~vO>3FFQ5?rOwH<~JrLb!2099W$F*C*$s}#1y>#=*f5YFfuR*0BJ@B7O*&in5gq=vK-@r$;W^=k7>bVG3Eu6 z_W^MlOSkCknX}p13#zMU&aP%>S5i`9uPo6N_$VDdKBF0snll|W&jbY(R}TA{w6 zpl)&;Tes-;?bA8f3$_EP?HmY=Z0y~l6J|~T=_!~wfdOQsdN~M8UdO&*au~ +#include #define TOOLBAR_ID 10001 -#define NUMIMAGES 19 +#define NUMIMAGES 21 #define IMAGEWIDTH 16 #define IMAGEHEIGHT 16 #define BUTTONWIDTH 0 @@ -63,9 +63,7 @@ #define IDB_FIND 4 #define IDB_RECOMPILE 5 #define IDB_DEFINES 6 -#ifdef COMPRESSOR_OPTION #define IDB_COMPRESSOR 7 -#endif #define IDB_TEST 8 #define IDB_EDITSCRIPT 9 #define IDB_BROWSESCR 10 @@ -74,12 +72,11 @@ #define IDB_FORUM 14 #define IDB_NSISUPDATE 15 #define IDB_DOCS 16 -#ifdef COMPRESSOR_OPTION -#define IDB_COMPRESSOR_ZLIB 17 -#define IDB_COMPRESSOR_GZIP 18 -#endif +#define IDB_COMPRESSOR_BZIP2 17 +#define IDB_COMPRESSOR_ZLIB 18 // Added by Darren Owen (DrO) on 1/10/2003 #define IDB_RECOMPILE_TEST 19 +#define IDB_COMPRESSOR_BEST 20 typedef struct ToolBarStruct { HWND hwnd; @@ -90,8 +87,6 @@ typedef struct ToolBarStruct { void CreateToolBar(); void EnableToolBarButton(int, BOOL); void AddToolBarTooltips(); -#ifdef COMPRESSOR_OPTION void ShowToolbarDropdownMenu(); void UpdateToolBarCompressorButton(); -#endif #endif \ No newline at end of file diff --git a/Contrib/Makensisw/utils.cpp b/Contrib/Makensisw/utils.cpp index e4d94046..4206c1c2 100644 --- a/Contrib/Makensisw/utils.cpp +++ b/Contrib/Makensisw/utils.cpp @@ -105,9 +105,9 @@ void Items(HWND hwnd, int on){ EnableMenuItem(g_sdata.menu,IDM_CLEARLOG,mf); EnableMenuItem(g_sdata.menu,IDM_BROWSESCR,mf); EnableMenuItem(g_sdata.menu,IDM_RECOMPILE_TEST,mf); + EnableMenuItem(g_sdata.menu,IDM_COMPRESSOR,mf); EnableToolBarButton(IDM_SAVE,on); - // Altered by Darren Owen (DrO) on 6/10/2003 if((!g_sdata.retcode && on) || !on) EnableToolBarButton(IDM_TEST,on); @@ -119,6 +119,7 @@ void Items(HWND hwnd, int on){ EnableToolBarButton(IDM_CLEARLOG,on); EnableToolBarButton(IDM_BROWSESCR,on); EnableToolBarButton(IDM_RECOMPILE_TEST,on); + EnableToolBarButton(IDM_COMPRESSOR,on); if(!on) { if (!IsWindowEnabled(g_sdata.focused_hwnd)) @@ -128,9 +129,42 @@ void Items(HWND hwnd, int on){ SetFocus(g_sdata.focused_hwnd); } +void SetCompressorStats() +{ + DWORD line_count, i; + char buf[1024]; + bool found = false; + + line_count = SendDlgItemMessage(g_sdata.hwnd, IDC_LOGWIN, EM_GETLINECOUNT, 0, 0); + for(i=0; i