Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WiX/MSI:如何在Windows XP上更新已注册的shell扩展_Wix_Windows Installer - Fatal编程技术网

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

WiX/MSI:如何在Windows XP上更新已注册的shell扩展,wix,windows-installer,Wix,Windows Installer,我有一个注册Windows资源管理器外壳扩展的应用程序 应用程序的安装程序是使用WIX开发的 我在安装新产品之前先删除旧产品: RemoveExistingProducts Before="InstallInitialize" 问题是,这在Windows XP上失败。这并不奇怪,因为Windows资源管理器正在使用该扩展。当然,Windows资源管理器通常没有默认窗口,因此“正在使用的文件”对话框也不会显示 所以我的大问题是:使用WiX更新Windows资源管理器外壳扩展的最佳方法是什么 有比

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

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

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

RemoveExistingProducts Before="InstallInitialize"
问题是,这在Windows XP上失败。这并不奇怪,因为Windows资源管理器正在使用该扩展。当然,Windows资源管理器通常没有默认窗口,因此“正在使用的文件”对话框也不会显示

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

有比这更好的解决办法吗

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


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

InstallFinalize
之前立即安排
RemoveExistingProducts
,在
RemoveExistingProducts
之前立即安排
InstallExecute
操作。这不仅效率更高,还可以替换文件(如果没有硬锁定)并计划在重新启动时删除旧文件,或者计划在重新启动后复制新文件(都使用PendingFileRename)