WiX/MSI:如何在Windows XP上更新已注册的shell扩展
我有一个注册Windows资源管理器外壳扩展的应用程序 应用程序的安装程序是使用WIX开发的 我在安装新产品之前先删除旧产品:WiX/MSI:如何在Windows XP上更新已注册的shell扩展,wix,windows-installer,Wix,Windows Installer,我有一个注册Windows资源管理器外壳扩展的应用程序 应用程序的安装程序是使用WIX开发的 我在安装新产品之前先删除旧产品: RemoveExistingProducts Before="InstallInitialize" 问题是,这在Windows XP上失败。这并不奇怪,因为Windows资源管理器正在使用该扩展。当然,Windows资源管理器通常没有默认窗口,因此“正在使用的文件”对话框也不会显示 所以我的大问题是:使用WiX更新Windows资源管理器外壳扩展的最佳方法是什么 有比
RemoveExistingProducts Before="InstallInitialize"
问题是,这在Windows XP上失败。这并不奇怪,因为Windows资源管理器正在使用该扩展。当然,Windows资源管理器通常没有默认窗口,因此“正在使用的文件”对话框也不会显示
所以我的大问题是:使用WiX更新Windows资源管理器外壳扩展的最佳方法是什么
有比这更好的解决办法吗
一个想法:我不久前写了一个NSIS安装程序,通过重命名旧的扩展解决了一个类似的问题。但这在WiX是不可能的,是吗
注意:我要求的是Windows XP,因为在Vista或更高版本上,重启管理器做得很好。在
InstallFinalize
之前立即安排RemoveExistingProducts
,在RemoveExistingProducts
之前立即安排InstallExecute
操作。这不仅效率更高,还可以替换文件(如果没有硬锁定)并计划在重新启动时删除旧文件,或者计划在重新启动后复制新文件(都使用PendingFileRename)