2002-08-02 10:01:35 +00:00
/*
Copyright ( c ) 2002 Robert Rainwater
2003-05-28 04:51:20 +00:00
Contributors : Justin Frankel , Fritz Elfert , Amir Szekely , and Sunil Kamath
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
# 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"
2003-05-28 04:51:20 +00:00
# define NSIS_UPDATE "\\Bin\\NSISUpdate.exe"
2003-05-08 16:41:07 +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 NSI\""
# define COPYRIGHT "Copyright <20> 2002 Robert Rainwater"
2003-05-28 04:51:20 +00:00
# define CONTRIB "Fritz Elfert, Justin Frankel, Amir Szekely, Sunil Kamath"
2003-05-08 16:41:07 +00:00
# define DOCPATH "http: //nsis.sourceforge.net/Docs/"
# define LOCALDOCS "\\docs\\index.html"
# 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."
# define DEFINESERROR "Symbol cannot contain whitespace characters"
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-05-28 04:51:20 +00:00
# define REGDEFSUBKEY "Defines"
# define REGDEFCOUNT "MakeNSISWDefinesCount"
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
# define TOOLS_MENU_INDEX 2
2002-08-02 10:01:35 +00:00
# define WM_MAKENSIS_PROCESSCOMPLETE (WM_USER+1001)
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
# ifdef COMPRESSOR_OPTION
typedef enum {
COMPRESSOR_DEFAULT ,
COMPRESSOR_ZLIB ,
COMPRESSOR_GZIP
} NCOMPRESSOR ;
# endif
2002-08-02 10:01:35 +00:00
// Extern Variables
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 ) ;
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 ) ;
BOOL CALLBACK DefinesProc ( HWND hwndDlg , UINT msg , WPARAM wParam , LPARAM lParam ) ;
void CompileNSISScript ( ) ;
char * BuildDefines ( ) ;
2003-05-28 04:51:20 +00:00
# ifdef COMPRESSOR_OPTION
BOOL SetCompressor ( WORD ) ;
# endif
void RestoreDefines ( ) ;
void SaveDefines ( ) ;
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 ;
char * * defines ;
int retcode ;
DWORD logLength ;
DWORD warnings ;
BOOL appended ;
HINSTANCE hInstance ;
HWND hwnd ;
HMENU menu ;
2003-08-22 22:01:39 +00:00
UINT fileMenuId ;
UINT toolsMenuId ;
2003-05-08 16:41:07 +00:00
HMENU submenu ;
HANDLE thread ;
HWND focused_hwnd ;
CHARRANGE textrange ;
2003-05-28 04:51:20 +00:00
# ifdef COMPRESSOR_OPTION
NCOMPRESSOR compressor ;
# endif
2002-10-09 20:41:37 +00:00
} NSCRIPTDATA ;
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