在前面的日志里面介绍了在卸载的时候删除整个安装文件夹的方式。可是当遇到程序生成的文件不是在同一个文件夹下,有时甚至是用户自己定义的文件夹路径,这个时候我们卸载的时候是没有将用户自己定义的文件夹给删除掉的。所以今天会介绍怎么用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安装包卸载-完美卸载的更多相关文章

  1. InstallShield安装包中集成第三方安装包的方案选择

    原文:InstallShield安装包中集成第三方安装包的方案选择[转]   我们在制作安装包时,有些情况下会涉及第三方安装的集成,这里将讨论如何调用安装第三方包,以及需要注意的事项. 第三方安装包的 ...

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

    原文:How to:installshield安装包怎样才能出现选择路径的界面? 这个问题新手问的很多,installshield的安装包默认设置下选择路径的界面藏在Custom安装类型下.在做完安装 ...

  3. C#软件winform程序安装包制作及卸载程序制作

    使用vs2010 winform程序开发的软件的人比较多,程序的开发是为了在不同的人不同的机器使用,为了使不同的机器能使用该软件就需要在制作程序安装包,安装包里必须包含该软件运行所选的所有环境,下面就 ...

  4. InstallShield安装包中集成第三方安装包的方案选择[转]

      我们在制作安装包时,有些情况下会涉及第三方安装的集成,这里将讨论如何调用安装第三方包,以及需要注意的事项. 第三方安装包的介质类型有很多,主要有:单独的一个Setup.exe,单独的一个msi包, ...

  5. OPPO A57 刷机(官方安装包)+完美Root+ 破解主题+屏蔽Root顶部红色框+NV修复

    朋友说她的手机被被人刷后,有许多预装的软件问我能不能处理下,让我装个纯净版. 开机可以看到预装了许多软件,通常想要删除预装软件就必须Root,于是下载刷机精灵,360刷机大师,线刷包之类的软件Root ...

  6. VS2010 制作安装包,无法生成卸载快捷方式

    目前我出现了这个错误,原因是项目目录中包含了中文字符导致的,我改变了文件夹之后,就没问题了

  7. InstallShield安装包在Win7下权限问题的解决方案 (转载)

    转载:http://blog.csdn.net/wuzhengqing1/article/details/6570149 转载:http://blog.csdn.net/brikoff/article ...

  8. installshield安装包制作

    入门教程:http://blog.csdn.net/gaofang2009/article/details/5260065 入门教程:http://blog.csdn.net/plfl520/arti ...

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

    原文:installshield制作的安装包卸载时提示重启动的原因以及解决办法 有时候卸载installshield制作的安装包程序,卸载完会提示是否重启电脑以完成所有卸载,产生这个提示的常见原因有如 ...

随机推荐

  1. HDU 3466 Proud Merchants

    题目大意:现在给出商品,有三个参数,记为pi,qi,vi,vi是商品的在你心里价值,pi是商品的价格,qi是你要买商品的时候至少需要的钱然后求可得的最大价值. 单词积累:Merchants 商人  t ...

  2. Swift语言iOS开发:CALayer十则示例

    如你所知,我们在iOS应用中看到的都是视图(view),包括按钮视图.表视图.滑动条视图,还有可以容纳其他视图的父视图等. AD:[活动]Web和APP兼容性实战 Win10训练营免费报名 如你所知, ...

  3. NSOperationQueue和GCD的区别

    使用NSOperationQueue用来管理子类化的NSOperation对象,控制其线程并发数目.GCD和NSOperation都可以实现对线程的管理,区别是 NSOperation和NSOpera ...

  4. CSS 初始化 代码

    腾讯QQ官网 样式初始化 ;} body{font:12px"宋体","Arial Narrow",HELVETICA;background:#fff;-web ...

  5. QT自定义对象导入JavaScript脚本使用

    1.对象 项目属性要添加 QT += script自定义的对象头文件如下,实现正常就好,记得脚本里要调用的方法一定要定义在public slots:下,要不然调用时提示该对象没有*方法   #ifnd ...

  6. Python学习之路——迭代器、生成器、算法基础、正则

    一.迭代器: 迭代器是访问集合元素的一种方式. 迭代器对象是从集合的第一个元素开始访问,直到所有的元素被访问完结束. 迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退. 另外,迭代 ...

  7. 启动(Startup)

    Startup Chrome是一个单一的可执行程序.它清楚如何运行其它进程. 下面是chrome启动的概述: 1. 首先,chrome有一个平台相关的入口点:在windows上是wWinMain(): ...

  8. android listview需要呈现多个布局

    android listview需要呈现多个布局 之前的做法很笨 在getView()方法里面,不仅将viewHolder作为tag属性设置给convertView 还将当前的position作为ta ...

  9. JAVA GUI学习 - 窗体背景图片设置方法:重写paintComponent(Graphics g)方法

    public class BackgroundImage extends JFrame { public BackgroundImage() { this.setTitle("窗体背景图片设 ...

  10. BZOJ 1600: [Usaco2008 Oct]建造栅栏

    1600: [Usaco2008 Oct]建造栅栏 Time Limit: 5 Sec  Memory Limit: 64 MB Description 勤奋的Farmer John想要建造一个四面的 ...