6

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

如果文件已经存在,文件没有被复制的原因可能是什么?它是在 VS2008 和 .NET 2.0 中构建的——新的 DLL 也有更新的日期和大小差异。

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

[编辑] 通过在构建解决方案时从 Release 文件夹中提取 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
4

1 回答 1

7

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

于 2012-12-07T13:58:02.253 回答