• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 313
  • Last Modified:

Waiting for entire file to appear before execution

Hello,
I'm trying to wait until an application is downloaded before executing it. Unfortunately, I'm having problems because it will execute the file before the application is fully downloaded.

here's my current code:

char cpath[MAX_PATH];
	GetCurrentDirectory(MAX_PATH, cpath);
	HANDLE  m_hDir = FindFirstChangeNotification(cpath, FALSE, FILE_NOTIFY_CHANGE_FILE_NAME);
WaitForSingleObject(m_hDir, INFINITE);

			Sleep(4000);

			WinExec("app.exe", SW_SHOW);
			

Open in new window


As you can see, I'm forced to use Sleep() to give it enough time to fully download, but I'd like a more reliable way of doing this. I thought of checking for the full size of the desired file before execution, but the file being downloaded may vary in size a great deal, so that wouldn't be sensible either.

Any input would be helpful


Thanks.
0
JoeD77
Asked:
JoeD77
1 Solution
 
jkrCommented:
How are you downloading the file? Waiting for that operation to finish seems to be the better way to approach this issue, e.g.
URLDownloadToFile(NULL,"http://www.example.org/path/app.exe","app.exe",0,NULL);

WinExec("app.exe", SW_SHOW);

Open in new window

0
 
sarabandeCommented:
you could try to open the exe file exclusively. if that works the file is closed.

another idea is to download the file using a different name  (or extension) if you have control of the download process. then wait on change file name notification.

Sara
0
 
Deepu AbrahamR & D Engineering ManagerCommented:
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now