目的:用c++寫乙個自己的解除安裝程式來完成程式的解除安裝工作,同時執行後要刪除解除安裝程式本身,並刪除解除安裝程式所在的資料夾。
注:在程式退出的時候寫上 自己的解除安裝**。
//filename: uninstall.h
#pragma once
class
cuninstall
;
//filename: uninstall.cpp
#include
"stdafx.h
"#include
"uninstall.h
"#include
#include
cuninstall::cuninstall() : m_strexename(_t(
"xabc01.exe
")), m_strbatname(_t("
xabc01.bat"))
; 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);
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))
else
}bool cuninstall::getstate (void
)
else
}void cuninstall::init (void
)
C 程式解除安裝
做c 的安裝程式時候是用 vb.net做的解除安裝 呵呵 1 成安裝包,記下productcode 的值 選擇解決方案資源管理器根目錄如setup1,再檢視屬性標籤,不是右鍵中的屬性 2 用vs.net vb.net 建立乙個新的控制台程式 3 module uninstall sub main d...
C 程式解除安裝
做c 的安裝程式時候是用 vb.net做的解除安裝 呵呵 1 成安裝包,記下productcode 的值 選擇解決方案資源管理器根目錄如setup1,再檢視屬性標籤,不是右鍵中的屬性 2 用vs.net vb.net 建立乙個新的控制台程式 3 module uninstall sub main d...
c 製做解除安裝程式
是安裝布置的屬性中的productcode c 製做解除安裝程式是windows自帶的解除安裝程式。原理 通過命令列執行windows自帶的解除安裝程式,對程式進行自定義解除安裝。開發環境 windows xp msiexec.exe引數詳解 msiexec.exe用於安裝windows insta...