InstallShield 2015 Premier的Basic MSI Project如何在卸载时删除残留的文件

先说下缘由,我的程序在运行时会在安装目录下生成数个文件,但卸载程序时,会卸载不完全,安装目录及其中的新生成文件会残留。
我用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工程可关联事件,有预设对话框却无法方便的更改对话框的执行顺序。
       如果新建的每个工程都可以实现同样的操作,而新建工程时列出的模板只是替用户配置了可操作的选项,工程建立后可随意增加配置或减少配置,这样不是更方便用户使用吗?


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值