需要在inno安装程序中覆盖DLL - 但文件没有被替换

时间:2012-12-07 13:49:27

标签: windows dll inno-setup

我正在使用Inno安装程序为我的VB.net应用程序安装补丁更新,我必须替换DLL文件和几个javascript / html文件进行更新。但是,DLL没有得到更新(它在C:\ program files ...中) - 即使在没有UAC的XP系统上它也没有被替换,但是当我手动删除DLL并重新运行补丁时,文件被复制。它不是只读的,XP案例中不涉及UAC /管理员权限。

如果文件已经存在,那么文件不会被复制的原因是什么?它内置于VS2008和.NET 2.0中 - 新的DLL也具有更新的日期和大小差异。

有没有办法解决Vista / Win7 / 8上的UAC写访问问题?我想补丁永远不会成功用UAC替换这些系统上的文件。告诉我们的用户群将其关闭显然不是一种选择。

[编辑]通过在构建解决方案时从Release文件夹中提取dll程序集,将dll程序集打包到Visual Studio中的setup.exe中。 inno setup iss [File]部分包含:

[Files]
Source: C:\Visual Studio 2005\Projects\Setup5\Setup5\Debug\setup.exe; DestDir: {app}
Source: C:\Visual Studio 2005\Projects\Setup5\Setup5\Debug\interact.msi; DestDir: {app}
[Run]
Filename: {app}\setup.exe; Flags: runmaximized

1 个答案:

答案 0 :(得分:7)

DLL是否有版本资源?新DLL是否比旧版本更高?默认情况下,InnoSetup使用版本资源来确定是否应替换文件 另一个选择是您可以在ignoreversion部分添加[Files]标记以始终替换该文件。