在安装过程中,我需要在InstallExecuteSequence标签中配置的自定义操作中的一些额外文件asl =" 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
答案 0 :(得分:1)
更新:不确定为什么这只是刚刚投票。以下摘要是合理的建议。 也许是缺少样本?我将添加几个链接。也: 可能存在需要自定义操作来调整服务的情况 安装,但如果您设计服务,则很少需要 正确 - WiX还有一些结构可以帮助你进行常见的调整:
- Phil Wilson的样本来自他的书(其他主题的其他主题还有一个级别): https://github.com/Apress/def-guide-to-win-installer/tree/master/Chapter10。
- Phil Wilson 再次使用Installing Services with Visual Studio sample。
- Chris Painter 和他的IsWiX教程:https://github.com/iswix-llc/iswix-tutorials。
通常无需使用自定义操作来安装和配置服务。由于其完全回滚支持和广泛的功能集,内置的MSI功能非常优越。使用自定义操作会使事情变得非常复杂,增加了不必要的风险,并且在回滚期间几乎总是会失败,从而使系统处于无效状态。
MSI表有一个学习曲线 - 有很多选项,但根据我的经验,只有几个设置捆绑在一起。通常在安装和停止期间停止和重新启动以及卸载时删除和删除。在过去,我添加了自定义操作只是为了等待服务正常关闭,但这只是一个等待自定义操作,并且不会更改系统。对于我不知道的这种场景,可能有新的Wix功能。
MSI表ServiceInstall和ServiceControl用于安装服务。在Wix中,您处理的是等效的XML元素:Wix ServiceInstall和Wix ServiceControl以及较新的Wix ServiceConfig和Wix ServiceConfigFailureActions。
答案 1 :(得分:0)
您似乎设置的方式存在许多问题:
RemoveFile table (Wix equivalent)将允许您在安装,卸载或两者中删除文件。您不应删除属于关联的Windows Installer组件的文件,因为自我修复可能会将它们放回原位。
我相信,你需要的是: