源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C++卸载程序功能示例

  • 时间:2022-09-27 12:38 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C++卸载程序功能示例
注:在程序退出的时候写上 自己的卸载代码。
[u]复制代码[/u] 代码如下:
// FileName: Uninstall.h #pragma once class CUninstall { private:     // Exe文件名     CString m_strExeName;     // Bat文件名     CString m_strBatName; public:     // exe的路径     CString m_strExePath;     // bat的路径     CString m_strBatPath;     CString m_unInstallPath; public:     // 是否已经复制到临时文件夹     bool GetState (void);     // 初始化     void Init (void);     // 卸载程序     void Uninstall (void); public:     CUninstall();     ~CUninstall(); };
[u]复制代码[/u] 代码如下:
// FileName: Uninstall.cpp #include "stdafx.h" #include "Uninstall.h" #include <atlconv.h> #include <locale.h> CUninstall::CUninstall() : m_strExeName(_T("XABC01.exe")), m_strBatName(_T("XABC01.bat")) {     TCHAR strPath[MAX_PATH] = {0};     GetTempPath(MAX_PATH, strPath);     m_strExePath = strPath;     m_strExePath += m_strExeName;     memset(strPath, 0, MAX_PATH);     GetTempPath(MAX_PATH, strPath);     m_strBatPath = strPath;     m_strBatPath += m_strBatName; } CUninstall::~CUninstall() { } void CUninstall::Uninstall (void) {     // 获取exe所在路径     CString strExePath;        // 临时问价下exe文件所在路径     HMODULE hModule = NULL;     TCHAR strPath[MAX_PATH] = {0};     HKEY hKey;     ::GetModuleFileName(hModule, strPath, MAX_PATH);     strExePath = strPath;     // 拷贝到临时文件夹     CopyFile(strExePath, m_strExePath, FALSE);     int nIndex = strExePath.ReverseFind(_T('\\'));     strExePath = strExePath.Left(nIndex);     m_unInstallPath = strExePath;     HANDLE hande = CreateFile (m_strBatPath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_ARCHIVE, NULL);     CloseHandle(hande);     // 写卸载批处理文件文件到磁盘     CString strBuffer;     strBuffer = _T(":repeat\ndel ");     strBuffer += _T("\"") + m_strExeName + _T("\"\nif exist ");     strBuffer += _T("\"") + m_strExeName + _T("\" goto repeat\n");     strBuffer += _T("rd /s /q \"") + strExePath + _T("\"\n");     strBuffer += _T("del \"") + m_strBatName + _T("\"");     CStdioFile file;     if (file.Open(m_strBatPath, CFile::modeWrite))     {         char* old_locale=_strdup(setlocale(LC_CTYPE,NULL) );         setlocale( LC_CTYPE,"chs");         file.WriteString(strBuffer);         file.Close();         setlocale( LC_CTYPE, old_locale ); //还原语言区域的设置         free( old_locale );//还原区域设定     }     else     {         ::MessageBox (NULL, TEXT("文件写入磁盘失败!"), TEXT(""), MB_OK|MB_ICONEXCLAMATION);     } } bool CUninstall::GetState (void) {     if (PathFileExists(m_strBatPath))     {         return true;     }     else     {         return false;     } } void CUninstall::Init (void) { }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部