InstallShield安装包卸载-完美卸载

在前面的日志里面介绍了在卸载的时候删除整个安装文件夹的方式。可是当遇到程序生成的文件不是在同一个文件夹下,有时甚至是用户自己定义的文件夹路径,这个时候我们卸载的时候是没有将用户自己定义的文件夹给删除掉的。所以今天会介绍怎么用getprofstring函数获取一个ini配置的值而且用DeleteDir函数将其删除

程序在安装的时候会要求用户创建一个文件夹如:d:\hiadmin

hiadmin以下有例如以下子目录

d:\hiadmin\diskserver            主程序文件

d:\hiadmin\xml                     使用过程产生的文件放这里(这个目录用户是能够自己定义的)

d:\hiadmin\server                管理程序

如今我须要在程序卸载的是将这3个目录都删除掉

在前面的日志里面我用DeleteDir将安装文件夹下的hiadmin都删除掉了(代码例如以下)

DeleteDir (TARGETDIR^”hiadmin”,ALLCONTENTS);

可是如今的问题是用户在安装的时候自己定义了XML的目录路径,这个我在卸载的时候就会出现用户自己定义的XML目录没能删除,导致用户在下一次安装的时候假设还是将XML目录自定要上一次的地方就会出现故障

为了规避这个问题,程序在卸载的时候就必需要将diskserver ,xml ,server 这个3个都全然删除掉

解决方法例如以下:

1.用户自己定义的XML路径是写在diskserver配置文件中面

首选获取到配置文件中面xml的绝对路径

2.用DeleteDir函数删除就可以

首选我们得获取到配置文件中面的值InstallShield为我们提供了GetProfString函数

GetProfString ( szFileName, szSectionName, szKeyName, svResult );

GetProfString函数从一个指定的.ini文件里检索一个配置字符串

參数:

szFileName

指定一个.ini文件名称,从中得到一个键的当前值。

szSectionName

指定.ini文件里的一个段名,从中查找szKeyName。段名必须不被包围在定界中括号里([ ])区分大写和小写。

szKeyName

指定一个键,它的值被返回到svResult。查找该键时不区分大写和小写。为得到一个段中全部键名的列表,给该參数传递一个空字符串。很多其它信息请看以下的注解。

svResult

假设 szSectionName指定一个段名,szKeyName指定一个键名,该键的值被返回到该參数。

function OnUninstalledFile(szFile)

string svResult; //定义svResult

begin

ServiceStopService(“hiadmin”);

//卸载的时候先停止hiadmin服务

GetProfString ( TARGETDIR^”\\hiadmin\\diskserver\\config.ini”, “Config”, “DataFilePath”, svResult);

//用GetProfString获取安装文件夹下diskserver以下config.ini配置文件,Config字段,DataFilePath的值并赋值给svResult

DeleteDir (svResult,ALLCONTENTS);

//删除svResult(svResult的值在上面已经得到)

DeleteDir (TARGETDIR^”hiadmin”,ALLCONTENTS);

//删除TARGETDIR(安装文件夹下)的整个hiadmin文件夹

end;

到此就全然的彻底的攻克了卸载的时候会留下程序安装时生成的文件。

这次主要介绍了GetProfString函数的使用方法。

时间: 2024-11-01 16:37:32

InstallShield安装包卸载-完美卸载的相关文章

How to:installshield安装包怎样才能出现选择路径的界面?

原文:How to:installshield安装包怎样才能出现选择路径的界面? 这个问题新手问的很多,installshield的安装包默认设置下选择路径的界面藏在Custom安装类型下.在做完安装包后,点击执行,正常选择“下一步”“下一步”,来到Setup Type界面 选择Custom类型,点击Next,就会出现选择路径的界面了. How to:installshield安装包怎样才能出现选择路径的界面?

InstallShield安装包在Win7下权限问题的解决方案

分享一下我老师大神的人工智能教程吧.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net 众所周知,win7下的权限问题很让人头疼,最近在用InstallShield给AliProbe打包的时候,同样在win7下遇到了问题.主要的限制是:在安装目录下不能创建文件以及执行任何的写操作.这个问题给程序的正确执行以及后期的更新都带来了不小的困难,为了解决这个限制,尝试了下面几种方案. 1.更换写文件的目录 方法:将AliPro

