WiX / MSI:如何在Windows XP上更新已注册的外壳扩展

时间:2013-07-18 09:07:00

标签: wix windows-installer

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

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

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

RemoveExistingProducts Before="InstallInitialize"

问题是在Windows XP上失败了。由于Windows资源管理器正在使用该扩展,因此并不令人惊讶。当然,经常发生Windows资源管理器没有默认窗口,因此“使用中的文件”对话框也不会显示。

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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