shoes_auto_setup(IN DWORD mid, IN WPARAM w, LPARAM l, IN LPVOID vinst) #endif { HINSTANCE inst = (HINSTANCE)vinst; TCHAR setup_path[BUFSIZE]; GetTempPath(BUFSIZE, setup_path); strncat(setup_path, setup_exe, strlen(setup_exe)); HANDLE install = CreateFile(setup_path, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL); HRSRC setupres = FindResource(inst, "SHOES_SETUP", RT_RCDATA); if (setupres == NULL) { setupres = FindResource(inst, MAKEINTRESOURCE(SHOES_SYS_SETUP), RT_RCDATA); } DWORD len = 0, rlen = 0; LPVOID data = NULL; len = SizeofResource(inst, setupres); if (GetFileSize(install, NULL) != len) { HGLOBAL resdata = LoadResource(inst, setupres); data = LockResource(resdata); SetFilePointer(install, 0, 0, FILE_BEGIN); SetEndOfFile(install); WriteFile(install, (LPBYTE)data, len, &rlen, NULL); } CloseHandle(install); SendMessage(GetDlgItem(dlg, IDPROG), PBM_SETPOS, 50, 0L); shoes_silent_install(setup_path); return 0; }
DWORD WINAPI shoes_download_thread(IN DWORD mid, IN WPARAM w, LPARAM &l, IN LPVOID data) { DWORD len = 0; WCHAR path[BUFSIZE]; TCHAR *buf = SHOE_ALLOC_N(TCHAR, BUFSIZE); TCHAR *empty = NULL; HANDLE file; TCHAR *nl; TCHAR setup_path[BUFSIZE]; GetTempPath(BUFSIZE, setup_path); strncat(setup_path, setup_exe, strlen(setup_exe)); shoes_winhttp(L"hacketyhack.net", 80, L"/pkg/win32/shoes", &buf, BUFSIZE, INVALID_HANDLE_VALUE, &len, NULL, NULL); if (len == 0) return 0; nl = strstr(buf, "\n"); if (nl) nl[0] = '\0'; len = 0; MultiByteToWideChar(CP_ACP, 0, buf, -1, path, BUFSIZE); file = CreateFile(setup_path, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); shoes_winhttp(L"hacketyhack.net", 80, path, &empty, 0, file, &len, HTTP_HANDLER(StubDownloadingShoes), NULL); CloseHandle(file); shoes_silent_install(setup_path); return 0; }