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

inno-setup – 使用Inno Setup更新Windows资源管理器外壳扩展,第1张

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

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

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

Inno安装程序的文件使用(Issproc.dll)加载项没有帮助,因为一旦我通过此加载项终止windows资源管理器,资源管理器立即重新启动.

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

O和BTW我使用的是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资源管理器外壳扩展全部内容,希望文章能够帮你解决inno-setup – 使用Inno Setup更新Windows资源管理器外壳扩展所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1237474.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存