转载:http://blog.csdn.net/zztoll/article/details/54018615#comments

先说下缘由,我在用InstallShield 2015 Premier新建工程时选的Basic MSI Project,且程序在运行中会在安装目录下生成数个文件,但卸载程序时,因为安装目录下有新生成的文件的原因,安装目录及其中的新生成文件会残留,而导致卸载不完全

当然如果你新建工程时是选用的InstallScript MSI Project,可参见此文做法:http://www.hiadmin.org/2010/04/13/installshield-deletedir/

下面说下在Basic MSI Project下的操作步骤

1.进到Behavio and
Logic->InstallScript,在Files上点右键,选New Script
File,会在Files下生成一个Setup.rul,点Setup.rul可看到脚本内容,并看到已生成一个默认的MyFunction的函数,将此函数更名为你自己的函数名称,如DeleteFiles

2.在函数体加入删除文件或文件夹的代码,如

function DeleteFiles (hMSI)
// To Do: Declare local variables.
begin DeleteDir (TARGETDIR^"\config",ALLCONTENTS);
DeleteFile(TARGETDIR^"\my.cfg"); end;

3.进到Custom Actions and Sequences,在Custom Actions上点右键,选New
InstallScript,会在Custom Actions下面生成NewCustomAction1项,

点NewCustomAction1在Function Name中选DeleteFiles,在 Install Exec Sequence中选After
ISUnSelfRegisterFiles

因为是Basic MSI Project工程,无法限定此函数在指定的的UnInstalling事件中执行,所以此函数会在安装时和卸载时执行两次,
所以选择DeleteFiles执行的时机尤为重要,经我验证,选在After ISUnSelfRegisterFiles,不会造成误删文件

也顺便吐槽一下InstallShield
- 选择Basic MSI Project工程却无法在写脚本时关联事件,
-
选择InstallScript Project工程可以关联事件却没了预设的对话框
- 选择 InstallScript MSI
Project工程可关联事件,有预设对话框却无法方便的更改对话框的执行顺序。

如果新建的每个工程都可以实现同样的操作,而新建工程时列出的模板只是替用户配置了可操作的选项,工程建立后可随意增加配置或减少配置,这样不是更方便用户使用吗?

4.补充一点

上面是转载别人的,可我在 Install Exec Sequence中没有找打After ISUnSelfRegisterFiles这个选项,第一次用默认的First Action,发现程序运行过程中生成的文件删除不了;所以选了一个 After UnregisterExtensionInfo 进行测试,发现可以删除运行中生成的文件。在此记录一下。

InstallShield 2015 Premier的Basic MSI Project如何在卸载时删除残留的文件 (转)的更多相关文章

  1. InstallShield Basic MSI工程常见问题解答[转]

    1.  问题描述:采用何种安装模式?实现方法:如果对用户界面等自定义要求不高的话,建议用Basic Msi Project,否则用InstallScript MSI Project. 2.  问题描述 ...

  2. Basic MSI silent install

    Articles and post about silent install for Basic MSI, InstallScript, InstallScript MSI: Silent-mode ...

  3. InstallShieldPro 2015中Basic MSI工程类型如何调用InstallScript脚本

    转载:http://blog.csdn.net/mengzhishen/article/details/8953901 这是一个Basic MSI基础知识. A. 首先在Installation De ...

  4. NEWS - InstallShield 2015 正式发布

    如果您需要为Windows®应用程序创建安装,InstallShield®便是您的最佳解决方案.在为桌面.服务器.云.Web和虚拟环境构建可靠的Windows Installer (MSI)和Inst ...

  5. InstallShield 2015 Limited Edition 打包教程

    InstallShield 2015 Limited Edition 打包教程 右键解决方案,新增项目,选择其他项目类型,安装和部署. InstallShield2015可以免费使用,但需要下载.安装 ...

  6. 让InstallShield 2015 Limited Edition for Visual Studio 2015生成的setup.exe双击时以管理员权限运行

    转载:http://blog.csdn.net/zztoll/article/details/52096700 如题,如何让InstallShield 2015 Limited Edition for ...

  7. InstallShield 2015 安装 在vs2015

     网上很少注册InstallShield 2015  的方法,而且很多以前版本的注册也很笼统,今天我就说说几个细节上的问题.相信大家看了会有帮助,有问题回帖,我会及时跟上, 先说说我遇到的问题 安装: ...

  8. InstallShield 2015 LimitedEdition VS2012 运行bat文件

    转载:http://www.cnblogs.com/fengwenit/p/4271150.html  运行bat文件 网上很多介绍如何运行bat的方法,但我这个是limted 版本,不适用. 1. ...

  9. 应用InstallShield 2015打包软件打包C#程序

    大家都明白,程序员写出的程序与用户直接使用的程序之间还有一个简单的环节,就是打包.今天就简单介绍下用InstallShield 2015打包工具进行程序的打包, 有兴趣的可以看看! 首先前面安装打包工 ...

随机推荐

  1. 小程序 - API 踩坑记录(更新中...)

    API 小程序API结构导览图: 声明: 请尊重博客园原创精神,转载或使用图片请注明: 博主:xing.org1^ 出处:http://www.cnblogs.com/padding1015/

  2. LeetCode——Pascal's Triangle II

    Description: Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3 ...

  3. jquery类似方法的比较(二)

    (1)append()&appendTo()&prepend()$prependTo() (2)after()&before()&insertAfter()&i ...

  4. Android Runtime.getRuntime().exec

    try { // Executes the command. Process process = Runtime.getRuntime().exec(cmd); // NOTE: You can wr ...

  5. 2012Noip提高组Day1 T3 开车旅行

    题目描述 小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的 城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为 Hi,城市 ...

  6. windows下的mysql迁移到linux下

    最近做毕业设计,需要把windows下的mysql移植到linux下 曾经有过在window下移植mysql数据库的经验,只需要把msql的数据文件复制到另一台安装mysql的机器的数据存放位置,然后 ...

  7. 【Android】Android Theme的设置

    在AndroidManifest.xml文件中,可以对每一个Activity设置android:theme theme的设置 可以设置为系统自带的格式,也可以自定义格式. A: 系统自带格式 @and ...

  8. ssh-keygen 不是内部或外部命令解决办法!

    在使用 git 的远程仓库的时候,生成秘钥的使用,会遇到ssh-keygen不是内部命令也不是外部命令的问题: 具体解决: 第一步:找到:Git/usr/bin目录下的ssh-keygen.exe(一 ...

  9. linux .zip 解压命令集

    zip: 压缩: zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>] ...

  10. 170713、springboot编程之多数据源切换

    我们在开发过程中可能需要用到多个数据源,我们有一个项目(MySQL)就是和别的项目(SQL Server)混合使用了.其中SQL Server是别的公司开发的,有些基本数据需要从他们平台进行调取,那么 ...