

#cppmeet #cpprussia #wg21
Size: a a a
BOOL CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
char buf[MAX_PATH];
static char exename[100] = "makensis.exe";
switch (msg) {
case WM_INITDIALOG:
// Поищем скрипты в каталоге, в котором лежит программа (CurrentDirectory)
find_default_script_nsi(hDlg);
// Поищем папку компилятора.
if (!get_nsis_def_dir(hDlg, buf, MAX_PATH, defname)) {
strcpy(buf, "D:\\progs\\NSIS\\");
}
SetDlgItemText(hDlg, IDC_EDIT_FOLDER_NSIS, buf);
return TRUE;
// case WM_ERASEBKGND:
// return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDOK:
switch (make_inst_uninst_files("Files\\", ".", ".\\inst.txt", ".\\uninst.txt")) {
case 0:
{
char *nsisfolder;
char *param;
build_param_string(hDlg, nsisfolder, param);
// MessageBox(hDlg,fld,param,0);
AllocConsole();
if (run_nsis(nsisfolder, exename, param) == 0) {
FreeConsole();
}
// удолить все эти строчки
free_param_strings(nsisfolder, param);
return TRUE;
}
default: __asm int 3;
return TRUE;
}
break;
case IDCANCEL:
EndDialog(hDlg, IDCANCEL);
return TRUE;
case IDC_BUTTON_BROWSE_SCR:
{
TCHAR buf[MAX_PATH] = { '\0' };
OPENFILENAME ofn = { sizeof(ofn) };
ofn.lpstrTitle = TEXT("Выберите файл скрипта установщика");
ofn.lpstrFile = buf;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFilter = TEXT("Скрипты NSIS (*.nsi)\0*.nsi\0")
TEXT("Текстовые файлы (*.txt)\0*.txt\0Все файлы (*.*)\0*.*\0");
if (GetOpenFileName(&ofn)) {
SetDlgItemText(hDlg, IDC_EDIT_FILE_NSI, buf);
} else {
DWORD err = CommDlgExtendedError();
if (err != 0) {
__asm int 3;
}
}
return TRUE;
}
}
return FALSE;
}
return FALSE;
}