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函数的使用方法。
InstallShield安装包卸载-完美卸载的更多相关文章
- InstallShield安装包中集成第三方安装包的方案选择
原文:InstallShield安装包中集成第三方安装包的方案选择[转] 我们在制作安装包时,有些情况下会涉及第三方安装的集成,这里将讨论如何调用安装第三方包,以及需要注意的事项. 第三方安装包的 ...
- How to:installshield安装包怎样才能出现选择路径的界面?
原文:How to:installshield安装包怎样才能出现选择路径的界面? 这个问题新手问的很多,installshield的安装包默认设置下选择路径的界面藏在Custom安装类型下.在做完安装 ...
- C#软件winform程序安装包制作及卸载程序制作
使用vs2010 winform程序开发的软件的人比较多,程序的开发是为了在不同的人不同的机器使用,为了使不同的机器能使用该软件就需要在制作程序安装包,安装包里必须包含该软件运行所选的所有环境,下面就 ...
- InstallShield安装包中集成第三方安装包的方案选择[转]
我们在制作安装包时,有些情况下会涉及第三方安装的集成,这里将讨论如何调用安装第三方包,以及需要注意的事项. 第三方安装包的介质类型有很多,主要有:单独的一个Setup.exe,单独的一个msi包, ...
- OPPO A57 刷机(官方安装包)+完美Root+ 破解主题+屏蔽Root顶部红色框+NV修复
朋友说她的手机被被人刷后,有许多预装的软件问我能不能处理下,让我装个纯净版. 开机可以看到预装了许多软件,通常想要删除预装软件就必须Root,于是下载刷机精灵,360刷机大师,线刷包之类的软件Root ...
- VS2010 制作安装包,无法生成卸载快捷方式
目前我出现了这个错误,原因是项目目录中包含了中文字符导致的,我改变了文件夹之后,就没问题了
- InstallShield安装包在Win7下权限问题的解决方案 (转载)
转载:http://blog.csdn.net/wuzhengqing1/article/details/6570149 转载:http://blog.csdn.net/brikoff/article ...
- installshield安装包制作
入门教程:http://blog.csdn.net/gaofang2009/article/details/5260065 入门教程:http://blog.csdn.net/plfl520/arti ...
- installshield制作的安装包卸载时提示重启动的原因以及解决办法
原文:installshield制作的安装包卸载时提示重启动的原因以及解决办法 有时候卸载installshield制作的安装包程序,卸载完会提示是否重启电脑以完成所有卸载,产生这个提示的常见原因有如 ...
随机推荐
- Java-线程间通信
Java-线程间通信 一 线程通讯 就是多个线程操作同一个资源,可是操作的动作不同 二 停止线程: 控制住run的循环就能够控制线程结束 当线程处于冻结状态,就不会读取标记,线程就不会结束 inter ...
- 具体解释VMware 9.0.1安装MAC OS X 10.8(历时近3日感想篇)
突然心血来潮,想用VMware 9.0.1安装MAC OS X,但网上的文章多多少少总有点缺陷,不能适合每个人,在综合了近30篇安装MAC OS X的文章后,我决定公布一篇比較大众化,比較详尽的MAC ...
- 用nodejs安装hexo,将hexo部署到github
跌跌撞撞写这篇博文,希望下一篇可以好点 运行环境:最新版本的nodejs + git 安装好nodejs 和 git ,注册好github账号,新建仓库****.github.io(****为gith ...
- [译]Stairway to Integration Services Level 11 - 日志配置
介绍 在前一个章节我们讨论了事先行为,分享了如何操作默认的行为和时间冒泡,并且介绍了父子模型. 本文中,我们会配置SSIS日志. 进行简单及高级日志配置,存储,和检索的实验.并且生成自定义日志信息. ...
- C++改变编程入口为main函数
1, 你用vc建了一个控制台程序,它的入口函数应该是main, 而你使用了WinMain. 2. 你用vc打开了一个.c/.cpp 文件,然后直接编译这个文件,这个文件中使用了WinMian而不是m ...
- js,this,constrct ,prototype
这一章我们将会重点介绍JavaScript中几个重要的属性(this.constructor.prototype), 这些属性对于我们理解如何实现JavaScript中的类和继承起着至关重要的作 th ...
- poj 1604 Just the Facts
/** 大意: 求n! 结果 从左到右 第一个非零数 跟 1150 差不多.. **/ #include <iostream> #include <cstdio> using ...
- VJGUI消息设计-兼谈MFC、QT和信号/槽机制
星期六下午4点,还在公司加班.终于写完了下周要交工的一个程序. 郁闷,今天这几个小时写了有上千行代码吧?虽然大部分都是Ctrl-C+Ctrl-V,但还是郁闷. 作为一个有10年经验的MFC程序员,郁闷 ...
- VC++对象布局的奥秘:虚函数、多继承、虚拟继承
哈哈,从M$ Visual C++ Team的Andy Rich那里又偷学到一招:VC8的隐含编译项/d1reportSingleClassLayout和/d1reportAllClassLayout ...
- Linux的五个查找命令find,locate,whereis,which,type
Linux的五个查找命令 1. find 最常见且最强大的命令,可以查找任何文件. 格式 $ find 指定目录 指定条件 指定动作 指定目录: 所要搜索的目录及其子目录,默认当前目录 ...