安装后使用Wix删除目录和文件
在安装过程中,我需要在InstallExecuteSequence标记asl After=“InstallFinalize”中配置自定义操作中的一些额外文件 使用完这些文件后,我希望删除这些文件(和目录) 我该怎么做 我的InstallExecuteSequence如下所示:安装后使用Wix删除目录和文件,wix,installation,windows-installer,Wix,Installation,Windows Installer,在安装过程中,我需要在InstallExecuteSequence标记asl After=“InstallFinalize”中配置自定义操作中的一些额外文件 使用完这些文件后,我希望删除这些文件(和目录) 我该怎么做 我的InstallExecuteSequence如下所示: <InstallExecuteSequence> <Custom Action="UNINSTALLSERVICE" After="InstallInitializ
<InstallExecuteSequence>
<Custom Action="UNINSTALLSERVICE"
After="InstallInitialize">REMOVE="ALL"</Custom>
<Custom Action="CLEANUP"
Before="RemoveFiles">REMOVE="ALL"</Custom>
<Custom Action="INSTALLSERVICE"
After="InstallFinalize" />
</InstallExecuteSequence>
<Custom Action="CLEANTEMP" After="InstallFinalize" />
并将其添加到序列中,如下所示:
<InstallExecuteSequence>
<Custom Action="UNINSTALLSERVICE"
After="InstallInitialize">REMOVE="ALL"</Custom>
<Custom Action="CLEANUP"
Before="RemoveFiles">REMOVE="ALL"</Custom>
<Custom Action="INSTALLSERVICE"
After="InstallFinalize" />
</InstallExecuteSequence>
<Custom Action="CLEANTEMP" After="InstallFinalize" />
更新:不知道为什么刚才投票否决了这一点。下面的总结是合理的建议。
也许是因为缺少样品?我将添加几个链接。也:
在某些情况下,需要自定义操作来调整服务
安装,但如果您设计服务,则很少需要安装
正确-WiX还有一些结构可以帮助您进行常见的调整:
- 菲尔·威尔逊的书中的样本(其他主题的更多样本更上一层):
- 菲尔·威尔逊又一次和他的朋友见面了
- Chris Painter和他的IsWiX教程:
通常不需要使用自定义操作来安装和配置服务。由于其全面的回滚支持和广泛的功能集,用于安装和配置服务的内置MSI功能非常优越。使用自定义操作会使事情变得非常复杂,增加不必要的风险,并且在回滚过程中几乎总是会失败,使系统处于无效状态 MSI表格有一个学习曲线——有很多选择,但根据我的经验,只有少数几个设置组合在一起才有意义。通常在安装期间停止和重新启动,卸载时停止和删除,以及卸载时的变体。在过去,我添加了自定义操作只是为了在服务正常关闭时等待,但这只是一个等待自定义操作,不会改变系统。对于这种情况,可能会有一些新的Wix特性,我并不知道
MSI表和用于安装服务。在Wix中,您需要处理等价的XML元素:以及更新的和。您设置东西的方式似乎有很多问题:
- InstallFinalize之后的自定义操作不会更改系统,并且它们将无法使用管理员权限运行。此外,您已经将自定义操作设置为延迟模式,并且这仅在InstallInitialize和InstallFinalize之间允许-这就是您提到的错误消息的内容
- 有些人在InstallFinalize之后使用即时模式自定义操作。根据定义,这始终是一个错误,并且仅当整个安装程序以管理员权限运行时才起作用。即使如此,当与SCCM或公司世界中的其他软件分发系统一起分发时,它也常常会失败
- 在安装过程中使用临时文件通常是不可取的。正如我在上面所评论的,这是一种“部署气味”。有些用途还可以,例如显示徽标和许可协议,但这些也倾向于编译到设置中并自动删除
- 在安装过程中运行批处理文件是非常不可靠和容易出错的,如果安装过程中安装失败,可能会对系统进行无法回滚的更改
Glytzhof,我的问题不是关于安装/卸载服务,而是关于在安装过程中删除一些我需要的文件(不需要深入了解我为什么需要它们,我只是这样做)。我只想在安装过程中删除一些需要的文件,但不是在安装之后。安装过程中的临时文件是一种“部署气味”。这些文件在做什么?可能有更好的方法对您更简单。如果您不知道,WiX会创建一个Windows安装程序包。(实际安装中不涉及WiX。)您应该研究Windows Installer的设计原则。临时文件用于根据安装它们的服务器配置配置文件。该安装程序用于我们的DTAP环境,用于在具有不同配置文件的不同计算机上自动安装。设置中包括DTAP环境中所有服务器的所有配置文件。根据服务器名,有些是使用的,有些不是。在安装结束时,我不再需要所有配置文件,并希望删除目录。我并不是说我的解决方案是最好的解决方案,但是(很抱歉这么说),我不是在问我做的是否有错(在你看来,我这样做完全是愚蠢的),我只是问如何在安装后删除包含内容的目录。谢谢Glytzhkof。我完全理解你的意思。我完全同意你的看法。所以我想对Wix的所有用户说,不要像我一样使用这些设置。但在我的例子中,设置是DTAP环境的一部分。并且是在我们的域内运行的全自动服务的一部分。这些设置不发送给客户等。它们仅由我维护。并对安装进行全面监控。所以一方面我同意你的观点,另一方面,我想在完成安装后删除一些文件。