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 .
2010-03-24 17:22:56 +00:00
Unicode support by Jim Park - - 08 / 10 / 2007
2002-08-02 10:01:35 +00:00
*/
# 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>
2010-03-24 17:22:56 +00:00
# include "../ExDLL/nsis_tchar.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/"
2010-03-24 17:22:56 +00:00
# define USAGE _T("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\"")
# define COPYRIGHT _T("Copyright <20> 2002 Robert Rainwater")
# define CONTRIB _T("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/"
2010-03-24 17:22:56 +00:00
# define LOCALDOCS _T("\\NSIS.chm")
# define NSISERROR _T("Unable to intialize MakeNSIS. Please verify that makensis.exe is in the same directory as makensisw.exe.")
# define DLGERROR _T("Unable to intialize MakeNSISW.")
# define SYMBOLSERROR _T("Symbol cannot contain whitespace characters")
# define MULTIDROPERROR _T("Dropping more than one script at a time is not supported")
# define NSISUPDATEPROMPT _T("Running NSIS Update will close MakeNSISW.\nContinue?")
2007-01-24 12:51:26 +00:00
# define REGSEC HKEY_CURRENT_USER
# define REGSECDEF HKEY_LOCAL_MACHINE
2010-03-24 17:22:56 +00:00
# define REGKEY _T("Software\\NSIS")
# define REGLOC _T("MakeNSISWPlacement")
# define REGCOMPRESSOR _T("MakeNSISWCompressor")
# define REGSYMSUBKEY _T("Symbols")
# define REGMRUSUBKEY _T("MRU")
# define EXENAME _T("makensis.exe")
2003-05-08 16:41:07 +00:00
# define MAX_STRING 256
# define TIMEOUT 100
# define MINWIDTH 350
# define MINHEIGHT 180
2010-03-24 17:22:56 +00:00
# define COMPRESSOR_MESSAGE _T("\n\nThe %s compressor created the smallest installer (%d bytes).")
# define RESTORED_COMPRESSOR_MESSAGE _T("\n\nThe %s compressor created the smallest installer (%d bytes).")
# define EXE_HEADER_COMPRESSOR_STAT _T("EXE header size:")
# define TOTAL_SIZE_COMPRESSOR_STAT _T("Total size:")
2003-12-30 19:43:15 +00:00
# define SYMBOL_SET_NAME_MAXLEN 40
2010-03-24 17:22:56 +00:00
# define LOAD_SYMBOL_SET_DLG_NAME _T("Load Symbol Definitions Set")
# define SAVE_SYMBOL_SET_DLG_NAME _T("Save Symbol Definitions Set")
# define LOAD_BUTTON_TEXT _T("Load")
# define SAVE_BUTTON_TEXT _T("Save")
# define LOAD_SYMBOL_SET_MESSAGE _T("Please select a name for the Symbol Definitions Set to load.")
# define SAVE_SYMBOL_SET_MESSAGE _T("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 {
2007-04-10 19:48:54 +00:00
COMPRESSOR_NONE_SELECTED = - 1 ,
COMPRESSOR_SCRIPT = 0 ,
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
2010-03-24 17:22:56 +00:00
TCHAR * compressor_names [ ] = { _T ( " " ) ,
_T ( " zlib " ) ,
_T ( " /SOLID zlib " ) ,
_T ( " bzip2 " ) ,
_T ( " /SOLID bzip2 " ) ,
_T ( " lzma " ) ,
_T ( " /SOLID lzma " ) ,
_T ( " Best " ) } ;
TCHAR * compressor_display_names [ ] = { _T ( " Defined in Script/Compiler Default " ) ,
_T ( " ZLIB " ) ,
_T ( " ZLIB (solid) " ) ,
_T ( " BZIP2 " ) ,
_T ( " BZIP2 (solid) " ) ,
_T ( " LZMA " ) ,
_T ( " LZMA (solid) " ) ,
_T ( " Best Compressor " ) } ;
2006-04-07 18:49:03 +00:00
WORD compressor_commands [ ] = { IDM_COMPRESSOR_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
2010-03-24 17:22:56 +00:00
extern const TCHAR * NSISW_VERSION ;
2002-08-02 10:01:35 +00:00
2010-03-24 17:22:56 +00:00
int WINAPI _tWinMain ( HINSTANCE hInst , HINSTANCE hPrevInst , TCHAR * cmdParam , int cmdShow ) ;
2007-04-17 20:05:56 +00:00
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 ) ;
2010-03-24 17:22:56 +00:00
void SetScript ( const TCHAR * script , bool clearArgs = true ) ;
2003-05-08 16:41:07 +00:00
void CompileNSISScript ( ) ;
2010-03-24 17:22:56 +00:00
TCHAR * BuildSymbols ( ) ;
2003-11-19 04:38:14 +00:00
void SetCompressor ( NCOMPRESSOR ) ;
2003-12-30 19:43:15 +00:00
void RestoreSymbols ( ) ;
void SaveSymbols ( ) ;
2010-03-24 17:22:56 +00:00
void DeleteSymbolSet ( TCHAR * ) ;
TCHAR * * LoadSymbolSet ( TCHAR * ) ;
void SaveSymbolSet ( TCHAR * , TCHAR * * ) ;
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 {
2010-03-24 17:22:56 +00:00
TCHAR * script ;
2007-04-18 18:19:02 +00:00
HGLOBAL script_cmd_args ;
2010-03-24 17:22:56 +00:00
TCHAR * compile_command ;
TCHAR * output_exe ;
TCHAR * input_script ;
TCHAR * branding ;
TCHAR * brandingv ;
TCHAR * * symbols ;
2003-05-08 16:41:07 +00:00
int retcode ;
2007-04-10 20:31:20 +00:00
BOOL userSelectCompressor ;
2003-05-08 16:41:07 +00:00
DWORD logLength ;
DWORD warnings ;
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 ;
2010-03-24 17:22:56 +00:00
TCHAR * compressor_name ;
TCHAR compressor_stats [ 512 ] ;
TCHAR * 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 ;
2007-03-11 15:58:46 +00:00
# endif