Exemple #1
0
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;
}
Exemple #2
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;
}