使用Wix安装后删除目录和文件

在安装过程中,我需要在InstallExecuteSequence标记中配置的自定义操作中的一些额外文件asl After =“InstallFinalize”.

使用文件后,我希望删除文件(和目录).

我怎样才能做到这一点?

我的InstallExecuteSequence看起来像这样:

  <InstallExecuteSequence>
     <Custom Action="UNINSTALLSERVICE"
             After="InstallInitialize">REMOVE="ALL"</Custom>
     <Custom Action="CLEANUP"
             Before="RemoveFiles">REMOVE="ALL"</Custom>
     <Custom Action="INSTALLSERVICE"
             After="InstallFinalize" />
  </InstallExecuteSequence>

如果我创建自定义操作

ExeCommand="cmd /C RD "somedir" /s /q"

并将其添加到序列中,如下所示:

 <Custom Action="CLEANTEMP" After="InstallFinalize" />

我收到了构建错误:

Error   596 ICE77: CLEANCONFIG is a in-script custom action.  
It must be sequenced in between the InstallInitialize action 
and the InstallFinalize action in the InstallExecuteSequence table

最佳答案 通常无需使用自定义操作来安装和配置服务.由于其完全回滚支持和广泛的功能集,内置的MSI功能非常优越.使用自定义操作会使事情变得非常复杂,增加了不必要的风险,并且在回滚期间几乎总是会失败,从而使系统处于无效状态.

MSI表有一个学习曲线 – 有很多选项,但根据我的经验,只有几个设置组合在一起.通常在安装和停止期间停止和重新启动以及卸载时删除和删除.在过去,我添加了自定义操作,只是等待服务正常关闭,但这只是一个等待自定义操作,并不会更改系统.对于我不知道的这种场景,可能有新的Wix功能.

MSI表ServiceInstallServiceControl用于安装服务.在Wix中,您处理等效的XML元素:Wix ServiceInstallWix ServiceControl以及较新的Wix ServiceConfigWix ServiceConfigFailureActions.

点赞