gpt4 book ai didi

inno-setup - 使用 Inno Setup 更新 Windows 资源管理器外壳扩展

转载 作者:行者123 更新时间:2023-12-03 12:41:36 28 4
gpt4 key购买 nike

我有一个程序产品,它另外将 Shell 扩展安装到 Windows 资源管理器。它用 C# 编写并使用 .NET Framework v4.0。 Shell 扩展在安装过程中使用 regasm.exe 由 Inno Setup 安装。一切正常,直到我想安装应用程序的更新版本。问题是我无法更新 shell 扩展 dll,因为它已加载到资源管理器的内存中。在安装 Inno Setup 之前向我显示以下消息

enter image description here

它说安装程序需要终止 Windows 资源管理器,因为它使用了应该由安装程序更新的文件。
它终止了资源管理器进程,但不会再次启动它。这是我的第一个问题。

其实我不想强制用户关闭资源管理器。但我不知道如何从资源管理器的内存中卸载托管 shell dll。如果通过 regasm.exe dll 卸载它仍然保留在内存中。事实上,我什至找不到发生这种检查的地方,因为我收到了已经制作好的安装源。

用于 Inno Setup 的 Files-In-Use (IssProc.dll) 加载项没有帮助,因为一旦我通过此加载项终止 Windows 资源管理器,资源管理器会立即重新启动。

我怎么能解决这个问题?如何以更好的用户体验更新 shell 扩展 dll?
也许有人可以给我一个提示,检查正在使用的文件的代码放在哪里?

O 和顺便说一句,我使用的是 Windows 7 x64。

最佳答案

使用 restartreplace 在您的文件条目处标记。从引用:

When an existing file needs to be replaced, and it is in use (locked) by another running process, Setup will by default display an error message. This flag tells Setup to instead register the file to be replaced the next time the system is restarted (by calling MoveFileEx or by creating an entry in WININIT.INI). When this happens, the user will be prompted to restart their computer at the end of the installation process.



因此,使用此标志不会导致向导要求终止使用该文件的应用程序,而是将文件更新安排到下次重新启动并提示用户在安装结束时重新启动计算机,我认为这是非常用户友好和常用的.

关于inno-setup - 使用 Inno Setup 更新 Windows 资源管理器外壳扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11585531/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com