在安装过程中,我需要在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表ServiceInstall和ServiceControl用于安装服务.在Wix中,您处理等效的XML元素:Wix ServiceInstall和Wix ServiceControl以及较新的Wix ServiceConfig和Wix ServiceConfigFailureActions.