Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione 3.1 patch 766 git-svn-id: svn://10.65.10.50/trunk@14628 c028cbd2-c16b-5b4b-a496-9718f37d4682
80 lines
2.1 KiB
C++
Executable File
80 lines
2.1 KiB
C++
Executable File
#include <windows.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
void Renamer(const char* mask)
|
|
{
|
|
char drive[_MAX_DRIVE], path[_MAX_PATH], fname[_MAX_FNAME], ext[_MAX_EXT];
|
|
_splitpath(mask, drive, path, NULL, NULL);
|
|
|
|
|
|
WIN32_FIND_DATA data;
|
|
HANDLE hHandle = ::FindFirstFile(mask, &data);
|
|
BOOL bRunning = hHandle != INVALID_HANDLE_VALUE;
|
|
while (bRunning)
|
|
{
|
|
_splitpath(data.cFileName, NULL, NULL, fname, ext);
|
|
|
|
const char* newext = NULL;
|
|
if (stricmp(ext, ".ex_") == 0)
|
|
newext = ".exe"; else
|
|
if (stricmp(ext, ".dl_") == 0)
|
|
newext = ".dll";
|
|
|
|
if (newext != NULL)
|
|
{
|
|
char oldpath[_MAX_PATH], newpath[_MAX_PATH];
|
|
_makepath(oldpath, drive, path, fname, ext);
|
|
_makepath(newpath, drive, path, fname, newext);
|
|
if (::CopyFile(oldpath, newpath, FALSE))
|
|
{
|
|
::DeleteFile(oldpath);
|
|
}
|
|
else
|
|
{
|
|
char msg[512];
|
|
LPVOID lpMsgBuf;
|
|
FormatMessage(
|
|
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
|
NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
|
|
(LPTSTR) &lpMsgBuf, 0, NULL);
|
|
sprintf(msg, "Impossibile ridenominare il file %s in %s:\n%s",
|
|
oldpath, newpath, lpMsgBuf);
|
|
::LocalFree(lpMsgBuf);
|
|
::MessageBox(NULL, msg, "Aggiornamento sistema", MB_ICONERROR | MB_OK);
|
|
}
|
|
}
|
|
|
|
bRunning = ::FindNextFile(hHandle, &data);
|
|
}
|
|
}
|
|
|
|
int PASCAL WinMain(HINSTANCE, HINSTANCE , LPSTR cmd_line, int)
|
|
{
|
|
::MessageBox(NULL, "Premere OK ed attendere il riavvio del programma",
|
|
"Aggiornamento sistema", MB_ICONWARNING | MB_OK);
|
|
::Sleep(3000); // Apetta qualche secondo che termini ba0.exe
|
|
|
|
Renamer("*.??_");
|
|
Renamer("Servers\\*.??_");
|
|
|
|
int modules_pending = ::GetPrivateProfileInt("ba0close", "ModulesPending", 0, "./campo.ini");
|
|
|
|
if (modules_pending != 0)
|
|
{
|
|
char cmd[256];
|
|
strcpy(cmd, "ba1.exe -6 /u");
|
|
const char* u = strstr(cmd_line, "/u");
|
|
if (u != NULL)
|
|
strcat(cmd, u+2);
|
|
else
|
|
strcat(cmd, "ADMIN");
|
|
|
|
WinExec(cmd, SW_SHOWNORMAL);
|
|
}
|
|
else
|
|
WinExec("ba0.exe", SW_SHOWNORMAL);
|
|
|
|
return 0;
|
|
}
|