installshield制作的安装包卸载时提示重启动的原因以及解决办法

原文:installshield制作的安装包卸载时提示重启动的原因以及解决办法 有时候卸载installshield制作的安装包程序,卸载完会提示是否重启电脑以完成所有卸载,产生这个提示的常见原因有如下几种:1. 卸载时,程序正处于运行状态2. 卸载时,程序文件夹处于打开状态3. 卸载时,有文件被别的进程调用,或者在进程中,常见情况如dll在进程中 一般来说解决办法是针对第三种情况的,解决办法是卸载时强制杀进程,比如在OnMaintUIBefore或者OnUninstall里写上强制杀进程的代码

How to: Installshield做安装包时如何添加文件

原文:How to: Installshield做安装包时如何添加文件 我一直以为这不是一个问题,可是没想到在几个群内,对于如何向安装包添加文件不解的大有人在,今日稍暇,整理成篇,以供参考 首先我想再大声地说一遍:不要再跟我说英文看不懂了!!!!你做了程序员这一行,就得逼自己去看懂英文!!!说看不懂的赶快转行吧!甭在这行混了!去工地搬个砖也有四五千了!不比你在这里一边牢骚一边拿两千强啊!谷歌度娘都免费提供翻译功能!别再跟姐叨叨!姐不是翻译机!!! 以Installscript Project为例

基于DevExpress的Winform程序安装包的制作

在我们做系统开发的时候,都会面临一个安装包制作的问题,如何把我们做好的系统,通过安装包工具整合成一个安装包给客户进行安装.安装包的优势就是一步步安装就可以了,不用复制一大堆文件给客户,还怕缺少那个文件导致系统运行出错.本文主要介绍基于DevExpress的Winform程序安装包的制作内容,包括VS2010和VS2013/V2105的不同处理方式. 我们知道,VS2010是最后一个可以使用微软安装包制作工具的VS版本了,所以后面VS2012/2013/2015版本都需要使用第三方安装包制作工具,

基于InstallShield2013LimitedEdition的安装包制作

原文:基于InstallShield2013LimitedEdition的安装包制作 在VS2012之前,我们做安装包一般都是使用VS自带的安装包制作工具来创建安装包的,VS2012.VS2013以后,微软把这个去掉,集成使用了InstallShield进行安装包的制作了,虽然思路差不多,但是处理还是有很大的不同,本文主要基于VS2013的基础上,介绍使用InstallShield2013LimitedEdition的安装包制作. 1.安装使用InstallShield2013LimitedEd

R语言-查看加载包、卸除加载包及安装包与卸载包

在R语言中,常需要看哪个包加载了或是看多个相似功能的包,看到底是哪个包在起作用,通过加载和卸除后进行运行比较分析. 1.查看已加载的包 >(.packages()) 注意外面的括号和前面的点不能省. 2.卸除已加载的包 如卸除RMySQL包 >detach("package:RMySQL") 注意是卸除,不是卸载,也就是说不是把包从R运行环境中彻底删除,只是不希望该包被加载使用. 在包使用函数冲突,检验函数依赖时比较有用. 3.安装包 >install.package

ubuntu apt-get 总结 install xxx -d能下载安装包(含依赖)不安装_和卸载(转载)

[举例] 目前常用的 ========== *更新本机中的数据库缓存: sudo apt-get update *查找包含部分关键字的软件包: sudo apt-cache search <你要查找的name> *安装指定的软件: sudo apt-get install <你要安装的软件包> 例如: sudo apt-get install xfce4 *下载软件包源代码(如果有的话): apt-get source <你要下载的源代码包名> 详细的资料 ======

卸载pkg安装包

1 基本原理 1.1 查看某个pkg安装包安装的所有文件 第一,查看所有安装的pkg $ pkgutil --pkgs 第二,查看指定pkg的所有安装文件 $ pkgutil --files the-package-name.pkg 1.2 卸载pkg 将该pkg对应的文件全部删除即可. 2 卸载脚本 安装 sudo bash <<(curl -sL https://raw.github.com/mpapis/pkg_uninstaller/master/pkg-install) 这样文件就下