安装到{sys}的文件/ DLL没有出现在C:\ Windows \ system32中

Dan*_*t.A 1 inno-setup

我不知道为什么,但是当我尝试将文件从安装目录复制到时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)

Mar*_*ryl 5

默认情况下,操作系统(32位){sys}system32重定向到(){win}\SysWOW64Inno Setup。

如果您的DLL是32位的,则实际上需要重定向。该SysWOW64System32等同于Windows 32位仿真在Windows 64位。另请参阅Inno Setup以32位模式安装到SysWOW64


如果您不希望重定向(因为您的DLL是64位的),则可以使用64bit标志覆盖重定向:

Source: "..."; DestDir: "{sys}"; Flags: 64bit 
Run Code Online (Sandbox Code Playgroud)

64bit{sys}当在SourceDestDir参数中使用... 时,导致常量映射到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位系统目录。