我不知道为什么,但是当我尝试将文件从安装目录复制到时system32,虽然在Inno Setup中读取为成功安装,但它没有这样做。这是我的代码:
[Files]
; specifies what files will be included in the installation
Source: "{src}\..\elt.properties"; DestDir: "C:\elt"; Flags: ignoreversion; BeforeInstall: SetProgressMax(10);
Source: "{src}\..\msvcr120.dll"; DestDir: {sys}; Flags: onlyifdoesntexist;
Run Code Online (Sandbox Code Playgroud)
我还想包括我的日志输出,因为我觉得很奇怪该文件的时间如此之短,我正在2016年7月8日上午11点左右编写此文件
[11:49:36.526] -- File entry --
[11:49:36.528] Dest filename: C:\Windows\system32\msvcr120.dll
[11:49:36.529] Time stamp of our file: 2013-10-04 23:58:24.000
[11:49:36.530] Installing the file.
[11:49:36.566] Successfully installed the file.
Run Code Online (Sandbox Code Playgroud)
默认情况下,操作系统(32位)将{sys}(system32)重定向到(){win}\SysWOW64Inno Setup。
如果您的DLL是32位的,则实际上需要重定向。该SysWOW64是System32等同于Windows 32位仿真在Windows 64位。另请参阅Inno Setup以32位模式安装到SysWOW64。
如果您不希望重定向(因为您的DLL是64位的),则可以使用64bit标志覆盖重定向:
Source: "..."; DestDir: "{sys}"; Flags: 64bit
Run Code Online (Sandbox Code Playgroud)
64bit:
{sys}当在Source和DestDir参数中使用... 时,导致常量映射到64位系统目录。这是64位模式安装中的默认行为。
或启用64位模式安装。
[Setup]
ArchitecturesInstallIn64BitMode=x64 ia64
Run Code Online (Sandbox Code Playgroud)
在64位模式下:
{sys}当在[目录],[文件],[InstallDelete],[Run],[UninstallDelete]和[UninstallRun]节中使用该常量时,该常量返回的System32路径默认情况下映射到64位系统目录。这是因为在这些部分访问文件/目录时,安装/卸载会暂时禁用WOW64文件系统重定向。在其他地方,与{sys}32位进程中的正常情况一样,System32 映射到32位系统目录。