Added compressor setting option

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3167 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
icemank 2003-11-19 04:38:14 +00:00
parent 52c888841d
commit 7fe6a9959d
13 changed files with 301 additions and 125 deletions

View file

@ -173,6 +173,8 @@ Version History
- Added NSIS Update menu. - Added NSIS Update menu.
- Added toolbar for commonly used menus. - Added toolbar for commonly used menus.
- Made the Toolbar style flat - Made the Toolbar style flat
- Added option for compile & run
- Added compressor setting option
Copyright Information Copyright Information
--------------------- ---------------------

View file

@ -1,4 +1,4 @@
/* /*
Copyright (c) 2002 Robert Rainwater Copyright (c) 2002 Robert Rainwater
Contributors: Justin Frankel, Fritz Elfert, Amir Szekely, and Sunil Kamath 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; 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) { BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
static HINSTANCE hRichEditDLL = 0; static HINSTANCE hRichEditDLL = 0;
if (!hRichEditDLL) hRichEditDLL= LoadLibrary("RichEd32.dll"); 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; g_sdata.hwnd=hwndDlg;
HICON hIcon = LoadIcon(g_sdata.hInstance,MAKEINTRESOURCE(IDI_ICON)); 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 // Altered by Darren Owen (DrO) on 29/9/2003
// Added in receiving of mouse and key events from the richedit control // 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); DragAcceptFiles(g_sdata.hwnd,FALSE);
g_sdata.menu = GetMenu(g_sdata.hwnd); g_sdata.menu = GetMenu(g_sdata.hwnd);
g_sdata.fileSubmenu = GetSubMenu(g_sdata.menu, FILE_MENU_INDEX); 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(); RestoreMRUList();
CreateToolBar(); CreateToolBar();
InitTooltips(g_sdata.hwnd); InitTooltips(g_sdata.hwnd);
#ifdef COMPRESSOR_OPTION
SetCompressor(IDM_DEFAULT);
#endif
SetBranding(g_sdata.hwnd); 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"); 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,WM_SETFONT,(WPARAM)hFont,0);
SendDlgItemMessage(hwndDlg,IDC_LOGWIN,EM_SETBKGNDCOLOR,0,GetSysColor(COLOR_BTNFACE)); SendDlgItemMessage(hwndDlg,IDC_LOGWIN,EM_SETBKGNDCOLOR,0,GetSysColor(COLOR_BTNFACE));
RestoreWindowPos(g_sdata.hwnd); RestoreWindowPos(g_sdata.hwnd);
RestoreCompressor();
CompileNSISScript(); CompileNSISScript();
return TRUE; return TRUE;
} }
@ -140,6 +147,7 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
{ {
SaveDefines(); SaveDefines();
SaveMRUList(); SaveMRUList();
SaveCompressor();
SaveWindowPos(g_sdata.hwnd); SaveWindowPos(g_sdata.hwnd);
DestroyTooltips(); DestroyTooltips();
PostQuitMessage(0); PostQuitMessage(0);
@ -173,7 +181,7 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
} }
case WM_GETMINMAXINFO: case WM_GETMINMAXINFO:
{ {
((MINMAXINFO*)lParam)->ptMinTrackSize.x=MINWIDTH; ((MINMAXINFO*)lParam)->ptMinTrackSize.x=MINWIDTH;
((MINMAXINFO*)lParam)->ptMinTrackSize.y=MINHEIGHT; ((MINMAXINFO*)lParam)->ptMinTrackSize.y=MINHEIGHT;
} }
case WM_ENTERSIZEMOVE: case WM_ENTERSIZEMOVE:
@ -209,6 +217,66 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
CloseHandle(g_sdata.thread); CloseHandle(g_sdata.thread);
g_sdata.thread=0; 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); EnableItems(g_sdata.hwnd);
if (g_sdata.retcode==0) { if (g_sdata.retcode==0) {
MessageBeep(MB_ICONASTERISK); MessageBeep(MB_ICONASTERISK);
@ -233,7 +301,7 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
} }
case WM_NOTIFY: case WM_NOTIFY:
switch (((NMHDR*)lParam)->code ) { switch (((NMHDR*)lParam)->code ) {
case EN_SELCHANGE: case EN_SELCHANGE:
SendDlgItemMessage(hwndDlg,IDC_LOGWIN, EM_EXGETSEL, 0, (LPARAM) &g_sdata.textrange); SendDlgItemMessage(hwndDlg,IDC_LOGWIN, EM_EXGETSEL, 0, (LPARAM) &g_sdata.textrange);
{ {
BOOL enabled = (g_sdata.textrange.cpMax-g_sdata.textrange.cpMin<=0?FALSE:TRUE); 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); 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); 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: case TBN_DROPDOWN:
{ {
LPNMTOOLBAR pToolBar = (LPNMTOOLBAR) lParam; LPNMTOOLBAR pToolBar = (LPNMTOOLBAR) lParam;
@ -276,7 +343,6 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
return TBDDRET_NODEFAULT; return TBDDRET_NODEFAULT;
} }
} }
#endif
} }
return TRUE; return TRUE;
case WM_COPYDATA: case WM_COPYDATA:
@ -389,23 +455,11 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
case IDM_CLEAR_MRU_LIST: case IDM_CLEAR_MRU_LIST:
ClearMRUList(); ClearMRUList();
return TRUE; return TRUE;
#ifdef COMPRESSOR_OPTION
case IDM_COMPRESSOR: case IDM_COMPRESSOR:
{ {
switch(g_sdata.compressor) { SetCompressor((NCOMPRESSOR)(g_sdata.compressor+1));
case COMPRESSOR_DEFAULT:
SetCompressor(IDM_ZLIB);
break;
case COMPRESSOR_ZLIB:
SetCompressor(IDM_GZIP);
break;
case COMPRESSOR_GZIP:
SetCompressor(IDM_DEFAULT);
break;
}
return TRUE; return TRUE;
} }
#endif
case IDM_CLEARLOG: case IDM_CLEARLOG:
{ {
if (!g_sdata.thread) { if (!g_sdata.thread) {
@ -495,7 +549,7 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
CloseHandle(hFile); CloseHandle(hFile);
GlobalFree(existing_text); GlobalFree(existing_text);
} }
} }
return TRUE; return TRUE;
} }
case IDM_FIND: 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); g_find.hwndFind = FindText(&g_find.fr);
return TRUE; return TRUE;
} }
#ifdef COMPRESSOR_OPTION
case IDM_DEFAULT: case IDM_DEFAULT:
SetCompressor(COMPRESSOR_DEFAULT);
return TRUE;
case IDM_ZLIB: case IDM_ZLIB:
case IDM_GZIP: SetCompressor(COMPRESSOR_ZLIB);
return SetCompressor(LOWORD(wParam)); return TRUE;
#endif 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_ATTRIBUTES sa={sizeof(sa),};
SECURITY_DESCRIPTOR sd={0,}; SECURITY_DESCRIPTOR sd={0,};
PROCESS_INFORMATION pi={0,}; PROCESS_INFORMATION pi={0,};
HANDLE newstdout=0,read_stdout=0; HANDLE newstdout=0,read_stdout=0;
OSVERSIONINFO osv={sizeof(osv)}; OSVERSIONINFO osv={sizeof(osv)};
GetVersionEx(&osv); GetVersionEx(&osv);
if (osv.dwPlatformId == VER_PLATFORM_WIN32_NT) { if (osv.dwPlatformId == VER_PLATFORM_WIN32_NT) {
@ -603,7 +663,7 @@ DWORD WINAPI MakeNSISProc(LPVOID p) {
return 0; return 0;
} }
BOOL CALLBACK DialogResize(HWND hWnd, LPARAM /* unused */) BOOL CALLBACK DialogResize(HWND hWnd, LPARAM /* unused */)
{ {
RECT r; RECT r;
GetWindowRect(hWnd, &r); GetWindowRect(hWnd, &r);
@ -632,16 +692,16 @@ BOOL CALLBACK AboutProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
case WM_INITDIALOG: case WM_INITDIALOG:
{ {
HFONT bfont = CreateFont(13,0,0,0,FW_NORMAL,FALSE,FALSE,FALSE,DEFAULT_CHARSET, 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"); FIXED_PITCH|FF_DONTCARE, "Tahoma");
HFONT bfontb = CreateFont(13,0,0,0,FW_BOLD,FALSE,FALSE,FALSE,DEFAULT_CHARSET, 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"); FIXED_PITCH|FF_DONTCARE, "Tahoma");
HFONT rfont = CreateFont(12,0,0,0,FW_NORMAL,FALSE,FALSE,FALSE,DEFAULT_CHARSET, 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"); FIXED_PITCH|FF_DONTCARE, "MS Shell Dlg");
HFONT rfontb = CreateFont(12,0,0,0,FW_BOLD,FALSE,FALSE,FALSE,DEFAULT_CHARSET, 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"); FIXED_PITCH|FF_DONTCARE, "MS Shell Dlg");
if (bfont&&bfontb) { if (bfont&&bfontb) {
SendDlgItemMessage(hwndDlg, IDC_ABOUTVERSION, WM_SETFONT, (WPARAM)bfontb, FALSE); 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: case WM_COMMAND:
{ {
switch (LOWORD(wParam)) { switch (LOWORD(wParam)) {
case IDOK: case IDOK:
EndDialog(hwndDlg, TRUE); EndDialog(hwndDlg, TRUE);
break; break;
} }
@ -697,12 +757,8 @@ BOOL CALLBACK DefinesProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
case IDOK: case IDOK:
{ {
ResetObjects(); ResetObjects();
ResetInputScript();
ResetDefines(); 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); int n = SendDlgItemMessage(hwndDlg, IDC_DEFINES, LB_GETCOUNT, 0, 0);
if(n > 0) { if(n > 0) {
g_sdata.defines = (char **)GlobalAlloc(GPTR, (n+1)*sizeof(char *)); 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); EndDialog(hwndDlg, TRUE);
} }
break; break;
case IDCANCEL: case IDCANCEL:
EndDialog(hwndDlg, TRUE); EndDialog(hwndDlg, TRUE);
break; break;
case IDRIGHT: case IDRIGHT:
@ -800,29 +856,40 @@ BOOL CALLBACK DefinesProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
return FALSE; return FALSE;
} }
#ifdef COMPRESSOR_OPTION void SetCompressor(NCOMPRESSOR compressor)
BOOL SetCompressor(WORD command)
{ {
switch(command) { if(g_sdata.compressor != compressor) {
case IDM_DEFAULT: WORD command;
g_sdata.compressor = COMPRESSOR_DEFAULT; char *compressor_name;
switch(compressor) {
case COMPRESSOR_ZLIB:
command = IDM_ZLIB;
compressor_name = ZLIB_COMPRESSOR_NAME;
break; break;
case IDM_ZLIB: case COMPRESSOR_BZIP2:
g_sdata.compressor = COMPRESSOR_ZLIB; command = IDM_BZIP2;
compressor_name = BZIP2_COMPRESSOR_NAME;
break; break;
case IDM_GZIP: case COMPRESSOR_BEST:
g_sdata.compressor = COMPRESSOR_GZIP; command = IDM_BEST;
compressor_name = ZLIB_COMPRESSOR_NAME;
break; break;
default: default:
return FALSE; compressor = COMPRESSOR_DEFAULT;
command = IDM_DEFAULT;
compressor_name = "";
} }
g_sdata.compressor = compressor;
g_sdata.compressor_name = compressor_name;
UpdateToolBarCompressorButton(); UpdateToolBarCompressorButton();
CheckMenuItem(g_sdata.menu, IDM_DEFAULT, MF_BYCOMMAND | MF_UNCHECKED); 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_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); CheckMenuItem(g_sdata.menu, command, MF_BYCOMMAND | MF_CHECKED);
ResetObjects();
return TRUE; ResetInputScript();
}
} }
#endif

View file

@ -153,6 +153,10 @@ SOURCE=.\logo.bmp
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE="..\Graphics\Icons\modern-install-blue-full.ico"
# End Source File
# Begin Source File
SOURCE="..\Icons\modern-install.ico" SOURCE="..\Icons\modern-install.ico"
# End Source File # End Source File
# Begin Source File # Begin Source File

View file

@ -1,4 +1,4 @@
/* /*
Copyright (c) 2002 Robert Rainwater Copyright (c) 2002 Robert Rainwater
Contributors: Justin Frankel, Fritz Elfert, Amir Szekely, and Sunil Kamath Contributors: Justin Frankel, Fritz Elfert, Amir Szekely, and Sunil Kamath
@ -44,6 +44,7 @@
#define REGSEC HKEY_LOCAL_MACHINE #define REGSEC HKEY_LOCAL_MACHINE
#define REGKEY "Software\\NSIS" #define REGKEY "Software\\NSIS"
#define REGLOC "MakeNSISWPlacement" #define REGLOC "MakeNSISWPlacement"
#define REGCOMPRESSOR "Compressor"
#define REGDEFSUBKEY "Defines" #define REGDEFSUBKEY "Defines"
#define REGDEFCOUNT "MakeNSISWDefinesCount" #define REGDEFCOUNT "MakeNSISWDefinesCount"
#define REGMRUSUBKEY "MRU" #define REGMRUSUBKEY "MRU"
@ -55,6 +56,13 @@
#define FILE_MENU_INDEX 0 #define FILE_MENU_INDEX 0
#define EDIT_MENU_INDEX 1 #define EDIT_MENU_INDEX 1
#define TOOLS_MENU_INDEX 2 #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) #define WM_MAKENSIS_PROCESSCOMPLETE (WM_USER+1001)
@ -65,18 +73,18 @@ enum {
MAKENSIS_NOTIFY_OUTPUT MAKENSIS_NOTIFY_OUTPUT
}; };
#ifdef COMPRESSOR_OPTION
typedef enum { typedef enum {
COMPRESSOR_DEFAULT, COMPRESSOR_DEFAULT,
COMPRESSOR_ZLIB, COMPRESSOR_ZLIB,
COMPRESSOR_GZIP COMPRESSOR_BZIP2,
COMPRESSOR_BEST
} NCOMPRESSOR; } NCOMPRESSOR;
#endif
// Extern Variables // Extern Variables
extern const char* NSISW_VERSION; extern const char* NSISW_VERSION;
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, char *cmdParam, int cmdShow); 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); DWORD WINAPI MakeNSISProc(LPVOID p);
BOOL CALLBACK DialogResize(HWND hWnd, LPARAM /* unused*/); BOOL CALLBACK DialogResize(HWND hWnd, LPARAM /* unused*/);
BOOL CALLBACK AboutNSISProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam); 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); BOOL CALLBACK DefinesProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
void CompileNSISScript(); void CompileNSISScript();
char* BuildDefines(); char* BuildDefines();
#ifdef COMPRESSOR_OPTION void SetCompressor(NCOMPRESSOR);
BOOL SetCompressor(WORD);
#endif
void RestoreDefines(); void RestoreDefines();
void SaveDefines(); void SaveDefines();
void RestoreMRUList(); void RestoreMRUList();
@ -113,9 +119,9 @@ typedef struct NSISScriptData {
HANDLE thread; HANDLE thread;
HWND focused_hwnd; HWND focused_hwnd;
CHARRANGE textrange; CHARRANGE textrange;
#ifdef COMPRESSOR_OPTION
NCOMPRESSOR compressor; NCOMPRESSOR compressor;
#endif char *compressor_name;
char compressor_stats[512];
// Added by Darren Owen (DrO) on 1/10/2003 // Added by Darren Owen (DrO) on 1/10/2003
int recompile_test; int recompile_test;
} NSCRIPTDATA; } NSCRIPTDATA;

View file

@ -48,4 +48,11 @@ char *my_strstr(char *i, char *s) {
void *my_memset(void *dest, int c, size_t count) { void *my_memset(void *dest, int c, size_t count) {
for (size_t i=0; i<count;i++) ((char*)dest)[i]=c; for (size_t i=0; i<count;i++) ((char*)dest)[i]=c;
return dest; return dest;
}
int lstrcmpn(char *s1, const char *s2, int chars)
{
while ((chars > 0) && (*s1) && (*s2) && (*(s1) == *(s2))) chars--, s1++, s2++;
if ((chars == 0) || (*s1 == *s2)) return 0;
return (*s1 - *s2);
} }

View file

@ -27,4 +27,5 @@ char *my_strstr(char *i, char *s);
char *my_strrchr(const char *string, int c); char *my_strrchr(const char *string, int c);
void *my_memset(void *dest, int c, size_t count); void *my_memset(void *dest, int c, size_t count);
int lstrcmpn(char *s1, const char *s2, int chars);
#endif #endif

View file

@ -9,6 +9,7 @@
#define IDS_FIND 5 #define IDS_FIND 5
#define IDS_RECOMPILE 6 #define IDS_RECOMPILE 6
#define IDS_DEFINES 7 #define IDS_DEFINES 7
#define IDS_COMPRESSOR 8
#define IDS_TEST 9 #define IDS_TEST 9
#define IDS_EDITSCRIPT 10 #define IDS_EDITSCRIPT 10
#define IDS_BROWSESCR 11 #define IDS_BROWSESCR 11
@ -19,9 +20,10 @@
#define IDS_DOCS 17 #define IDS_DOCS 17
#define IDS_DEFAULT 18 #define IDS_DEFAULT 18
#define IDS_ZLIB 19 #define IDS_ZLIB 19
#define IDS_GZIP 20 #define IDS_BZIP2 20
// Added by Darren Owen (DrO) on 1/10/2003 // 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 DLG_MAIN 101
#define IDI_ICON 102 #define IDI_ICON 102
@ -56,8 +58,9 @@
#define IDLEFT 1020 #define IDLEFT 1020
#define IDC_DEFINES 1021 #define IDC_DEFINES 1021
// Added by Darren Owen (DrO) on 1/10/2003 // 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_TEST 40002
#define IDM_EDITSCRIPT 40003 #define IDM_EDITSCRIPT 40003
#define IDM_DOCS 40004 #define IDM_DOCS 40004
@ -71,14 +74,15 @@
#define IDM_NSISUPDATE 40018 #define IDM_NSISUPDATE 40018
#define IDM_DEFAULT 40020 #define IDM_DEFAULT 40020
#define IDM_ZLIB 40021 #define IDM_ZLIB 40021
#define IDM_GZIP 40022 #define IDM_BZIP2 40022
#define IDM_MRU_FILE 40023 #define IDM_MRU_FILE 40023
#define IDM_CLEAR_MRU_LIST 40029 #define IDM_CLEAR_MRU_LIST 40029
// Added by Darren Owen (DrO) on 1/10/2003 // 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 // Next default values for new objects
// //
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS #ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 124 #define _APS_NEXT_RESOURCE_VALUE 124

View file

@ -88,6 +88,13 @@ BEGIN
MENUITEM "&Define Symbols...\tCtrl+D", IDM_DEFINES MENUITEM "&Define Symbols...\tCtrl+D", IDM_DEFINES
MENUITEM "Test &Installer\tCtrl+T", IDM_TEST MENUITEM "Test &Installer\tCtrl+T", IDM_TEST
MENUITEM "Recompile and Run\tCtrl+M", IDM_RECOMPILE_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 "Edit Script\tCtrl+E", IDM_EDITSCRIPT
MENUITEM "Browse Script\tCtrl+B", IDM_BROWSESCR MENUITEM "Browse Script\tCtrl+B", IDM_BROWSESCR
MENUITEM "Clear &Log Window\tCtrl+W", IDM_CLEARLOG MENUITEM "Clear &Log Window\tCtrl+W", IDM_CLEARLOG
@ -119,9 +126,9 @@ BEGIN
"D", IDM_DEFINES, VIRTKEY, CONTROL, NOINVERT "D", IDM_DEFINES, VIRTKEY, CONTROL, NOINVERT
"E", IDM_EDITSCRIPT, VIRTKEY, CONTROL, NOINVERT "E", IDM_EDITSCRIPT, VIRTKEY, CONTROL, NOINVERT
"F", IDM_FIND, VIRTKEY, CONTROL, NOINVERT "F", IDM_FIND, VIRTKEY, CONTROL, NOINVERT
"G", IDM_GZIP, VIRTKEY, CONTROL, NOINVERT
"L", IDM_LOADSCRIPT, VIRTKEY, CONTROL, NOINVERT "L", IDM_LOADSCRIPT, VIRTKEY, CONTROL, NOINVERT
"M", IDM_RECOMPILE_TEST, VIRTKEY, CONTROL, NOINVERT "M", IDM_RECOMPILE_TEST, VIRTKEY, CONTROL, NOINVERT
"P", IDM_BZIP2, VIRTKEY, CONTROL, NOINVERT
"R", IDM_RECOMPILE, VIRTKEY, CONTROL, NOINVERT "R", IDM_RECOMPILE, VIRTKEY, CONTROL, NOINVERT
"T", IDM_TEST, VIRTKEY, CONTROL, NOINVERT "T", IDM_TEST, VIRTKEY, CONTROL, NOINVERT
"U", IDM_DEFAULT, VIRTKEY, CONTROL, NOINVERT "U", IDM_DEFAULT, VIRTKEY, CONTROL, NOINVERT
@ -248,6 +255,7 @@ BEGIN
IDS_FIND "Find..." IDS_FIND "Find..."
IDS_RECOMPILE "Recompile" IDS_RECOMPILE "Recompile"
IDS_DEFINES "Define Symbols..." IDS_DEFINES "Define Symbols..."
IDS_COMPRESSOR "Set Compressor"
IDS_TEST "Test Installer" IDS_TEST "Test Installer"
IDS_EDITSCRIPT "Edit Script" IDS_EDITSCRIPT "Edit Script"
IDS_BROWSESCR "Browse Script" IDS_BROWSESCR "Browse Script"
@ -262,8 +270,9 @@ BEGIN
IDS_DOCS "Documentation" IDS_DOCS "Documentation"
IDS_DEFAULT "Default" IDS_DEFAULT "Default"
IDS_ZLIB "zlib" IDS_ZLIB "zlib"
IDS_GZIP "gzip" IDS_BZIP2 "bzip2"
IDS_RECOMPILE_TEST "Recompile and run" IDS_RECOMPILE_TEST "Recompile and run"
IDS_BEST "Best"
END END
#endif // English (U.S.) resources #endif // English (U.S.) resources

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before After
Before After

View file

@ -1,4 +1,4 @@
/* /*
Copyright (c) 2003 Sunil Kamath Copyright (c) 2003 Sunil Kamath
This software is provided 'as-is', without any express or implied This software is provided 'as-is', without any express or implied
@ -42,7 +42,7 @@ TBBUTTON CreateToolBarButton(int iBitmap, int idCommand, BYTE fsState, BYTE fsSt
} }
void CreateToolBar() void CreateToolBar()
{ {
static TBBUTTON tbButton[BUTTONCOUNT]; static TBBUTTON tbButton[BUTTONCOUNT];
tbButton[TBB_LOADSCRIPT] = CreateToolBarButton(IDB_LOADSCRIPT, IDM_LOADSCRIPT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0); tbButton[TBB_LOADSCRIPT] = CreateToolBarButton(IDB_LOADSCRIPT, IDM_LOADSCRIPT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0);
tbButton[TBB_SAVE] = CreateToolBarButton(IDB_SAVE, IDM_SAVE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0); tbButton[TBB_SAVE] = CreateToolBarButton(IDB_SAVE, IDM_SAVE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0);
@ -53,11 +53,7 @@ void CreateToolBar()
tbButton[TBB_SEP2] = CreateToolBarButton(0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0); tbButton[TBB_SEP2] = CreateToolBarButton(0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0);
tbButton[TBB_RECOMPILE] = CreateToolBarButton(IDB_RECOMPILE, IDM_RECOMPILE, TBSTATE_INDETERMINATE, TBSTYLE_BUTTON, 0, 0); tbButton[TBB_RECOMPILE] = CreateToolBarButton(IDB_RECOMPILE, IDM_RECOMPILE, TBSTATE_INDETERMINATE, TBSTYLE_BUTTON, 0, 0);
tbButton[TBB_DEFINES] = CreateToolBarButton(IDB_DEFINES, IDM_DEFINES, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0); tbButton[TBB_DEFINES] = CreateToolBarButton(IDB_DEFINES, IDM_DEFINES, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0);
#ifdef COMPRESSOR_OPTION
tbButton[TBB_COMPRESSOR] = CreateToolBarButton(IDB_COMPRESSOR, IDM_COMPRESSOR, TBSTATE_ENABLED, TBSTYLE_DROPDOWN, 0, 0); tbButton[TBB_COMPRESSOR] = CreateToolBarButton(IDB_COMPRESSOR, IDM_COMPRESSOR, TBSTATE_ENABLED, TBSTYLE_DROPDOWN, 0, 0);
#else
tbButton[TBB_COMPRESSOR] = CreateToolBarButton(0, 0, TBSTATE_HIDDEN, TBSTYLE_DROPDOWN, 0, 0);
#endif
tbButton[TBB_TEST] = CreateToolBarButton(IDB_TEST, IDM_TEST, TBSTATE_INDETERMINATE, TBSTYLE_BUTTON, 0, 0); tbButton[TBB_TEST] = CreateToolBarButton(IDB_TEST, IDM_TEST, TBSTATE_INDETERMINATE, TBSTYLE_BUTTON, 0, 0);
// Added by Darren Owen (DrO) on 1/10/2003 // Added by Darren Owen (DrO) on 1/10/2003
tbButton[TBB_RECOMPILE_TEST] = CreateToolBarButton(IDB_RECOMPILE_TEST, IDM_RECOMPILE_TEST, TBSTATE_INDETERMINATE, TBSTYLE_BUTTON, 0, 0); tbButton[TBB_RECOMPILE_TEST] = CreateToolBarButton(IDB_RECOMPILE_TEST, IDM_RECOMPILE_TEST, TBSTATE_INDETERMINATE, TBSTYLE_BUTTON, 0, 0);
@ -84,18 +80,15 @@ void CreateToolBar()
IMAGEWIDTH, IMAGEWIDTH,
IMAGEHEIGHT, IMAGEHEIGHT,
sizeof(TBBUTTON)); sizeof(TBBUTTON));
#ifdef COMPRESSOR_OPTION
SendMessage(g_toolbar.hwnd, TB_SETEXTENDEDSTYLE, 0, (LPARAM) (DWORD) TBSTYLE_EX_DRAWDDARROWS); SendMessage(g_toolbar.hwnd, TB_SETEXTENDEDSTYLE, 0, (LPARAM) (DWORD) TBSTYLE_EX_DRAWDDARROWS);
HMENU toolmenu = GetSubMenu(g_sdata.menu, 2); HMENU toolmenu = GetSubMenu(g_sdata.menu, TOOLS_MENU_INDEX);
g_toolbar.dropdownmenu = GetSubMenu(toolmenu,2); g_toolbar.dropdownmenu = GetSubMenu(toolmenu, COMPRESSOR_MENU_INDEX);
RECT rect; RECT rect;
SendMessage(g_toolbar.hwnd, TB_GETITEMRECT, TBB_COMPRESSOR, (LPARAM) (LPRECT) &rect); SendMessage(g_toolbar.hwnd, TB_GETITEMRECT, TBB_COMPRESSOR, (LPARAM) (LPRECT) &rect);
g_toolbar.dropdownpoint.x = rect.left; g_toolbar.dropdownpoint.x = rect.left;
g_toolbar.dropdownpoint.y = rect.bottom+1; g_toolbar.dropdownpoint.y = rect.bottom+1;
#endif
} }
#ifdef COMPRESSOR_OPTION
void UpdateToolBarCompressorButton() void UpdateToolBarCompressorButton()
{ {
int iBitmap; int iBitmap;
@ -115,9 +108,13 @@ void UpdateToolBarCompressorButton()
iBitmap = IDB_COMPRESSOR_ZLIB; iBitmap = IDB_COMPRESSOR_ZLIB;
iString = IDS_ZLIB; iString = IDS_ZLIB;
break; break;
case COMPRESSOR_GZIP: case COMPRESSOR_BZIP2:
iBitmap = IDB_COMPRESSOR_GZIP; iBitmap = IDB_COMPRESSOR_BZIP2;
iString = IDS_GZIP; iString = IDS_BZIP2;
break;
case COMPRESSOR_BEST:
iBitmap = IDB_COMPRESSOR_BEST;
iString = IDS_BEST;
break; break;
default: default:
return; return;
@ -138,16 +135,15 @@ void UpdateToolBarCompressorButton()
SendMessage(g_toolbar.hwnd, TB_CHANGEBITMAP, (WPARAM) IDM_COMPRESSOR, (LPARAM) MAKELPARAM(iBitmap, 0)); SendMessage(g_toolbar.hwnd, TB_CHANGEBITMAP, (WPARAM) IDM_COMPRESSOR, (LPARAM) MAKELPARAM(iBitmap, 0));
ti.cbSize = sizeof(TOOLINFO); ti.cbSize = sizeof(TOOLINFO);
ti.uFlags = 0; ti.uFlags = 0;
ti.hinst = g_sdata.hInstance; ti.hinst = g_sdata.hInstance;
ti.hwnd = g_toolbar.hwnd; ti.hwnd = g_toolbar.hwnd;
ti.uId = (UINT)TBB_COMPRESSOR; ti.uId = (UINT)TBB_COMPRESSOR;
SendMessage(g_tip.tip, TTM_GETTOOLINFO, 0, (LPARAM) (LPTOOLINFO) &ti); SendMessage(g_tip.tip, TTM_GETTOOLINFO, 0, (LPARAM) (LPTOOLINFO) &ti);
ti.lpszText = (LPSTR)szBuffer; ti.lpszText = (LPSTR)szBuffer;
SendMessage(g_tip.tip, TTM_SETTOOLINFO, 0, (LPARAM) (LPTOOLINFO) &ti); SendMessage(g_tip.tip, TTM_SETTOOLINFO, 0, (LPARAM) (LPTOOLINFO) &ti);
} }
#endif
void AddToolBarButtonTooltip(int id, int iString) void AddToolBarButtonTooltip(int id, int iString)
{ {
@ -159,23 +155,23 @@ void AddToolBarButtonTooltip(int id, int iString)
SendMessage(g_toolbar.hwnd, TB_GETITEMRECT, id, (LPARAM) (LPRECT) &rect); SendMessage(g_toolbar.hwnd, TB_GETITEMRECT, id, (LPARAM) (LPRECT) &rect);
ti.cbSize = sizeof(TOOLINFO); ti.cbSize = sizeof(TOOLINFO);
ti.uFlags = 0; ti.uFlags = 0;
ti.hwnd = g_toolbar.hwnd; ti.hwnd = g_toolbar.hwnd;
ti.hinst = g_sdata.hInstance; ti.hinst = g_sdata.hInstance;
ti.uId = (UINT)id; ti.uId = (UINT)id;
LoadString(g_sdata.hInstance, LoadString(g_sdata.hInstance,
iString, iString,
szBuffer, szBuffer,
sizeof(szBuffer)); sizeof(szBuffer));
ti.lpszText = (LPSTR) szBuffer; ti.lpszText = (LPSTR) szBuffer;
ti.rect.left =rect.left; ti.rect.left =rect.left;
ti.rect.top = rect.top; ti.rect.top = rect.top;
ti.rect.right = rect.right; ti.rect.right = rect.right;
ti.rect.bottom = rect.bottom; ti.rect.bottom = rect.bottom;
SendMessage(g_tip.tip, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti); SendMessage(g_tip.tip, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti);
} }
void AddToolBarTooltips() void AddToolBarTooltips()
@ -187,9 +183,7 @@ void AddToolBarTooltips()
AddToolBarButtonTooltip(TBB_FIND, IDS_FIND); AddToolBarButtonTooltip(TBB_FIND, IDS_FIND);
AddToolBarButtonTooltip(TBB_RECOMPILE, IDS_RECOMPILE); AddToolBarButtonTooltip(TBB_RECOMPILE, IDS_RECOMPILE);
AddToolBarButtonTooltip(TBB_DEFINES, IDS_DEFINES); AddToolBarButtonTooltip(TBB_DEFINES, IDS_DEFINES);
#ifdef COMPRESSOR_OPTION
AddToolBarButtonTooltip(TBB_COMPRESSOR, IDS_COMPRESSOR); AddToolBarButtonTooltip(TBB_COMPRESSOR, IDS_COMPRESSOR);
#endif
AddToolBarButtonTooltip(TBB_TEST, IDS_TEST); AddToolBarButtonTooltip(TBB_TEST, IDS_TEST);
// Added by Darren Owen (DrO) on 1/10/2003 // Added by Darren Owen (DrO) on 1/10/2003
AddToolBarButtonTooltip(TBB_RECOMPILE_TEST, IDS_RECOMPILE_TEST); AddToolBarButtonTooltip(TBB_RECOMPILE_TEST, IDS_RECOMPILE_TEST);
@ -205,11 +199,10 @@ void AddToolBarTooltips()
void EnableToolBarButton(int id, BOOL enabled) void EnableToolBarButton(int id, BOOL enabled)
{ {
UINT state = (enabled?TBSTATE_ENABLED:TBSTATE_INDETERMINATE); UINT state = (enabled?TBSTATE_ENABLED:TBSTATE_INDETERMINATE);
SendMessage(g_toolbar.hwnd, TB_SETSTATE, id, MAKELPARAM(state, 0)); SendMessage(g_toolbar.hwnd, TB_SETSTATE, id, MAKELPARAM(state, 0));
} }
#ifdef COMPRESSOR_OPTION
void ShowToolbarDropdownMenu() void ShowToolbarDropdownMenu()
{ {
RECT rect; RECT rect;
@ -222,4 +215,3 @@ void ShowToolbarDropdownMenu()
g_sdata.hwnd, g_sdata.hwnd,
0); 0);
} }
#endif

View file

@ -1,4 +1,4 @@
/* /*
Copyright (c) 2003 Sunil Kamath Copyright (c) 2003 Sunil Kamath
This software is provided 'as-is', without any express or implied This software is provided 'as-is', without any express or implied
@ -20,11 +20,11 @@
*/ */
#ifndef TOOLBAR_H #ifndef TOOLBAR_H
#define TOOLBAR_H #define TOOLBAR_H
#include <commctrl.h> #include <commctrl.h>
#define TOOLBAR_ID 10001 #define TOOLBAR_ID 10001
#define NUMIMAGES 19 #define NUMIMAGES 21
#define IMAGEWIDTH 16 #define IMAGEWIDTH 16
#define IMAGEHEIGHT 16 #define IMAGEHEIGHT 16
#define BUTTONWIDTH 0 #define BUTTONWIDTH 0
@ -63,9 +63,7 @@
#define IDB_FIND 4 #define IDB_FIND 4
#define IDB_RECOMPILE 5 #define IDB_RECOMPILE 5
#define IDB_DEFINES 6 #define IDB_DEFINES 6
#ifdef COMPRESSOR_OPTION
#define IDB_COMPRESSOR 7 #define IDB_COMPRESSOR 7
#endif
#define IDB_TEST 8 #define IDB_TEST 8
#define IDB_EDITSCRIPT 9 #define IDB_EDITSCRIPT 9
#define IDB_BROWSESCR 10 #define IDB_BROWSESCR 10
@ -74,12 +72,11 @@
#define IDB_FORUM 14 #define IDB_FORUM 14
#define IDB_NSISUPDATE 15 #define IDB_NSISUPDATE 15
#define IDB_DOCS 16 #define IDB_DOCS 16
#ifdef COMPRESSOR_OPTION #define IDB_COMPRESSOR_BZIP2 17
#define IDB_COMPRESSOR_ZLIB 17 #define IDB_COMPRESSOR_ZLIB 18
#define IDB_COMPRESSOR_GZIP 18
#endif
// Added by Darren Owen (DrO) on 1/10/2003 // Added by Darren Owen (DrO) on 1/10/2003
#define IDB_RECOMPILE_TEST 19 #define IDB_RECOMPILE_TEST 19
#define IDB_COMPRESSOR_BEST 20
typedef struct ToolBarStruct { typedef struct ToolBarStruct {
HWND hwnd; HWND hwnd;
@ -90,8 +87,6 @@ typedef struct ToolBarStruct {
void CreateToolBar(); void CreateToolBar();
void EnableToolBarButton(int, BOOL); void EnableToolBarButton(int, BOOL);
void AddToolBarTooltips(); void AddToolBarTooltips();
#ifdef COMPRESSOR_OPTION
void ShowToolbarDropdownMenu(); void ShowToolbarDropdownMenu();
void UpdateToolBarCompressorButton(); void UpdateToolBarCompressorButton();
#endif
#endif #endif

View file

@ -105,9 +105,9 @@ void Items(HWND hwnd, int on){
EnableMenuItem(g_sdata.menu,IDM_CLEARLOG,mf); EnableMenuItem(g_sdata.menu,IDM_CLEARLOG,mf);
EnableMenuItem(g_sdata.menu,IDM_BROWSESCR,mf); EnableMenuItem(g_sdata.menu,IDM_BROWSESCR,mf);
EnableMenuItem(g_sdata.menu,IDM_RECOMPILE_TEST,mf); EnableMenuItem(g_sdata.menu,IDM_RECOMPILE_TEST,mf);
EnableMenuItem(g_sdata.menu,IDM_COMPRESSOR,mf);
EnableToolBarButton(IDM_SAVE,on); EnableToolBarButton(IDM_SAVE,on);
// Altered by Darren Owen (DrO) on 6/10/2003 // Altered by Darren Owen (DrO) on 6/10/2003
if((!g_sdata.retcode && on) || !on) if((!g_sdata.retcode && on) || !on)
EnableToolBarButton(IDM_TEST,on); EnableToolBarButton(IDM_TEST,on);
@ -119,6 +119,7 @@ void Items(HWND hwnd, int on){
EnableToolBarButton(IDM_CLEARLOG,on); EnableToolBarButton(IDM_CLEARLOG,on);
EnableToolBarButton(IDM_BROWSESCR,on); EnableToolBarButton(IDM_BROWSESCR,on);
EnableToolBarButton(IDM_RECOMPILE_TEST,on); EnableToolBarButton(IDM_RECOMPILE_TEST,on);
EnableToolBarButton(IDM_COMPRESSOR,on);
if(!on) { if(!on) {
if (!IsWindowEnabled(g_sdata.focused_hwnd)) if (!IsWindowEnabled(g_sdata.focused_hwnd))
@ -128,9 +129,42 @@ void Items(HWND hwnd, int on){
SetFocus(g_sdata.focused_hwnd); 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<line_count; i++) {
*((LPWORD)buf) = sizeof(buf);
SendDlgItemMessage(g_sdata.hwnd, IDC_LOGWIN, EM_GETLINE, (WPARAM)i, (LPARAM)buf);
if(found) {
DWORD len = lstrlen(TOTAL_SIZE_COMPRESSOR_STAT);
lstrcat(g_sdata.compressor_stats,buf);
if(!lstrcmpn(buf,TOTAL_SIZE_COMPRESSOR_STAT,len)) {
break;
}
}
else {
DWORD len = lstrlen(EXE_HEADER_COMPRESSOR_STAT);
if(!lstrcmpn(buf,EXE_HEADER_COMPRESSOR_STAT,len)) {
found = true;
lstrcpy(g_sdata.compressor_stats,"\n\n");
lstrcat(g_sdata.compressor_stats,buf);
}
}
}
}
void CompileNSISScript() { void CompileNSISScript() {
static char *s; static char *s;
DragAcceptFiles(g_sdata.hwnd,FALSE); DragAcceptFiles(g_sdata.hwnd,FALSE);
if(((g_sdata.compressor == COMPRESSOR_BEST) &&
(!lstrcmpi(g_sdata.compressor_name,BZIP2_COMPRESSOR_NAME)))) {
SetCompressorStats();
}
ClearLog(g_sdata.hwnd); ClearLog(g_sdata.hwnd);
SetTitle(g_sdata.hwnd,NULL); SetTitle(g_sdata.hwnd,NULL);
if (lstrlen(g_sdata.script)==0) { if (lstrlen(g_sdata.script)==0) {
@ -155,8 +189,17 @@ void CompileNSISScript() {
if (!g_sdata.appended) { if (!g_sdata.appended) {
if (s) GlobalFree(s); if (s) GlobalFree(s);
char *defines = BuildDefines(); 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); char compressor[40];
if(lstrlen(g_sdata.compressor_name)) {
wsprintf(compressor,"/X\"SetCompressor /FINAL %s\" ",g_sdata.compressor_name);
}
else {
lstrcpy(compressor,"");
}
s = (char *)GlobalAlloc(GPTR, lstrlen(g_sdata.script)+lstrlen(defines)+lstrlen(compressor)+sizeof(EXENAME)+sizeof(" /NOTIFYHWND ")+20);
wsprintf(s,"%s %s%s /NOTIFYHWND %d %s",EXENAME,compressor,defines,g_sdata.hwnd,g_sdata.script);
GlobalFree(defines); GlobalFree(defines);
if (g_sdata.script_alloced) GlobalFree(g_sdata.script); if (g_sdata.script_alloced) GlobalFree(g_sdata.script);
g_sdata.script_alloced = true; g_sdata.script_alloced = true;
@ -259,6 +302,7 @@ void ResetObjects() {
g_sdata.warnings = FALSE; g_sdata.warnings = FALSE;
g_sdata.retcode = -1; g_sdata.retcode = -1;
g_sdata.thread = NULL; g_sdata.thread = NULL;
lstrcpy(g_sdata.compressor_stats,"");
} }
void ResetDefines() { void ResetDefines() {
@ -619,3 +663,44 @@ void ClearMRUList()
BuildMRUMenus(); BuildMRUMenus();
} }
void RestoreCompressor()
{
HKEY hKey;
NCOMPRESSOR v = COMPRESSOR_DEFAULT;
if (RegOpenKeyEx(REGSEC,REGKEY,0,KEY_READ,&hKey) == ERROR_SUCCESS) {
DWORD l = sizeof(g_sdata.compressor);
DWORD t;
if ((RegQueryValueEx(hKey,REGCOMPRESSOR,NULL,&t,(unsigned char*)&v,&l)==ERROR_SUCCESS) &&
(t == REG_DWORD) &&
(l==sizeof(v))) {
}
RegCloseKey(hKey);
}
SetCompressor(v);
}
void SaveCompressor()
{
HKEY hKey;
NCOMPRESSOR v = g_sdata.compressor;
if (RegCreateKey(REGSEC,REGKEY,&hKey) == ERROR_SUCCESS) {
RegSetValueEx(hKey,REGCOMPRESSOR,0,REG_DWORD,(unsigned char*)&v,sizeof(v));
RegCloseKey(hKey);
}
}
BOOL FileExists(char *fname)
{
WIN32_FIND_DATA wfd;
HANDLE h;
h = FindFirstFile(fname,&wfd);
if(h == INVALID_HANDLE_VALUE) {
return false;
}
else {
FindClose(h);
return true;
}
}

View file

@ -46,10 +46,14 @@ void InitTooltips(HWND h);
void DestroyTooltips(); void DestroyTooltips();
void AddTip(HWND hWnd,LPSTR lpszToolTip); void AddTip(HWND hWnd,LPSTR lpszToolTip);
void ShowDocs(); void ShowDocs();
void RestoreCompressor();
void SaveCompressor();
BOOL PopMRUFile(char* fname); BOOL PopMRUFile(char* fname);
void PushMRUFile(char* fname); void PushMRUFile(char* fname);
void BuildMRUMenus(); void BuildMRUMenus();
void LoadMRUFile(int position); void LoadMRUFile(int position);
void ClearMRUList(); void ClearMRUList();
BOOL FileExists(char *fname);
#endif #endif