2010-09-08 138 views
0

我的安装程序在覆盖一个DLL失败时给出ERROR访问拒绝对话框,有时会使用 锁定&。更新dll文件给出访问被拒绝/错误5

什么推荐的程序做这个..

我能以某种方式使INNO比较如果甚至是必要的覆盖此DLL(大小是否匹配?)

回答

1

InnoSetup自动将文件进行比较,看它是否需要通过查看文件中的版本资源来取代。

您应该将RestartReplace标志添加到您的DLL(以及可能在内存/锁定中的任何其他文件)的[Files]条目中。从InnoSetup文档:

restartreplace

当现有文件需要被 替换,并且它是在使用(锁定)由 另一个正在运行的过程中,安装程序将通过 默认显示错误消息。这 标志告诉安装程序,而不是登记 下次要更换的文件 系统重新启动(通过调用 MoveFileEx或通过在 WININIT.INI中创建一个条目)。发生这种情况时,将会提示 用户在 安装过程结束时重新启动它们的 计算机。

为了保持与Windows 95/98/Me的兼容性,长名称不应该是 用于具有此标志的条目。仅支持 “8.3”文件名。 (Windows NT平台没有这个 限制。)

注:此标志 Windows NT平台上没有任何影响,如果用户不 没有管理权限。 因此,使用此标志时,建议您将 特权 特权所需的[设置]部分 指令的默认设置为 admin。

+0

它似乎inno无法比较DLL使用时? – Tom 2010-09-08 11:10:42

+0

实际上,我认为它在尝试替换之前比较文件。当它试图替换它并发现它被锁定时,返回错误。确保你的DLL有一个版本资源,并且新版本的版本高于旧版本。 – mirtheil 2010-09-08 12:14:45