![](/img/trans.png)
[英]MSI (created from WIX)- Uninstall application is not removing the root installation folder
[英]MSI generated through WIX does not delete application root folder on uninstall
我无法让MSI删除我的根应用程序文件夹。 除根文件夹外,所有文件在卸载时均已正确删除。 MSI由WIX Toolset生成。 奇怪的是,这仅发生在我们的构建服务器发出的MSI上。 在我的本地计算机上生成的MSI可以正常工作,并且可以正确清理应用程序文件夹。 我以详细模式运行了卸载,但是找不到任何令人震惊的东西。
过去,甚至我的本地计算机MSI都不起作用。 但是我在.wixproj中添加了KeepEmptyDirectories =“ true” GenerateGuidsNow =“ true”-如果这是有用的信息。 如何解决此问题? 我应该寻找什么可能的危险信号?
我会做几件事:
对组件规则及其含义有深入的了解。 (当您破坏它们时出了什么问题。)
检查卸载日志文件,以获取有关Windows Installer为什么选择不删除文件夹的线索。
在干净的机器上测试。 (VM快照是最简单的。)
尽管有些人会很幸运,但我不建议使用任何形式的动态wxs代码生成,但动态ProductCode除外以支持主要升级。 这包括从组件的动态向导到组件收集(也称为动态文件链接)的所有内容。 这些往往最终会破坏组件规则,并产生副作用,包括您在此处看到的内容。
就是说,我知道手工编写WiX XML的痛苦,并且我在CodePlex上有一个名为IsWiX的开源项目。 它由项目模板(脚手架)和图形设计器组成,可以极大地帮助创作和维护WiX项目。 然后,您可以根据需要手动编辑XML,以声明IsWiX尚未处理的内容。
听起来文件夹本身有锁。 您是否正在运行要在卸载过程中停止的任何服务? 您是否正在运行任何自定义操作,将其作为操作的一部分从根文件夹加载文件? 您是否在根目录ACL上设置了任何自定义权限? 根文件夹是IIS文件夹吗? 您是否在卸载后尝试重新启动以查看文件夹是否仍然存在?
显而易见的第一步是要确保服务在卸载之前被删除之前正确停止。 在不同的盒子上,此行为可能有所不同(但听起来您在同一个盒子上进行测试)。 看到这个线程: http : //forum.installsite.net/index.php?showtopic=16458
接下来, 尝试一些版本比较的MSI文件本身和安装他们提供/文件夹,以验证这可能是不同的(如果有的话)。
尝试在两个不同的MSI文件上使用Wix工具包中的 dark.exe 。 这会将它们解码为Wix XML,然后使用比较工具(例如Beyond Compare或类似的磁盘差异工具)来确定它们之间是否存在任何重大差异。
来自http://www.scootersoftware.com/的 Beyond Compare –是一个出色的工具(显然没有从属关系)。 我一直在使用它,它的用处是立即的,并且所有使用文件的专业人员每天都会从中受益。 试试吧 。 看截图 。
另外,在已安装的文件夹上运行文件差异以查看是否存在明显差异。 要特别注意配置文件,并进行完整的二进制级别差异(不仅仅是CRC /哈希)。
从HKCU和HKLM 导出注册表配置单元 (仅针对您的应用程序,而不是整个注册表),并在状态之前和之后进行比较(4个导出)。
至于机器之间的差异-听起来您正在使用测试虚拟机,但是我只想补充一点,即使其他条件相同,盒子上Visual Studio的存在也会影响事物。 除此之外,硬件,网络和防火墙配置听起来都一样,并且您正在测试盒上进行测试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.