/NOCD instead of /CD
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@1704 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
1f9aee2b38
commit
be7192efb7
6 changed files with 449 additions and 443 deletions
|
@ -30,489 +30,492 @@ NFINDREPLACE g_find;
|
||||||
static JNL_AsyncDNS *g_dns = NULL;
|
static JNL_AsyncDNS *g_dns = NULL;
|
||||||
|
|
||||||
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, char *cmdParam, int cmdShow) {
|
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, char *cmdParam, int cmdShow) {
|
||||||
MSG msg;
|
MSG msg;
|
||||||
int status;
|
int status;
|
||||||
HACCEL haccel;
|
HACCEL haccel;
|
||||||
my_memset(&g_sdata,0,sizeof(NSCRIPTDATA));
|
my_memset(&g_sdata,0,sizeof(NSCRIPTDATA));
|
||||||
my_memset(&g_resize,0,sizeof(NRESIZEDATA));
|
my_memset(&g_resize,0,sizeof(NRESIZEDATA));
|
||||||
my_memset(&g_find,0,sizeof(NFINDREPLACE));
|
my_memset(&g_find,0,sizeof(NFINDREPLACE));
|
||||||
g_sdata.hInstance=GetModuleHandle(0);
|
g_sdata.hInstance=GetModuleHandle(0);
|
||||||
g_sdata.script=GetCommandLine();
|
g_sdata.script_alloced=false;
|
||||||
|
g_sdata.script=GetCommandLine();
|
||||||
JNL::open_socketlib();
|
JNL::open_socketlib();
|
||||||
if (*g_sdata.script=='"') { g_sdata.script++; while (*g_sdata.script && *g_sdata.script++!='"' ); }
|
if (*g_sdata.script=='"') { g_sdata.script++; while (*g_sdata.script && *g_sdata.script++!='"' ); }
|
||||||
else while (*g_sdata.script!=' ' && *g_sdata.script) g_sdata.script++;
|
else while (*g_sdata.script!=' ' && *g_sdata.script) g_sdata.script++;
|
||||||
while (*g_sdata.script==' ') g_sdata.script++;
|
while (*g_sdata.script==' ') g_sdata.script++;
|
||||||
if (!InitBranding()) {
|
if (!InitBranding()) {
|
||||||
MessageBox(0,NSISERROR,"Error",MB_ICONEXCLAMATION|MB_OK);
|
MessageBox(0,NSISERROR,"Error",MB_ICONEXCLAMATION|MB_OK);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
ResetObjects();
|
ResetObjects();
|
||||||
HWND hDialog = CreateDialog(g_sdata.hInstance,MAKEINTRESOURCE(DLG_MAIN),0,DialogProc);
|
HWND hDialog = CreateDialog(g_sdata.hInstance,MAKEINTRESOURCE(DLG_MAIN),0,DialogProc);
|
||||||
if (!hDialog) {
|
if (!hDialog) {
|
||||||
MessageBox(0,DLGERROR,"Error",MB_ICONEXCLAMATION|MB_OK);
|
MessageBox(0,DLGERROR,"Error",MB_ICONEXCLAMATION|MB_OK);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
haccel = LoadAccelerators(g_sdata.hInstance, MAKEINTRESOURCE(IDK_ACCEL));
|
haccel = LoadAccelerators(g_sdata.hInstance, MAKEINTRESOURCE(IDK_ACCEL));
|
||||||
while ((status=GetMessage(&msg,0,0,0))!=0) {
|
while ((status=GetMessage(&msg,0,0,0))!=0) {
|
||||||
if (status==-1) return -1;
|
if (status==-1) return -1;
|
||||||
if (!IsDialogMessage(g_find.hwndFind, &msg)) {
|
if (!IsDialogMessage(g_find.hwndFind, &msg)) {
|
||||||
if (!TranslateAccelerator(hDialog,haccel,&msg)) {
|
if (!TranslateAccelerator(hDialog,haccel,&msg)) {
|
||||||
if (!IsDialogMessage(hDialog,&msg)) {
|
if (!IsDialogMessage(hDialog,&msg)) {
|
||||||
TranslateMessage(&msg);
|
TranslateMessage(&msg);
|
||||||
DispatchMessage(&msg);
|
DispatchMessage(&msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
JNL::close_socketlib();
|
JNL::close_socketlib();
|
||||||
ExitProcess(msg.wParam);
|
if (g_sdata.script_alloced) GlobalFree(g_sdata.script);
|
||||||
return msg.wParam;
|
ExitProcess(msg.wParam);
|
||||||
|
return msg.wParam;
|
||||||
}
|
}
|
||||||
|
|
||||||
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");
|
||||||
switch (msg) {
|
switch (msg) {
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
{
|
{
|
||||||
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);
|
||||||
SendMessage(GetDlgItem(hwndDlg,IDC_LOGWIN),EM_SETEVENTMASK,NULL,ENM_SELCHANGE);
|
SendMessage(GetDlgItem(hwndDlg,IDC_LOGWIN),EM_SETEVENTMASK,NULL,ENM_SELCHANGE);
|
||||||
DragAcceptFiles(g_sdata.hwnd,FALSE);
|
DragAcceptFiles(g_sdata.hwnd,FALSE);
|
||||||
InitTooltips(g_sdata.hwnd);
|
InitTooltips(g_sdata.hwnd);
|
||||||
g_sdata.menu = GetMenu(g_sdata.hwnd);
|
g_sdata.menu = GetMenu(g_sdata.hwnd);
|
||||||
g_sdata.submenu = GetSubMenu(g_sdata.menu,1);
|
g_sdata.submenu = GetSubMenu(g_sdata.menu,1);
|
||||||
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);
|
||||||
CompileNSISScript();
|
CompileNSISScript();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case WM_PAINT:
|
case WM_PAINT:
|
||||||
{
|
{
|
||||||
PAINTSTRUCT ps;
|
PAINTSTRUCT ps;
|
||||||
GetClientRect(g_sdata.hwnd, &g_resize.griprect);
|
GetClientRect(g_sdata.hwnd, &g_resize.griprect);
|
||||||
HDC hdc = BeginPaint(g_sdata.hwnd, &ps);
|
HDC hdc = BeginPaint(g_sdata.hwnd, &ps);
|
||||||
g_resize.griprect.left = g_resize.griprect.right - GetSystemMetrics(SM_CXVSCROLL);
|
g_resize.griprect.left = g_resize.griprect.right - GetSystemMetrics(SM_CXVSCROLL);
|
||||||
g_resize.griprect.top = g_resize.griprect.bottom - GetSystemMetrics(SM_CYVSCROLL);
|
g_resize.griprect.top = g_resize.griprect.bottom - GetSystemMetrics(SM_CYVSCROLL);
|
||||||
DrawFrameControl(hdc, &g_resize.griprect, DFC_SCROLL, DFCS_SCROLLSIZEGRIP);
|
DrawFrameControl(hdc, &g_resize.griprect, DFC_SCROLL, DFCS_SCROLLSIZEGRIP);
|
||||||
EndPaint(g_sdata.hwnd,&ps);
|
EndPaint(g_sdata.hwnd,&ps);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case WM_DESTROY:
|
case WM_DESTROY:
|
||||||
{
|
{
|
||||||
SaveWindowPos(g_sdata.hwnd);
|
SaveWindowPos(g_sdata.hwnd);
|
||||||
DestroyTooltips();
|
DestroyTooltips();
|
||||||
PostQuitMessage(0);
|
PostQuitMessage(0);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case WM_CLOSE:
|
case WM_CLOSE:
|
||||||
{
|
{
|
||||||
if (!g_sdata.thread) {
|
if (!g_sdata.thread) {
|
||||||
DragAcceptFiles(g_sdata.hwnd,FALSE);
|
DragAcceptFiles(g_sdata.hwnd,FALSE);
|
||||||
DestroyWindow(hwndDlg);
|
DestroyWindow(hwndDlg);
|
||||||
FreeLibrary(hRichEditDLL);
|
FreeLibrary(hRichEditDLL);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case WM_CONTEXTMENU:
|
case WM_CONTEXTMENU:
|
||||||
{
|
{
|
||||||
if ((HWND)wParam==GetDlgItem(g_sdata.hwnd,IDC_LOGWIN)) {
|
if ((HWND)wParam==GetDlgItem(g_sdata.hwnd,IDC_LOGWIN)) {
|
||||||
TrackPopupMenu(g_sdata.submenu,NULL,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),0,g_sdata.hwnd,0);
|
TrackPopupMenu(g_sdata.submenu,NULL,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),0,g_sdata.hwnd,0);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case WM_DROPFILES: {
|
case WM_DROPFILES: {
|
||||||
int num;
|
int num;
|
||||||
char szTmp[MAX_PATH];
|
char szTmp[MAX_PATH];
|
||||||
num = DragQueryFile((HDROP)wParam,-1,NULL,0);
|
num = DragQueryFile((HDROP)wParam,-1,NULL,0);
|
||||||
if (num==1) {
|
if (num==1) {
|
||||||
DragQueryFile((HDROP)wParam,0,szTmp,MAX_PATH);
|
DragQueryFile((HDROP)wParam,0,szTmp,MAX_PATH);
|
||||||
if (lstrlen(szTmp)>0) {
|
if (lstrlen(szTmp)>0) {
|
||||||
g_sdata.script = (char *)GlobalAlloc(GPTR,sizeof(szTmp)+7);
|
g_sdata.script_alloced = true;
|
||||||
wsprintf(g_sdata.script,"/CD \"%s\"",szTmp);
|
g_sdata.script = (char *)GlobalAlloc(GPTR,sizeof(szTmp)+7);
|
||||||
ResetObjects();
|
wsprintf(g_sdata.script,"\"%s\"",szTmp);
|
||||||
CompileNSISScript();
|
ResetObjects();
|
||||||
}
|
CompileNSISScript();
|
||||||
}
|
}
|
||||||
break;
|
}
|
||||||
}
|
break;
|
||||||
case WM_GETMINMAXINFO:
|
}
|
||||||
{
|
case WM_GETMINMAXINFO:
|
||||||
((MINMAXINFO*)lParam)->ptMinTrackSize.x=MINWIDTH;
|
{
|
||||||
((MINMAXINFO*)lParam)->ptMinTrackSize.y=MINHEIGHT;
|
((MINMAXINFO*)lParam)->ptMinTrackSize.x=MINWIDTH;
|
||||||
}
|
((MINMAXINFO*)lParam)->ptMinTrackSize.y=MINHEIGHT;
|
||||||
case WM_ENTERSIZEMOVE:
|
}
|
||||||
{
|
case WM_ENTERSIZEMOVE:
|
||||||
GetClientRect(g_sdata.hwnd, &g_resize.resizeRect);
|
{
|
||||||
return TRUE;
|
GetClientRect(g_sdata.hwnd, &g_resize.resizeRect);
|
||||||
}
|
return TRUE;
|
||||||
case WM_SIZE:
|
}
|
||||||
{
|
case WM_SIZE:
|
||||||
if ((wParam == SIZE_MAXHIDE)||(wParam == SIZE_MAXSHOW)) return TRUE;
|
{
|
||||||
RECT rSize;
|
if ((wParam == SIZE_MAXHIDE)||(wParam == SIZE_MAXSHOW)) return TRUE;
|
||||||
if (hwndDlg == g_sdata.hwnd) {
|
RECT rSize;
|
||||||
GetClientRect(g_sdata.hwnd, &rSize);
|
if (hwndDlg == g_sdata.hwnd) {
|
||||||
if (((rSize.right==0)&&(rSize.bottom==0))||((g_resize.resizeRect.right==0)&&(g_resize.resizeRect.bottom==0))) return TRUE;
|
GetClientRect(g_sdata.hwnd, &rSize);
|
||||||
g_resize.dx = rSize.right - g_resize.resizeRect.right;
|
if (((rSize.right==0)&&(rSize.bottom==0))||((g_resize.resizeRect.right==0)&&(g_resize.resizeRect.bottom==0))) return TRUE;
|
||||||
g_resize.dy = rSize.bottom - g_resize.resizeRect.bottom;
|
g_resize.dx = rSize.right - g_resize.resizeRect.right;
|
||||||
EnumChildWindows(g_sdata.hwnd, DialogResize, (LPARAM)0);
|
g_resize.dy = rSize.bottom - g_resize.resizeRect.bottom;
|
||||||
g_resize.resizeRect = rSize;
|
EnumChildWindows(g_sdata.hwnd, DialogResize, (LPARAM)0);
|
||||||
}
|
g_resize.resizeRect = rSize;
|
||||||
return TRUE;
|
}
|
||||||
}
|
return TRUE;
|
||||||
case WM_SIZING:
|
}
|
||||||
{
|
case WM_SIZING:
|
||||||
InvalidateRect(g_sdata.hwnd,&g_resize.griprect,TRUE);
|
{
|
||||||
GetClientRect(g_sdata.hwnd, &g_resize.griprect);
|
InvalidateRect(g_sdata.hwnd,&g_resize.griprect,TRUE);
|
||||||
g_resize.griprect.left = g_resize.griprect.right - GetSystemMetrics(SM_CXVSCROLL);
|
GetClientRect(g_sdata.hwnd, &g_resize.griprect);
|
||||||
g_resize.griprect.top = g_resize.griprect.bottom - GetSystemMetrics(SM_CYVSCROLL);
|
g_resize.griprect.left = g_resize.griprect.right - GetSystemMetrics(SM_CXVSCROLL);
|
||||||
return TRUE;
|
g_resize.griprect.top = g_resize.griprect.bottom - GetSystemMetrics(SM_CYVSCROLL);
|
||||||
}
|
return TRUE;
|
||||||
case WM_MAKENSIS_PROCESSCOMPLETE:
|
}
|
||||||
{
|
case WM_MAKENSIS_PROCESSCOMPLETE:
|
||||||
if (g_sdata.thread) {
|
{
|
||||||
CloseHandle(g_sdata.thread);
|
if (g_sdata.thread) {
|
||||||
g_sdata.thread=0;
|
CloseHandle(g_sdata.thread);
|
||||||
}
|
g_sdata.thread=0;
|
||||||
EnableItems(g_sdata.hwnd);
|
}
|
||||||
if (g_sdata.retcode==0) {
|
EnableItems(g_sdata.hwnd);
|
||||||
MessageBeep(MB_ICONASTERISK);
|
if (g_sdata.retcode==0) {
|
||||||
if (g_sdata.warnings) SetTitle(g_sdata.hwnd,"Finished with Warnings");
|
MessageBeep(MB_ICONASTERISK);
|
||||||
else SetTitle(g_sdata.hwnd,"Finished Sucessfully");
|
if (g_sdata.warnings) SetTitle(g_sdata.hwnd,"Finished with Warnings");
|
||||||
}
|
else SetTitle(g_sdata.hwnd,"Finished Sucessfully");
|
||||||
else {
|
}
|
||||||
MessageBeep(MB_ICONEXCLAMATION);
|
else {
|
||||||
SetTitle(g_sdata.hwnd,"Compile Error: See Log for Details");
|
MessageBeep(MB_ICONEXCLAMATION);
|
||||||
}
|
SetTitle(g_sdata.hwnd,"Compile Error: See Log for Details");
|
||||||
DragAcceptFiles(g_sdata.hwnd,TRUE);
|
}
|
||||||
return TRUE;
|
DragAcceptFiles(g_sdata.hwnd,TRUE);
|
||||||
}
|
return TRUE;
|
||||||
|
}
|
||||||
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);
|
||||||
EnableMenuItem(g_sdata.menu,IDM_COPYSELECTED,(g_sdata.textrange.cpMax-g_sdata.textrange.cpMin<=0?MF_GRAYED:MF_ENABLED));
|
EnableMenuItem(g_sdata.menu,IDM_COPYSELECTED,(g_sdata.textrange.cpMax-g_sdata.textrange.cpMin<=0?MF_GRAYED:MF_ENABLED));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
{
|
{
|
||||||
switch (LOWORD(wParam)) {
|
switch (LOWORD(wParam)) {
|
||||||
case IDM_BROWSESCR: {
|
case IDM_BROWSESCR: {
|
||||||
if (g_sdata.input_script) {
|
if (g_sdata.input_script) {
|
||||||
char str[MAX_PATH],*str2;
|
char str[MAX_PATH],*str2;
|
||||||
lstrcpy(str,g_sdata.input_script);
|
lstrcpy(str,g_sdata.input_script);
|
||||||
str2=my_strrchr(str,'\\');
|
str2=my_strrchr(str,'\\');
|
||||||
if(str2!=NULL) *str2=0;
|
if(str2!=NULL) *str2=0;
|
||||||
ShellExecute(g_sdata.hwnd,"open",str,NULL,NULL,SW_SHOWNORMAL);
|
ShellExecute(g_sdata.hwnd,"open",str,NULL,NULL,SW_SHOWNORMAL);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case IDM_UPDATE:
|
case IDM_UPDATE:
|
||||||
{
|
{
|
||||||
DWORD dwThreadId;
|
DWORD dwThreadId;
|
||||||
CloseHandle(CreateThread(NULL,0,UpdateThread,(LPVOID)NULL,0,&dwThreadId));
|
CloseHandle(CreateThread(NULL,0,UpdateThread,(LPVOID)NULL,0,&dwThreadId));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case IDM_ABOUT:
|
case IDM_ABOUT:
|
||||||
{
|
{
|
||||||
DialogBox(g_sdata.hInstance,MAKEINTRESOURCE(DLG_ABOUT),g_sdata.hwnd,(DLGPROC)AboutProc);
|
DialogBox(g_sdata.hInstance,MAKEINTRESOURCE(DLG_ABOUT),g_sdata.hwnd,(DLGPROC)AboutProc);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case IDM_NSISHOME:
|
case IDM_NSISHOME:
|
||||||
{
|
{
|
||||||
ShellExecute(g_sdata.hwnd,"open",NSIS_URL,NULL,NULL,SW_SHOWNORMAL);
|
ShellExecute(g_sdata.hwnd,"open",NSIS_URL,NULL,NULL,SW_SHOWNORMAL);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case IDM_NSISDEV:
|
case IDM_NSISDEV:
|
||||||
{
|
{
|
||||||
ShellExecute(g_sdata.hwnd,"open",NSIS_DEV,NULL,NULL,SW_SHOWNORMAL);
|
ShellExecute(g_sdata.hwnd,"open",NSIS_DEV,NULL,NULL,SW_SHOWNORMAL);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case IDM_SELECTALL:
|
case IDM_SELECTALL:
|
||||||
{
|
{
|
||||||
SendDlgItemMessage(g_sdata.hwnd, IDC_LOGWIN, EM_SETSEL, 0, -1);
|
SendDlgItemMessage(g_sdata.hwnd, IDC_LOGWIN, EM_SETSEL, 0, -1);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case IDM_DOCS:
|
case IDM_DOCS:
|
||||||
{
|
{
|
||||||
ShowDocs();
|
ShowDocs();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case IDM_LOADSCRIPT:
|
case IDM_LOADSCRIPT:
|
||||||
{
|
{
|
||||||
if (!g_sdata.thread) {
|
if (!g_sdata.thread) {
|
||||||
OPENFILENAME l={sizeof(l),};
|
OPENFILENAME l={sizeof(l),};
|
||||||
char buf[MAX_STRING];
|
char buf[MAX_PATH];
|
||||||
l.hwndOwner = hwndDlg;
|
l.hwndOwner = hwndDlg;
|
||||||
l.lpstrFilter = "NSIS Script (*.nsi)\0*.nsi\0All Files (*.*)\0*.*\0";
|
l.lpstrFilter = "NSIS Script (*.nsi)\0*.nsi\0All Files (*.*)\0*.*\0";
|
||||||
l.lpstrFile = buf;
|
l.lpstrFile = buf;
|
||||||
l.nMaxFile = MAX_STRING-1;
|
l.nMaxFile = MAX_STRING-1;
|
||||||
l.lpstrTitle = "Load Script";
|
l.lpstrTitle = "Load Script";
|
||||||
l.lpstrDefExt = "log";
|
l.lpstrDefExt = "log";
|
||||||
l.lpstrFileTitle = NULL;
|
l.lpstrFileTitle = NULL;
|
||||||
l.lpstrInitialDir = NULL;
|
l.lpstrInitialDir = NULL;
|
||||||
l.Flags = OFN_HIDEREADONLY|OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST;
|
l.Flags = OFN_HIDEREADONLY|OFN_EXPLORER|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST;
|
||||||
lstrcpy(buf,"");
|
lstrcpy(buf,"");
|
||||||
if (GetOpenFileName(&l)) {
|
if (GetOpenFileName(&l)) {
|
||||||
g_sdata.script = (char *)GlobalAlloc(GPTR,sizeof(buf)+7);
|
g_sdata.script = (char *)GlobalAlloc(GPTR,lstrlen(buf)+3);
|
||||||
wsprintf(g_sdata.script,"/CD \"%s\"",buf);
|
wsprintf(g_sdata.script,"\"%s\"",buf);
|
||||||
ResetObjects();
|
ResetObjects();
|
||||||
CompileNSISScript();
|
CompileNSISScript();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case IDM_CLEARLOG:
|
case IDM_CLEARLOG:
|
||||||
{
|
{
|
||||||
if (!g_sdata.thread) {
|
if (!g_sdata.thread) {
|
||||||
ClearLog(g_sdata.hwnd);
|
ClearLog(g_sdata.hwnd);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case IDM_RECOMPILE:
|
case IDM_RECOMPILE:
|
||||||
{
|
{
|
||||||
CompileNSISScript();
|
CompileNSISScript();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case IDM_TEST:
|
case IDM_TEST:
|
||||||
case IDC_TEST:
|
case IDC_TEST:
|
||||||
{
|
{
|
||||||
if (g_sdata.output_exe) {
|
if (g_sdata.output_exe) {
|
||||||
ShellExecute(g_sdata.hwnd,"open",g_sdata.output_exe,NULL,NULL,SW_SHOWNORMAL);
|
ShellExecute(g_sdata.hwnd,"open",g_sdata.output_exe,NULL,NULL,SW_SHOWNORMAL);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case IDM_EDITSCRIPT:
|
case IDM_EDITSCRIPT:
|
||||||
{
|
{
|
||||||
if (g_sdata.input_script) {
|
if (g_sdata.input_script) {
|
||||||
if ((int)ShellExecute(g_sdata.hwnd,"open",g_sdata.input_script,NULL,NULL,SW_SHOWNORMAL)<=32) {
|
if ((int)ShellExecute(g_sdata.hwnd,"open",g_sdata.input_script,NULL,NULL,SW_SHOWNORMAL)<=32) {
|
||||||
char path[MAX_PATH];
|
char path[MAX_PATH];
|
||||||
if (GetWindowsDirectory(path,sizeof(path))) {
|
if (GetWindowsDirectory(path,sizeof(path))) {
|
||||||
lstrcat(path,"\\notepad.exe");
|
lstrcat(path,"\\notepad.exe");
|
||||||
ShellExecute(g_sdata.hwnd,"open",path,g_sdata.input_script,NULL,SW_SHOWNORMAL);
|
ShellExecute(g_sdata.hwnd,"open",path,g_sdata.input_script,NULL,SW_SHOWNORMAL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case IDC_CLOSE:
|
case IDC_CLOSE:
|
||||||
case IDM_EXIT:
|
case IDM_EXIT:
|
||||||
{
|
{
|
||||||
if (!g_sdata.thread) {
|
if (!g_sdata.thread) {
|
||||||
DestroyWindow(g_sdata.hwnd);
|
DestroyWindow(g_sdata.hwnd);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case IDM_COPY:
|
case IDM_COPY:
|
||||||
{
|
{
|
||||||
CopyToClipboard(g_sdata.hwnd);
|
CopyToClipboard(g_sdata.hwnd);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case IDM_COPYSELECTED:
|
case IDM_COPYSELECTED:
|
||||||
{
|
{
|
||||||
SendDlgItemMessage(g_sdata.hwnd,IDC_LOGWIN, WM_COPY, 0, 0);
|
SendDlgItemMessage(g_sdata.hwnd,IDC_LOGWIN, WM_COPY, 0, 0);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case IDM_SAVE:
|
case IDM_SAVE:
|
||||||
{
|
{
|
||||||
OPENFILENAME l={sizeof(l),};
|
OPENFILENAME l={sizeof(l),};
|
||||||
char buf[MAX_STRING];
|
char buf[MAX_STRING];
|
||||||
l.hwndOwner = hwndDlg;
|
l.hwndOwner = hwndDlg;
|
||||||
l.lpstrFilter = "Log Files (*.log)\0*.log\0Text Files (*.txt)\0*.txt\0All Files (*.*)\0*.*\0";
|
l.lpstrFilter = "Log Files (*.log)\0*.log\0Text Files (*.txt)\0*.txt\0All Files (*.*)\0*.*\0";
|
||||||
l.lpstrFile = buf;
|
l.lpstrFile = buf;
|
||||||
l.nMaxFile = MAX_STRING-1;
|
l.nMaxFile = MAX_STRING-1;
|
||||||
l.lpstrTitle = "Save Output";
|
l.lpstrTitle = "Save Output";
|
||||||
l.lpstrDefExt = "log";
|
l.lpstrDefExt = "log";
|
||||||
l.lpstrInitialDir = NULL;
|
l.lpstrInitialDir = NULL;
|
||||||
l.Flags = OFN_HIDEREADONLY|OFN_EXPLORER|OFN_PATHMUSTEXIST;
|
l.Flags = OFN_HIDEREADONLY|OFN_EXPLORER|OFN_PATHMUSTEXIST;
|
||||||
lstrcpy(buf,"output");
|
lstrcpy(buf,"output");
|
||||||
if (GetSaveFileName(&l)) {
|
if (GetSaveFileName(&l)) {
|
||||||
HANDLE hFile = CreateFile(buf,GENERIC_WRITE,0,0,CREATE_ALWAYS,0,0);
|
HANDLE hFile = CreateFile(buf,GENERIC_WRITE,0,0,CREATE_ALWAYS,0,0);
|
||||||
if (hFile) {
|
if (hFile) {
|
||||||
int len=SendDlgItemMessage(g_sdata.hwnd,IDC_LOGWIN,WM_GETTEXTLENGTH,0,0);
|
int len=SendDlgItemMessage(g_sdata.hwnd,IDC_LOGWIN,WM_GETTEXTLENGTH,0,0);
|
||||||
char *existing_text=(char*)GlobalAlloc(GPTR,len);
|
char *existing_text=(char*)GlobalAlloc(GPTR,len);
|
||||||
existing_text[0]=0;
|
existing_text[0]=0;
|
||||||
GetDlgItemText(g_sdata.hwnd, IDC_LOGWIN, existing_text, len);
|
GetDlgItemText(g_sdata.hwnd, IDC_LOGWIN, existing_text, len);
|
||||||
DWORD dwWritten = 0;
|
DWORD dwWritten = 0;
|
||||||
WriteFile(hFile,existing_text,len,&dwWritten,0);
|
WriteFile(hFile,existing_text,len,&dwWritten,0);
|
||||||
CloseHandle(hFile);
|
CloseHandle(hFile);
|
||||||
GlobalFree(existing_text);
|
GlobalFree(existing_text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case IDM_FIND:
|
case IDM_FIND:
|
||||||
{
|
{
|
||||||
if (!g_find.uFindReplaceMsg) g_find.uFindReplaceMsg = RegisterWindowMessage(FINDMSGSTRING);
|
if (!g_find.uFindReplaceMsg) g_find.uFindReplaceMsg = RegisterWindowMessage(FINDMSGSTRING);
|
||||||
my_memset(&g_find.fr, 0, sizeof(FINDREPLACE));
|
my_memset(&g_find.fr, 0, sizeof(FINDREPLACE));
|
||||||
g_find.fr.lStructSize = sizeof(FINDREPLACE);
|
g_find.fr.lStructSize = sizeof(FINDREPLACE);
|
||||||
g_find.fr.hwndOwner = hwndDlg;
|
g_find.fr.hwndOwner = hwndDlg;
|
||||||
g_find.fr.Flags = FR_NOUPDOWN;
|
g_find.fr.Flags = FR_NOUPDOWN;
|
||||||
g_find.fr.lpstrFindWhat = (char *)GlobalAlloc(GPTR, 128);
|
g_find.fr.lpstrFindWhat = (char *)GlobalAlloc(GPTR, 128);
|
||||||
if (!g_find.fr.lpstrFindWhat) return TRUE;
|
if (!g_find.fr.lpstrFindWhat) return TRUE;
|
||||||
g_find.fr.wFindWhatLen = 128;
|
g_find.fr.wFindWhatLen = 128;
|
||||||
g_find.hwndFind = FindText(&g_find.fr);
|
g_find.hwndFind = FindText(&g_find.fr);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (g_find.uFindReplaceMsg && msg == g_find.uFindReplaceMsg) {
|
if (g_find.uFindReplaceMsg && msg == g_find.uFindReplaceMsg) {
|
||||||
LPFINDREPLACE lpfr = (LPFINDREPLACE)lParam;
|
LPFINDREPLACE lpfr = (LPFINDREPLACE)lParam;
|
||||||
if (lpfr->Flags & FR_FINDNEXT) {
|
if (lpfr->Flags & FR_FINDNEXT) {
|
||||||
WPARAM flags = FR_DOWN;
|
WPARAM flags = FR_DOWN;
|
||||||
if (lpfr->Flags & FR_MATCHCASE) flags |= FR_MATCHCASE;
|
if (lpfr->Flags & FR_MATCHCASE) flags |= FR_MATCHCASE;
|
||||||
if (lpfr->Flags & FR_WHOLEWORD) flags |= FR_WHOLEWORD;
|
if (lpfr->Flags & FR_WHOLEWORD) flags |= FR_WHOLEWORD;
|
||||||
FINDTEXTEX ft;
|
FINDTEXTEX ft;
|
||||||
SendDlgItemMessage(hwndDlg, IDC_LOGWIN, EM_EXGETSEL, 0, (LPARAM)&ft.chrg);
|
SendDlgItemMessage(hwndDlg, IDC_LOGWIN, EM_EXGETSEL, 0, (LPARAM)&ft.chrg);
|
||||||
if (ft.chrg.cpMax == ft.chrg.cpMin) ft.chrg.cpMin = 0;
|
if (ft.chrg.cpMax == ft.chrg.cpMin) ft.chrg.cpMin = 0;
|
||||||
else ft.chrg.cpMin = ft.chrg.cpMax;
|
else ft.chrg.cpMin = ft.chrg.cpMax;
|
||||||
ft.chrg.cpMax = SendDlgItemMessage(hwndDlg, IDC_LOGWIN, WM_GETTEXTLENGTH, 0, 0);
|
ft.chrg.cpMax = SendDlgItemMessage(hwndDlg, IDC_LOGWIN, WM_GETTEXTLENGTH, 0, 0);
|
||||||
ft.lpstrText = lpfr->lpstrFindWhat;
|
ft.lpstrText = lpfr->lpstrFindWhat;
|
||||||
ft.chrg.cpMin = SendDlgItemMessage(hwndDlg, IDC_LOGWIN, EM_FINDTEXTEX, flags, (LPARAM)&ft);
|
ft.chrg.cpMin = SendDlgItemMessage(hwndDlg, IDC_LOGWIN, EM_FINDTEXTEX, flags, (LPARAM)&ft);
|
||||||
if (ft.chrg.cpMin != -1) SendDlgItemMessage(hwndDlg, IDC_LOGWIN, EM_SETSEL, ft.chrgText.cpMin, ft.chrgText.cpMax);
|
if (ft.chrg.cpMin != -1) SendDlgItemMessage(hwndDlg, IDC_LOGWIN, EM_SETSEL, ft.chrgText.cpMin, ft.chrgText.cpMax);
|
||||||
else MessageBeep(MB_ICONASTERISK);
|
else MessageBeep(MB_ICONASTERISK);
|
||||||
}
|
}
|
||||||
if (lpfr->Flags & FR_DIALOGTERM) g_find.hwndFind = 0;
|
if (lpfr->Flags & FR_DIALOGTERM) g_find.hwndFind = 0;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD WINAPI MakeNSISProc(LPVOID p) {
|
DWORD WINAPI MakeNSISProc(LPVOID p) {
|
||||||
STARTUPINFO si={sizeof(si),};
|
STARTUPINFO si={sizeof(si),};
|
||||||
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) {
|
||||||
InitializeSecurityDescriptor(&sd,SECURITY_DESCRIPTOR_REVISION);
|
InitializeSecurityDescriptor(&sd,SECURITY_DESCRIPTOR_REVISION);
|
||||||
SetSecurityDescriptorDacl(&sd,true,NULL,false);
|
SetSecurityDescriptorDacl(&sd,true,NULL,false);
|
||||||
sa.lpSecurityDescriptor = &sd;
|
sa.lpSecurityDescriptor = &sd;
|
||||||
}
|
}
|
||||||
else sa.lpSecurityDescriptor = NULL;
|
else sa.lpSecurityDescriptor = NULL;
|
||||||
sa.bInheritHandle = true;
|
sa.bInheritHandle = true;
|
||||||
if (!CreatePipe(&read_stdout,&newstdout,&sa,0)) {
|
if (!CreatePipe(&read_stdout,&newstdout,&sa,0)) {
|
||||||
ErrorMessage(g_sdata.hwnd,"There was an error creating the pipe.");
|
ErrorMessage(g_sdata.hwnd,"There was an error creating the pipe.");
|
||||||
PostMessage(g_sdata.hwnd,WM_MAKENSIS_PROCESSCOMPLETE,0,0);
|
PostMessage(g_sdata.hwnd,WM_MAKENSIS_PROCESSCOMPLETE,0,0);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
GetStartupInfo(&si);
|
GetStartupInfo(&si);
|
||||||
si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW;
|
si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW;
|
||||||
si.wShowWindow = SW_HIDE;
|
si.wShowWindow = SW_HIDE;
|
||||||
si.hStdOutput = newstdout;
|
si.hStdOutput = newstdout;
|
||||||
si.hStdError = newstdout;
|
si.hStdError = newstdout;
|
||||||
if (!CreateProcess(NULL,g_sdata.script,NULL,NULL,TRUE,CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi)) {
|
if (!CreateProcess(NULL,g_sdata.script,NULL,NULL,TRUE,CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi)) {
|
||||||
char buf[MAX_STRING];
|
char buf[MAX_STRING];
|
||||||
wsprintf(buf,"Could not execute:\r\n %s.",g_sdata.script);
|
wsprintf(buf,"Could not execute:\r\n %s.",g_sdata.script);
|
||||||
ErrorMessage(g_sdata.hwnd,buf);
|
ErrorMessage(g_sdata.hwnd,buf);
|
||||||
CloseHandle(newstdout);
|
CloseHandle(newstdout);
|
||||||
CloseHandle(read_stdout);
|
CloseHandle(read_stdout);
|
||||||
PostMessage(g_sdata.hwnd,WM_MAKENSIS_PROCESSCOMPLETE,0,0);
|
PostMessage(g_sdata.hwnd,WM_MAKENSIS_PROCESSCOMPLETE,0,0);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
char szBuf[1024];
|
char szBuf[1024];
|
||||||
DWORD dwRead = 1;
|
DWORD dwRead = 1;
|
||||||
DWORD dwExit = !STILL_ACTIVE;
|
DWORD dwExit = !STILL_ACTIVE;
|
||||||
while (dwExit == STILL_ACTIVE || dwRead) {
|
while (dwExit == STILL_ACTIVE || dwRead) {
|
||||||
PeekNamedPipe(read_stdout, 0, 0, 0, &dwRead, NULL);
|
PeekNamedPipe(read_stdout, 0, 0, 0, &dwRead, NULL);
|
||||||
if (dwRead) {
|
if (dwRead) {
|
||||||
ReadFile(read_stdout, szBuf, sizeof(szBuf)-1, &dwRead, NULL);
|
ReadFile(read_stdout, szBuf, sizeof(szBuf)-1, &dwRead, NULL);
|
||||||
szBuf[dwRead] = 0;
|
szBuf[dwRead] = 0;
|
||||||
LogMessage(g_sdata.hwnd, szBuf);
|
LogMessage(g_sdata.hwnd, szBuf);
|
||||||
}
|
}
|
||||||
else Sleep(TIMEOUT);
|
else Sleep(TIMEOUT);
|
||||||
GetExitCodeProcess(pi.hProcess, &dwExit);
|
GetExitCodeProcess(pi.hProcess, &dwExit);
|
||||||
// Make sure we have no data before killing getting out of the loop
|
// Make sure we have no data before killing getting out of the loop
|
||||||
if (dwExit != STILL_ACTIVE) {
|
if (dwExit != STILL_ACTIVE) {
|
||||||
PeekNamedPipe(read_stdout, 0, 0, 0, &dwRead, NULL);
|
PeekNamedPipe(read_stdout, 0, 0, 0, &dwRead, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
g_sdata.retcode = dwExit;
|
g_sdata.retcode = dwExit;
|
||||||
CloseHandle(pi.hThread);
|
CloseHandle(pi.hThread);
|
||||||
CloseHandle(pi.hProcess);
|
CloseHandle(pi.hProcess);
|
||||||
CloseHandle(newstdout);
|
CloseHandle(newstdout);
|
||||||
CloseHandle(read_stdout);
|
CloseHandle(read_stdout);
|
||||||
PostMessage(g_sdata.hwnd,WM_MAKENSIS_PROCESSCOMPLETE,0,0);
|
PostMessage(g_sdata.hwnd,WM_MAKENSIS_PROCESSCOMPLETE,0,0);
|
||||||
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);
|
||||||
ScreenToClient(g_sdata.hwnd, (LPPOINT)&r);
|
ScreenToClient(g_sdata.hwnd, (LPPOINT)&r);
|
||||||
ScreenToClient(g_sdata.hwnd, ((LPPOINT)&r)+1);
|
ScreenToClient(g_sdata.hwnd, ((LPPOINT)&r)+1);
|
||||||
switch (GetDlgCtrlID(hWnd)) {
|
switch (GetDlgCtrlID(hWnd)) {
|
||||||
case IDC_LOGWIN:
|
case IDC_LOGWIN:
|
||||||
SetWindowPos(hWnd, 0, r.left, r.top,r.right - r.left + g_resize.dx, r.bottom - r.top + g_resize.dy, SWP_NOZORDER|SWP_NOMOVE);
|
SetWindowPos(hWnd, 0, r.left, r.top,r.right - r.left + g_resize.dx, r.bottom - r.top + g_resize.dy, SWP_NOZORDER|SWP_NOMOVE);
|
||||||
break;
|
break;
|
||||||
case IDC_TEST:
|
case IDC_TEST:
|
||||||
case IDC_CLOSE:
|
case IDC_CLOSE:
|
||||||
SetWindowPos(hWnd, 0, r.left + g_resize.dx, r.top + g_resize.dy, 0, 0, SWP_NOZORDER|SWP_NOSIZE);
|
SetWindowPos(hWnd, 0, r.left + g_resize.dx, r.top + g_resize.dy, 0, 0, SWP_NOZORDER|SWP_NOSIZE);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
SetWindowPos(hWnd, 0, r.left, r.top + g_resize.dy, r.right - r.left + g_resize.dx, r.bottom - r.top, SWP_NOZORDER);
|
SetWindowPos(hWnd, 0, r.left, r.top + g_resize.dy, r.right - r.left + g_resize.dx, r.bottom - r.top, SWP_NOZORDER);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
RedrawWindow(hWnd,NULL,NULL,RDW_INVALIDATE);
|
RedrawWindow(hWnd,NULL,NULL,RDW_INVALIDATE);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL CALLBACK AboutProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
|
BOOL CALLBACK AboutProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
|
||||||
switch(msg) {
|
switch(msg) {
|
||||||
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);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_ABOUTCOPY, WM_SETFONT, (WPARAM)bfont, FALSE);
|
SendDlgItemMessage(hwndDlg, IDC_ABOUTCOPY, WM_SETFONT, (WPARAM)bfont, FALSE);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_ABOUTPORTIONS, WM_SETFONT, (WPARAM)bfont, FALSE);
|
SendDlgItemMessage(hwndDlg, IDC_ABOUTPORTIONS, WM_SETFONT, (WPARAM)bfont, FALSE);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_NSISVER, WM_SETFONT, (WPARAM)bfont, FALSE);
|
SendDlgItemMessage(hwndDlg, IDC_NSISVER, WM_SETFONT, (WPARAM)bfont, FALSE);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_OTHERCONTRIB, WM_SETFONT, (WPARAM)bfont, FALSE);
|
SendDlgItemMessage(hwndDlg, IDC_OTHERCONTRIB, WM_SETFONT, (WPARAM)bfont, FALSE);
|
||||||
}
|
}
|
||||||
else if (rfont&&rfontb) {
|
else if (rfont&&rfontb) {
|
||||||
SendDlgItemMessage(hwndDlg, IDC_ABOUTVERSION, WM_SETFONT, (WPARAM)rfontb, FALSE);
|
SendDlgItemMessage(hwndDlg, IDC_ABOUTVERSION, WM_SETFONT, (WPARAM)rfontb, FALSE);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_ABOUTCOPY, WM_SETFONT, (WPARAM)rfont, FALSE);
|
SendDlgItemMessage(hwndDlg, IDC_ABOUTCOPY, WM_SETFONT, (WPARAM)rfont, FALSE);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_ABOUTPORTIONS, WM_SETFONT, (WPARAM)rfont, FALSE);
|
SendDlgItemMessage(hwndDlg, IDC_ABOUTPORTIONS, WM_SETFONT, (WPARAM)rfont, FALSE);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_NSISVER, WM_SETFONT, (WPARAM)rfont, FALSE);
|
SendDlgItemMessage(hwndDlg, IDC_NSISVER, WM_SETFONT, (WPARAM)rfont, FALSE);
|
||||||
SendDlgItemMessage(hwndDlg, IDC_OTHERCONTRIB, WM_SETFONT, (WPARAM)rfont, FALSE);
|
SendDlgItemMessage(hwndDlg, IDC_OTHERCONTRIB, WM_SETFONT, (WPARAM)rfont, FALSE);
|
||||||
}
|
}
|
||||||
SetDlgItemText(hwndDlg,IDC_NSISVER,g_sdata.branding);
|
SetDlgItemText(hwndDlg,IDC_NSISVER,g_sdata.branding);
|
||||||
SetDlgItemText(hwndDlg,IDC_ABOUTVERSION,NSISW_VERSION);
|
SetDlgItemText(hwndDlg,IDC_ABOUTVERSION,NSISW_VERSION);
|
||||||
SetDlgItemText(hwndDlg,IDC_ABOUTCOPY,COPYRIGHT);
|
SetDlgItemText(hwndDlg,IDC_ABOUTCOPY,COPYRIGHT);
|
||||||
SetDlgItemText(hwndDlg,IDC_OTHERCONTRIB,CONTRIB);
|
SetDlgItemText(hwndDlg,IDC_OTHERCONTRIB,CONTRIB);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
{
|
{
|
||||||
switch (LOWORD(wParam)) {
|
switch (LOWORD(wParam)) {
|
||||||
case IDOK:
|
case IDOK:
|
||||||
EndDialog(hwndDlg, TRUE);
|
EndDialog(hwndDlg, TRUE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD CALLBACK UpdateThread(LPVOID v) {
|
DWORD CALLBACK UpdateThread(LPVOID v) {
|
||||||
|
@ -525,7 +528,7 @@ DWORD CALLBACK UpdateThread(LPVOID v) {
|
||||||
static char pbuf[8192];
|
static char pbuf[8192];
|
||||||
char *p=NULL;
|
char *p=NULL;
|
||||||
*response = 0;
|
*response = 0;
|
||||||
EnableMenuItem(g_sdata.menu,IDM_UPDATE,MF_GRAYED);
|
EnableMenuItem(g_sdata.menu,IDM_UPDATE,MF_GRAYED);
|
||||||
if (getProxyInfo(pbuf))
|
if (getProxyInfo(pbuf))
|
||||||
{
|
{
|
||||||
p=my_strstr(pbuf,"http=");
|
p=my_strstr(pbuf,"http=");
|
||||||
|
@ -592,6 +595,6 @@ DWORD CALLBACK UpdateThread(LPVOID v) {
|
||||||
else MessageBox(g_sdata.hwnd,"There is no update available for NSIS at this time.","NSIS Update",MB_OK|MB_ICONINFORMATION);
|
else MessageBox(g_sdata.hwnd,"There is no update available for NSIS at this time.","NSIS Update",MB_OK|MB_ICONINFORMATION);
|
||||||
GlobalFree(response);
|
GlobalFree(response);
|
||||||
delete get;
|
delete get;
|
||||||
EnableMenuItem(g_sdata.menu,IDM_UPDATE,MF_ENABLED);
|
EnableMenuItem(g_sdata.menu,IDM_UPDATE,MF_ENABLED);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
|
@ -70,11 +70,12 @@ void CompileNSISScript();
|
||||||
DWORD CALLBACK UpdateThread(LPVOID v);
|
DWORD CALLBACK UpdateThread(LPVOID v);
|
||||||
|
|
||||||
typedef struct NSISScriptData {
|
typedef struct NSISScriptData {
|
||||||
|
bool script_alloced;
|
||||||
char *script;
|
char *script;
|
||||||
char *output_exe;
|
char *output_exe;
|
||||||
char *input_script;
|
char *input_script;
|
||||||
char *branding;
|
char *branding;
|
||||||
char *brandingv;
|
char *brandingv;
|
||||||
int retcode;
|
int retcode;
|
||||||
DWORD logLength;
|
DWORD logLength;
|
||||||
BOOL warnings;
|
BOOL warnings;
|
||||||
|
|
|
@ -165,8 +165,10 @@ void CompileNSISScript() {
|
||||||
}
|
}
|
||||||
if (!g_sdata.appended) {
|
if (!g_sdata.appended) {
|
||||||
if (s) GlobalFree(s);
|
if (s) GlobalFree(s);
|
||||||
s = (char *)GlobalAlloc(GPTR, lstrlen(g_sdata.script)+lstrlen(EXENAME)+2);
|
s = (char *)GlobalAlloc(GPTR, lstrlen(g_sdata.script)+sizeof(EXENAME)+2);
|
||||||
wsprintf(s,"%s %s",EXENAME,g_sdata.script);
|
wsprintf(s,"%s %s",EXENAME,g_sdata.script);
|
||||||
|
if (g_sdata.script_alloced) GlobalFree(g_sdata.script);
|
||||||
|
g_sdata.script_alloced = true;
|
||||||
g_sdata.script = s;
|
g_sdata.script = s;
|
||||||
g_sdata.appended = TRUE;
|
g_sdata.appended = TRUE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ If you want to use MakeNSIS on the command line, the syntax of the makensis comm
|
||||||
|
|
||||||
\b /HDRINFO prints out information on what options Makensis was compiled with.
|
\b /HDRINFO prints out information on what options Makensis was compiled with.
|
||||||
|
|
||||||
\b /CD tells the compiler to switch to the directory of the script it is currently compiling.
|
\b /NOCD disabled the current directory change to that of the .nsi file
|
||||||
|
|
||||||
\b Using the /D switch one or more times will add to symbols to the globally defined list (See !define).
|
\b Using the /D switch one or more times will add to symbols to the globally defined list (See !define).
|
||||||
|
|
||||||
|
|
|
@ -111,9 +111,9 @@ Section "NSI Development Shell Extensions" SecExtention
|
||||||
WriteRegStr HKCR "NSISFile\DefaultIcon" "" $INSTDIR\makensisw.exe,1
|
WriteRegStr HKCR "NSISFile\DefaultIcon" "" $INSTDIR\makensisw.exe,1
|
||||||
WriteRegStr HKCR "NSISFile\shell\open\command" "" 'notepad.exe "%1"'
|
WriteRegStr HKCR "NSISFile\shell\open\command" "" 'notepad.exe "%1"'
|
||||||
WriteRegStr HKCR "NSISFile\shell\compile" "" "Compile NSI"
|
WriteRegStr HKCR "NSISFile\shell\compile" "" "Compile NSI"
|
||||||
WriteRegStr HKCR "NSISFile\shell\compile\command" "" '"$INSTDIR\makensisw.exe" /CD "%1"'
|
WriteRegStr HKCR "NSISFile\shell\compile\command" "" '"$INSTDIR\makensisw.exe" "%1"'
|
||||||
WriteRegStr HKCR "NSISFile\shell\compile-bz2" "" "Compile NSI (with bz2)"
|
WriteRegStr HKCR "NSISFile\shell\compile-bz2" "" "Compile NSI (with bz2)"
|
||||||
WriteRegStr HKCR "NSISFile\shell\compile-bz2\command" "" '"$INSTDIR\makensisw.exe" /CD /X"SetCompressor bzip2" "%1"'
|
WriteRegStr HKCR "NSISFile\shell\compile-bz2\command" "" '"$INSTDIR\makensisw.exe" /X"SetCompressor bzip2" "%1"'
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
Section "Start Menu + Desktop Shortcuts" SecIcons
|
Section "Start Menu + Desktop Shortcuts" SecIcons
|
||||||
|
|
|
@ -69,7 +69,7 @@ static void sigint(int sig)
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
CEXEBuild build;
|
CEXEBuild build;
|
||||||
int do_cd=0;
|
int do_cd=1;
|
||||||
int outputtried=0;
|
int outputtried=0;
|
||||||
int argpos=1;
|
int argpos=1;
|
||||||
int nousage=0;
|
int nousage=0;
|
||||||
|
@ -163,7 +163,7 @@ int main(int argc, char **argv)
|
||||||
outputtried=1;
|
outputtried=1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!stricmp(argv[argpos],"/CD")) do_cd=1;
|
else if (!stricmp(argv[argpos],"/NOCD")) do_cd=0;
|
||||||
else if (argv[argpos][0] == '/' && (argv[argpos][1] == 'V' || argv[argpos][1] == 'v') &&
|
else if (argv[argpos][0] == '/' && (argv[argpos][1] == 'V' || argv[argpos][1] == 'v') &&
|
||||||
argv[argpos][2] >= '0' && argv[argpos][2] <= '4' && !argv[argpos][3])
|
argv[argpos][2] >= '0' && argv[argpos][2] <= '4' && !argv[argpos][3])
|
||||||
{
|
{
|
||||||
|
@ -316,7 +316,7 @@ int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
if (build.display_errors)
|
if (build.display_errors)
|
||||||
{
|
{
|
||||||
fprintf(g_output,"Error changing directory to \"%s\" (/CD specified)\n",dirbuf);
|
fprintf(g_output,"Error changing directory to \"%s\"\n",dirbuf);
|
||||||
fflush(g_output);
|
fflush(g_output);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -371,7 +371,7 @@ int main(int argc, char **argv)
|
||||||
" /Ofile specifies a text file to log compiler output (default is stdout)\n"
|
" /Ofile specifies a text file to log compiler output (default is stdout)\n"
|
||||||
" /PAUSE pauses after execution\n"
|
" /PAUSE pauses after execution\n"
|
||||||
" /NOCONFIG disables inclusion of <path to makensis.exe>\\nsisconf.nsh\n"
|
" /NOCONFIG disables inclusion of <path to makensis.exe>\\nsisconf.nsh\n"
|
||||||
" /CD makes makensis change the current directory to that of the .nsi file\n"
|
" /NOCD disabled the current directory change to that of the .nsi file\n"
|
||||||
" /Ddefine[=value] defines the symbol \"define\" for the script [to value]\n"
|
" /Ddefine[=value] defines the symbol \"define\" for the script [to value]\n"
|
||||||
" /Xscriptcmd executes scriptcmd in script (i.e. \"/XOutFile poop.exe\")\n"
|
" /Xscriptcmd executes scriptcmd in script (i.e. \"/XOutFile poop.exe\")\n"
|
||||||
" for script file name, you can use - to read from the standard input\n");
|
" for script file name, you can use - to read from the standard input\n");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue