`
isiqi
  • 浏览: 16489564 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

关于cab包卸载时将所有文件删除的方法

阅读更多

做wince或是mobile开发,最终的文件会打包成一个cab包,当别人卸载我们的软件然后进行重装后,我们是希望最好连程序生成的配置文件也一并删除,否则重新安装的话会使用到以前的配置文件,有时这是我们不愿看到并且必须要处理的。

本文介绍的方法是如何利用系统本身的机制,通过一个动态库setup.dll以实现在卸载时删除安装目录中所有文件的功能。

首先需要生成一个setup.dll,此动态库中应包含这样的函数

codeUNINSTALL_INIT
Uninstall_Init(
HWND hwndParent,
LPCTSTR pszInstallDir
)

用以在卸载时进行文件删除的工作。

另外还有一个函数,也是在卸载之后可调用的,但由于参数中并没有带上路径,因此暂时未用,函数原型如下:

codeUNINSTALL_EXIT
Uninstall_Exit(
HWND hwndParent
)

好,首先需要实现一个DeleteDir的函数,然后用Uninstall_Init调用DeleteDir即可。

代码如下:

BOOL DeleteDir(TCHAR * path)
{
	WIN32_FIND_DATA finddata;
	HANDLE hfind;
	TCHAR * pdir;

	pdir=new TCHAR[_tcslen(path)+5];
	_tcscpy(pdir,path);
	if(path[_tcslen(path)-1] != TCHAR('\\'))
		_tcscat(pdir, _T("\\*.*"));
	else
		_tcscat(pdir, _T("*.*"));

	hfind=FindFirstFile(pdir,&finddata);
	if(hfind==INVALID_HANDLE_VALUE)
		return FALSE;

	delete []pdir;
	do
	{
		pdir=new TCHAR[_tcslen(path)+_tcslen(finddata.cFileName)+2];
		_stprintf(pdir,_T("%s\\%s"),path,finddata.cFileName);
		if(_tcscmp(finddata.cFileName,_T(".")) == 0 || _tcscmp(finddata.cFileName,_T("..")) == 0 )
		{
			delete []pdir;
			continue;
		}

		if((finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)==0)
			DeleteFile(pdir);
		else
			DeleteDir(pdir);

		delete []pdir;
	}while(FindNextFile(hfind,&finddata));

	if(RemoveDirectory(path))
		return TRUE;
	else
		return FALSE;
}

codeUNINSTALL_INIT
Uninstall_Init(
    HWND        hwndParent,
    LPCTSTR     pszInstallDir
)
{
	UnregisterTodayItem(hwndParent, pszInstallDir);

	DeleteDir((TCHAR*)pszInstallDir);

	return codeUNINSTALL_INIT_CONTINUE;
}


分享到:
评论

相关推荐

    Office2010启动故障需要ProPlusWW.msi和ProPsWW2.cab文件修复包

    `.msi`文件包含了安装程序的所有信息,包括程序的文件、注册表项、安装规则等,用于指导软件的安装和卸载过程。`ProPlusWW.msi`是Office 2010专业增强版的主安装文件,它包含了该版本所需的所有组件,如Word、Excel...

    office完美卸载工具.zip

    这些程序由于其深度集成和多组件特性,普通的方法可能无法完全卸载干净,导致残留文件或注册表项,从而影响新版本的安装或者系统性能。这时,就需要借助专业的卸载工具来解决这个问题。"Office完美卸载工具.zip"就是...

    卸载office正版增值计划补丁的方法

    本文将分步骤详细介绍如何卸载Office正版增值计划补丁,包括终止特定进程、删除相关文件以及阻止未来的更新安装等操作。需要注意的是,以下方法仅适用于移除和屏蔽OGA的提示信息,并不会破解其验证程序——...

    office 2016卸载工具

    在标准的“控制面板”卸载程序方法无法解决问题时,我们就需要借助专门的卸载工具。 "office 2016卸载工具"是一个专为解除Office 2016安装设计的实用程序。它被设计用来处理那些通过常规方法难以卸载的情况,例如...

    WM6可用的Cab文件转换绿色软件

    "绿色软件"通常指的是不需要安装即可使用的程序,它们不写入系统注册表,不修改系统文件,方便用户随身携带和随时删除,不会在卸载时留下痕迹。这种软件形式尤其适合那些希望在尝试后决定是否正式安装的应用。 "Cab...

    Office全系列卸载工具.rar

    “安全干净,无残留”是这款工具的重要特性,表明它会彻底删除Office的所有组件,不会在系统中留下任何可能引起问题的文件或设置。这对于那些担心手动卸载可能带来的风险或技术不够熟练的用户来说,是非常理想的。 ...

    删除svn残留

    清理时,应将这些文件夹全部删除。 2. **清理工作副本**:在命令行中,使用`svn cleanup`命令可以清理工作副本中的锁和其他临时状态,确保没有未完成的操作。 3. **移除本地修改**:如果有一些未提交的修改,可以...

    找不到sku011.cab文件

    ### 找不到sku011.cab文件的解决方法 在使用Office 2003的过程中,用户可能会遇到Excel突然无法正常启动的情况,并且提示找不到sku011.cab文件。这种问题通常与安装包损坏或者系统注册表中的某些设置有关。本文将...

    office卸载工具office卸载工具office卸载工具office卸载工具

    在某些情况下,常规的卸载方法可能无法完全删除Office,或者留下了残留项,导致新版本安装时出现问题。此时,这种专门的卸载工具就显得尤为重要。 描述虽然重复,但我们可以理解其核心含义:这个工具专注于解决与...

    最新OCP.Software.WinCE.Cab.Manager

    3. **错误修复**:由于宣称无删除文件出错BUG,这意味着在处理CAB文件时,OCP Software WinCE Cab Manager能够更安全地执行文件操作,避免数据丢失或系统不稳定。 4. **稳定性与可靠性**:这款工具的一大亮点就是其...

    解决Excel找不到sku011.cab的办法

    2. **复制文件**:将找到的sku011.cab文件复制到本机相应的位置,通常是C:\Windows\Installer下的某个随机命名的文件夹内。 3. **权限设置**:确保复制的文件具有正确的权限,以免因访问权限问题导致失败。 **解决...

    如何卸载Office 系统提示的蓝色标记☆

    最后,我们需要卸载 KB949810 首先,请到以下地址下载一个文件,下载的文件是 CAB 压缩包,请用 winrar 解压后得到一个 MSI 文件。然后,鼠标右键点击该 MSI 文件,选择”卸载”,千万不要双击安装。 在卸载完成后...

    Office 2007-2016 套件删除工具

    此外,.msi文件(如Office 2003、2010、2007套件删除工具.msi)是Windows Installer包,可以直接运行来执行卸载过程。删除Office的修复工具.txt很可能是包含详细步骤或命令行方法的文本文件,帮助用户手动完成卸载。...

    C盘垃圾文件的清理提高cpu速度

    本文将详细介绍如何有效清理这些垃圾文件,并探讨其对提高电脑速度的影响。 #### 二、垃圾文件类型及其影响 1. **临时文件**:包括系统创建的各种临时文件(如`.tmp`文件),浏览器缓存文件等。 2. **系统日志文件...

    winform打包和部署

    2. **部署应用程序**:可以通过运行安装程序、使用Internet下载并部署CAB程序包、使用XCOPY将文件复制到目标文件夹中或者使用系统管理服务器等方式来部署WinForm应用程序。 #### 八、创建部署项目的步骤 1. **新建...

    删除系统垃圾文件归纳.pdf

    #### 五、删除软件卸载后的遗留文件 **删除步骤**: 1. **删除软件安装文件夹**:通过软件的快捷方式属性找到其安装目录,然后在资源管理器中删除该文件夹。 2. **删除“添加/删除程序”中的垃圾信息**:编辑...

    删除系统垃圾文件分享.pdf

    2. **删除Windows内置的硬件设备驱动程序包**:例如,在Windows 2000中位于“C:\WINNT\driver cache\i386”目录下的“driver.cab”文件。 3. **删除无用的“user.dmp”文件**:这类文件通常会在系统出现异常时生成...

    计算机C盘哪些文件可以删除

    本文将详细介绍计算机C盘中哪些文件是可以安全删除的,以及如何执行这些操作。 #### 二、可删除文件及操作指南 ##### 1. 显示隐藏文件和文件夹 首先,确保能够看到隐藏的文件和文件夹。可以通过以下步骤实现: - ...

    GPS自动进wince.cab

    同时,如果用户选择卸载或删除这个程序,GPS设备仍然能够正常工作,返回到原始的启动流程,这意味着这个程序并不影响GPS的基本功能。 标签“wince GPS”明确了我们讨论的主题是与WinCE系统相关的GPS应用。在GPS设备...

Global site tag (gtag.js) - Google Analytics