我一直在关注这个问题的建议。
How to add a WiX custom action that happens only on uninstall (via MSI)?
我有一个可执行文件在InstallFinalize之后作为自定义操作运行,我打算清除所有文件和文件夹。我只是想编写一些标准的删除逻辑,但我坚持认为Rob Mensching认为Windows安装程序应该处理这个问题,因为有人会在卸载过程中保释。
“创建一个CustomAction,将临时行添加到RemoveFiles表”
我正在寻找更多相关信息。我不太确定如何在c ++中实现这一点,而且我的搜索并没有发现很多。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa371201(v=vs.85).aspx
由于 尼尔
答案 0 :(得分:3)
粗略地说,您必须按此顺序使用以下功能:
MsiDatabaseOpenView
- (输入)句柄是您在自定义操作函数中获得的句柄MsiCreateRecord
- 创建一个包含SQL内容的记录
MsiRecord*
- 准备记录的一组功能MsiViewExecute
将新记录插入您喜欢的任何表格中...... MsiCloseHandle
- 使用第一步的句柄和记录句柄(来自MsiCreateRecord
)详细解释了所有内容over at MSDN。但是,请特别注意“自定义操作中不使用的功能”部分。
MsiViewExecute
的文档还解释了SQL查询的外观。要了解它们,您可能需要使用属于Windows Installer SDK的.vbs
脚本之一。
答案 1 :(得分:3)
如果您使用WiX创建安装包,请考虑使用RemoveFolderEx
元素。它可以满足您的需求,您无需亲自编写代码。
阅读Tactical directory nukes以获取如何使用它的示例。
如果您仍想自己实现它,可以从this blog post获得灵感,这里有用于在VBScript中执行此操作的代码。