0

我正在 NSIS 上编写一个注册 shell 扩展的安装程序。

在卸载和升级时,由于 explorer.exe 锁定旧扩展,因此无法删除/覆盖旧扩展,并且排除了杀死 - 重新启动进程。

因此,我使用不同的名称提取新扩展名,将旧扩展名标记为删除(卸载/升级)并通过PendingFileRenameOperations注册表项将新扩展名重命名为其原始名称(仅限升级)。到目前为止,这工作正常。

问题是,我必须在启动时注册新的 shell 组件,因为PendingFileRenameOperations仅在重新启动时有效。有没有办法在重新启动后安排 regsvr32 操作?

我不能依靠在RunOnce上执行 .bat 来做到这一点,因为注销/登录也会触发RunOnce操作。

提前致谢。

4

1 回答 1

0

我发现解决此问题的最简单方法是创建一个删除所有相关注册表项和值的注册表脚本。在(卸载)安装程序中运行注册表脚本,并为 COM DLL 安排“启动时删除”。可能有更好的方法来做到这一点,但我还没有找到它。

于 2011-06-22T19:21:26.087 回答