最近看到Android 手机用户,不知道怎么升级CWM,故此写了一个升级的工具.
首先看看升级CWM的步骤。
1. 先要现在对应recovery.img, 这个地方就是http://www.clockworkmod.com/rommanager
2. 现在fastboot 工具包,随便搜索一下。
3. 使用命令 fastboot flash recovery recovery.img 就可以了,只要保证这些文件在同一个目录下,但是刷机之前,一定要进入fastboot 模式。
将这些写入一个window 程序那么就如下:
1. 启动一个进程。
BOOL LaunchProcess(CString &strCmd, CString& strWorkPath, BOOL bShow = FALSE, BOOL bWait = FALSE ) { LPCTSTR lpWorkPath = NULL; if ( !strWorkPath.IsEmpty() ) { lpWorkPath = strWorkPath.GetBuffer( strWorkPath.GetLength() ); } STARTUPINFO StartInfo = { sizeof(StartInfo)}; StartInfo.dwFlags = STARTF_USESHOWWINDOW; StartInfo.wShowWindow = SW_HIDE; if ( bShow ) { StartInfo.wShowWindow = SW_SHOW; } PROCESS_INFORMATION PiThis = {0}; BOOL bRetCode = CreateProcess( NULL, strCmd.GetBuffer( strCmd.GetLength() ), NULL, NULL, FALSE, 0, NULL, lpWorkPath, &StartInfo, &PiThis); if ( !bRetCode ) { return FALSE; } strCmd.ReleaseBuffer(); if (!strWorkPath.IsEmpty()) { strWorkPath.ReleaseBuffer(); } if ( bWait ) { WaitForSingleObject( PiThis.hProcess, -1); } DWORD dwCode = 0; GetExitCodeProcess(PiThis.hProcess, &dwCode); CloseHandle( PiThis.hProcess ); CloseHandle( PiThis.hThread ); if ( dwCode == 0 ) { return TRUE; } return FALSE; }2. 从资源中将文件释放出来
BOOL ReleaseFile( CString strFileName, UINT uID ) { HRSRC hResource = FindResource( NULL, MAKEINTRESOURCE(uID), _T("EXE")); DWORD dwSize = SizeofResource( NULL, hResource ); HGLOBAL hGlobal = LoadResource( NULL, hResource ); LPVOID pBuffer = LockResource( hGlobal ); CAtlFile TheOutFile; TheOutFile.Create( strFileName, GENERIC_WRITE, FILE_SHARE_READ| FILE_SHARE_WRITE, CREATE_ALWAYS); TheOutFile.Write(pBuffer, dwSize); TheOutFile.Close(); return TRUE; }真正的过程
ReleaseFile( m_strFastBoot, IDR_EXE_FASTBOOT ); ReleaseFile( m_strImg, IDR_EXEIMG ); BOOL bRetCode = LaunchProcess( m_strCmd, m_strWorkPath, FALSE, TRUE ); DeleteFiles(); if ( bRetCode ) { AfxMessageBox(_T("CWM 更新成功!")); } else { AfxMessageBox(_T("过程中有错误,请再来一次!"), MB_OK | MB_ICONERROR); }