WiX/MSI : How to update an registered shell extension on Windows XP

标签 wix windows-installer

我有一个注册 Windows 资源管理器 shell 扩展的应用程序。

该应用程序的安装程序是使用 WIX 开发的。

我在安装新产品之前删除旧产品:

RemoveExistingProducts Before="InstallInitialize"

问题是这在 Windows XP 上失败了。不足为奇,因为 Windows 资源管理器正在使用该扩展。当然,Windows 资源管理器没有默认窗口的情况经常发生,因此使用中的文件对话框也不会显示。

所以我的大问题是:使用 WiX 更新 Windows 资源管理器 shell 扩展的最佳方法是什么?

有没有比 ForceReboot 更好的解决方案?

一个想法:我不久前写了一个 NSIS 安装程序,通过重命名旧扩展解决了一个类似的问题。但这对 WiX 来说是不可能的,是吗?

注意:我要求使用 Windows XP,因为在 Vista 或更高版本上,重启管理器做得很好。

最佳答案

附表 RemoveExistingProducts紧接在 InstallFinalize 之前, 和 InstallExecute紧接之前的行动 RemoveExistingProducts .这不仅更有效,它还能够替换文件(如果没有硬锁定)并安排在重新启动时删除旧文件,或安排新文件在重新启动后复制旧文件(均使用 PendingFileRename) .

关于WiX/MSI : How to update an registered shell extension on Windows XP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17719115/

相关文章:

wix - 如何从 Wix 安装程序中的命令行参数定义安装文件夹

windows-installer - Msiexec REINSTALL=ALL REINSTALLMODE=vamus 不重新安装任何东西

wix - 新的 IsWiX 安装项目无法构建 - 未定义的预处理器变量

wix - 如何获取 WIX 3.6 中编辑框的上下文菜单?

windows-installer - 将 MSIUSEREALADMINDETECTION 添加到 MSI 的脚本

windows-installer - DISABLEADVTSHORTCUTS=1 禁用所有快捷方式

wix - 为什么这种静默启动在 WIX 中不起作用?

visual-studio-2012 - 是否可以使用 Visual Studio 2012 编译器针对 Windows Installer 3.0?

wix - 启动条件以确保在 64 位系统上使用 64 位安装程序

安装前是否存在WiX检查文件