2003-11-19 04:38:14 +00:00
/*
2002-08-02 10:01:35 +00:00
Copyright ( c ) 2002 Robert Rainwater
2004-01-01 17:39:21 +00:00
Contributors : Justin Frankel , Fritz Elfert , Amir Szekely , Sunil Kamath , Joost Verburg
2002-08-02 10:01:35 +00:00
This software is provided ' as - is ' , without any express or implied
warranty . In no event will the authors be held liable for any damages
arising from the use of this software .
Permission is granted to anyone to use this software for any purpose ,
including commercial applications , and to alter it and redistribute it
freely , subject to the following restrictions :
1. The origin of this software must not be misrepresented ; you must not
claim that you wrote the original software . If you use this software
in a product , an acknowledgment in the product documentation would be
appreciated but is not required .
2. Altered source versions must be plainly marked as such , and must not be
misrepresented as being the original software .
3. This notice may not be removed or altered from any source distribution .
*/
# ifndef MAKENSIS_H
# define MAKENSIS_H
2005-05-12 16:49:50 +00:00
# define _WIN32_IE 0x0400
# include <windows.h>
2002-08-02 10:01:35 +00:00
# include <commctrl.h>
2002-09-19 22:38:46 +00:00
# include "utils.h"
2002-08-02 10:01:35 +00:00
# define _RICHEDIT_VER 0x0200
2002-11-15 19:17:15 +00:00
# include <richedit.h>
2002-08-02 10:01:35 +00:00
# undef _RICHEDIT_VER
// Defines
2003-08-12 14:37:29 +00:00
# define NSIS_URL "http: //nsis.sourceforge.net/"
2003-05-08 16:41:07 +00:00
# define NSIS_FOR "http: //forums.winamp.com/forumdisplay.php?forumid=65"
2005-06-19 10:56:42 +00:00
# define NSIS_UPDATE "http: //nsis.sourceforge.net/update.php?version="
# define NSIS_DL_URL "http: //nsis.sourceforge.net/download/"
2004-01-04 22:56:20 +00:00
# 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 NSIS Script\""
2003-05-08 16:41:07 +00:00
# define COPYRIGHT "Copyright <20> 2002 Robert Rainwater"
2004-01-01 17:39:21 +00:00
# define CONTRIB "Fritz Elfert, Justin Frankel, Amir Szekely, Sunil Kamath, Joost Verburg"
2003-05-08 16:41:07 +00:00
# define DOCPATH "http: //nsis.sourceforge.net/Docs/"
2003-11-11 23:54:22 +00:00
# define LOCALDOCS "\\NSIS.chm"
2003-05-08 16:41:07 +00:00
# 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."
2003-12-30 19:43:15 +00:00
# define SYMBOLSERROR "Symbol cannot contain whitespace characters"
2005-11-12 17:23:01 +00:00
# define MULTIDROPERROR "Dropping more than one script at a time is not supported"
2003-05-28 04:51:20 +00:00
# define NSISUPDATEPROMPT "Running NSIS Update will close MakeNSISW.\nContinue?"
2003-05-08 16:41:07 +00:00
# define REGSEC HKEY_LOCAL_MACHINE
# define REGKEY "Software\\NSIS"
# define REGLOC "MakeNSISWPlacement"
2003-11-20 17:48:20 +00:00
# define REGCOMPRESSOR "MakeNSISWCompressor"
2003-12-30 19:43:15 +00:00
# define REGSYMSUBKEY "Symbols"
2003-08-12 17:57:14 +00:00
# define REGMRUSUBKEY "MRU"
2003-05-08 16:41:07 +00:00
# define EXENAME "makensis.exe"
# define MAX_STRING 256
# define TIMEOUT 100
# define MINWIDTH 350
# define MINHEIGHT 180
2003-08-22 22:01:39 +00:00
# define FILE_MENU_INDEX 0
2003-08-23 04:34:31 +00:00
# define EDIT_MENU_INDEX 1
2004-01-01 17:39:21 +00:00
# define SCRIPT_MENU_INDEX 2
2003-11-19 04:38:14 +00:00
# define COMPRESSOR_MENU_INDEX 4
2004-01-01 17:39:21 +00:00
# define TOOLS_MENU_INDEX 3
# define COMPRESSOR_MESSAGE "\n\nThe %s compressor created the smallest installer (%d bytes)."
# define RESTORED_COMPRESSOR_MESSAGE "\n\nThe %s compressor created the smallest installer (%d bytes)."
2003-11-19 04:38:14 +00:00
# define EXE_HEADER_COMPRESSOR_STAT "EXE header size:"
# define TOTAL_SIZE_COMPRESSOR_STAT "Total size:"
2003-12-30 19:43:15 +00:00
# define SYMBOL_SET_NAME_MAXLEN 40
# define LOAD_SYMBOL_SET_DLG_NAME "Load Symbol Definitions Set"
# define SAVE_SYMBOL_SET_DLG_NAME "Save Symbol Definitions Set"
2003-12-31 03:09:02 +00:00
# define LOAD_BUTTON_TEXT "Load"
# define SAVE_BUTTON_TEXT "Save"
2003-12-30 19:43:15 +00:00
# define LOAD_SYMBOL_SET_MESSAGE "Please select a name for the Symbol Definitions Set to load."
2003-12-31 03:09:02 +00:00
# define SAVE_SYMBOL_SET_MESSAGE "Please enter or select a name for the Symbol Definitions Set to save."
2002-08-02 10:01:35 +00:00
# define WM_MAKENSIS_PROCESSCOMPLETE (WM_USER+1001)
2003-12-30 19:43:15 +00:00
# define WM_MAKENSIS_LOADSYMBOLSET (WM_USER+1002)
# define WM_MAKENSIS_SAVESYMBOLSET (WM_USER+1003)
2002-08-02 10:01:35 +00:00
2002-12-24 20:35:26 +00:00
enum {
MAKENSIS_NOTIFY_SCRIPT ,
MAKENSIS_NOTIFY_WARNING ,
MAKENSIS_NOTIFY_ERROR ,
MAKENSIS_NOTIFY_OUTPUT
} ;
2003-05-28 04:51:20 +00:00
typedef enum {
2003-11-25 21:06:37 +00:00
COMPRESSOR_SCRIPT ,
2003-05-28 04:51:20 +00:00
COMPRESSOR_ZLIB ,
2005-04-23 20:26:11 +00:00
COMPRESSOR_ZLIB_SOLID ,
2003-11-19 04:38:14 +00:00
COMPRESSOR_BZIP2 ,
2005-04-23 20:26:11 +00:00
COMPRESSOR_BZIP2_SOLID ,
2003-11-24 16:51:39 +00:00
COMPRESSOR_LZMA ,
2005-04-23 20:26:11 +00:00
COMPRESSOR_LZMA_SOLID ,
2003-11-20 17:48:20 +00:00
COMPRESSOR_BEST ,
2003-05-28 04:51:20 +00:00
} NCOMPRESSOR ;
2003-11-19 04:38:14 +00:00
2003-11-24 16:51:39 +00:00
# ifdef MAKENSISW_CPP
char * compressor_names [ ] = { " " ,
" zlib " ,
2005-04-23 20:26:11 +00:00
" /SOLID zlib " ,
2003-11-24 16:51:39 +00:00
" bzip2 " ,
2005-04-23 20:26:11 +00:00
" /SOLID bzip2 " ,
2003-11-24 16:51:39 +00:00
" lzma " ,
2005-04-23 20:26:11 +00:00
" /SOLID lzma " ,
2003-11-24 16:51:39 +00:00
" Best " } ;
2003-11-28 05:16:05 +00:00
char * compressor_display_names [ ] = { " Defined in Script/Compiler Default " ,
2003-11-25 21:06:37 +00:00
" ZLIB " ,
2005-04-23 20:26:11 +00:00
" ZLIB (solid) " ,
2003-11-25 21:06:37 +00:00
" BZIP2 " ,
2005-04-23 20:26:11 +00:00
" BZIP2 (solid) " ,
2004-01-01 17:39:21 +00:00
" LZMA " ,
2005-04-23 20:26:11 +00:00
" LZMA (solid) " ,
2003-11-25 21:06:37 +00:00
" Best Compressor " } ;
WORD compressor_commands [ ] = { IDM_SCRIPT ,
2003-11-24 16:51:39 +00:00
IDM_ZLIB ,
2005-04-23 20:26:11 +00:00
IDM_ZLIB_SOLID ,
2003-11-24 16:51:39 +00:00
IDM_BZIP2 ,
2005-04-23 20:26:11 +00:00
IDM_BZIP2_SOLID ,
2003-11-24 16:51:39 +00:00
IDM_LZMA ,
2005-04-23 20:26:11 +00:00
IDM_LZMA_SOLID ,
2003-11-24 16:51:39 +00:00
IDM_BEST } ;
# endif
# ifdef TOOLBAR_CPP
2005-04-23 20:26:11 +00:00
int compressor_bitmaps [ ] = { IDB_COMPRESSOR_SCRIPT ,
IDB_COMPRESSOR_ZLIB ,
IDB_COMPRESSOR_ZLIB ,
IDB_COMPRESSOR_BZIP2 ,
IDB_COMPRESSOR_BZIP2 ,
IDB_COMPRESSOR_LZMA ,
IDB_COMPRESSOR_LZMA ,
2003-11-24 16:51:39 +00:00
IDB_COMPRESSOR_BEST } ;
2005-04-23 20:26:11 +00:00
int compressor_strings [ ] = { IDS_SCRIPT ,
IDS_ZLIB ,
IDS_ZLIB_SOLID ,
IDS_BZIP2 ,
IDS_BZIP2_SOLID ,
IDS_LZMA ,
IDS_LZMA_SOLID ,
2003-11-24 16:51:39 +00:00
IDS_BEST } ;
# endif
2002-08-02 10:01:35 +00:00
// Extern Variables
2004-01-01 17:39:21 +00:00
2003-05-08 16:41:07 +00:00
extern const char * NSISW_VERSION ;
2002-08-02 10:01:35 +00:00
2003-05-08 16:41:07 +00:00
int WINAPI WinMain ( HINSTANCE hInst , HINSTANCE hPrevInst , char * cmdParam , int cmdShow ) ;
2003-11-19 04:38:14 +00:00
static BOOL CALLBACK DialogProc ( HWND hwndDlg , UINT uMsg , WPARAM wParam , LPARAM lParam ) ;
2003-05-08 16:41:07 +00:00
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 ) ;
2003-11-25 21:06:37 +00:00
BOOL CALLBACK SettingsProc ( HWND hwndDlg , UINT msg , WPARAM wParam , LPARAM lParam ) ;
2003-12-30 19:43:15 +00:00
BOOL CALLBACK SymbolSetProc ( HWND hwndDlg , UINT msg , WPARAM wParam , LPARAM lParam ) ;
2003-11-25 21:06:37 +00:00
BOOL CALLBACK CompressorProc ( HWND hwndDlg , UINT msg , WPARAM wParam , LPARAM lParam ) ;
2003-05-08 16:41:07 +00:00
void CompileNSISScript ( ) ;
2003-12-30 19:43:15 +00:00
char * BuildSymbols ( ) ;
2003-11-19 04:38:14 +00:00
void SetCompressor ( NCOMPRESSOR ) ;
2003-12-30 19:43:15 +00:00
void RestoreSymbols ( ) ;
void SaveSymbols ( ) ;
void DeleteSymbolSet ( char * ) ;
char * * LoadSymbolSet ( char * ) ;
void SaveSymbolSet ( char * , char * * ) ;
2003-08-12 17:57:14 +00:00
void RestoreMRUList ( ) ;
void SaveMRUList ( ) ;
2002-08-02 10:01:35 +00:00
2002-10-09 20:41:37 +00:00
typedef struct NSISScriptData {
2003-05-08 16:41:07 +00:00
bool script_alloced ;
char * script ;
char * output_exe ;
char * input_script ;
char * branding ;
char * brandingv ;
2003-12-30 19:43:15 +00:00
char * * symbols ;
2003-05-08 16:41:07 +00:00
int retcode ;
DWORD logLength ;
DWORD warnings ;
BOOL appended ;
HINSTANCE hInstance ;
HWND hwnd ;
HMENU menu ;
2003-08-23 04:34:31 +00:00
HMENU fileSubmenu ;
HMENU editSubmenu ;
HMENU toolsSubmenu ;
2003-05-08 16:41:07 +00:00
HANDLE thread ;
2006-03-06 15:15:49 +00:00
HANDLE sigint_event ;
2003-05-08 16:41:07 +00:00
HWND focused_hwnd ;
CHARRANGE textrange ;
2003-11-25 21:06:37 +00:00
NCOMPRESSOR default_compressor ;
2003-05-28 04:51:20 +00:00
NCOMPRESSOR compressor ;
2003-11-19 04:38:14 +00:00
char * compressor_name ;
char compressor_stats [ 512 ] ;
2003-11-24 16:51:39 +00:00
char * best_compressor_name ;
2003-11-11 13:43:59 +00:00
// Added by Darren Owen (DrO) on 1/10/2003
int recompile_test ;
2002-10-09 20:41:37 +00:00
} NSCRIPTDATA ;
2005-06-19 10:56:42 +00:00
extern NSCRIPTDATA g_sdata ;
2002-10-09 20:41:37 +00:00
typedef struct ResizeData {
2003-05-08 16:41:07 +00:00
RECT resizeRect ;
RECT griprect ;
int dx ;
int dy ;
2002-10-09 20:41:37 +00:00
} NRESIZEDATA ;
typedef struct FindReplaceDialog {
2003-05-08 16:41:07 +00:00
FINDREPLACE fr ;
UINT uFindReplaceMsg ;
HWND hwndFind ;
2002-10-09 20:41:37 +00:00
} NFINDREPLACE ;
typedef struct ToolTipStruct {
2003-05-08 16:41:07 +00:00
HWND tip ;
HWND tip_p ;
HHOOK hook ;
2002-10-09 20:41:37 +00:00
} NTOOLTIP ;
2002-08-02 10:01:35 +00:00
# endif