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

2024-04-16

我不知道为什么,但是当我尝试将文件从安装目录复制到system32,尽管在 Inno Setup 中显示安装成功,但它未能执行此操作。这是我的代码:

[Files]
; specifies what files will be included in the installation
Source: "{src}\..\elt.properties"; DestDir: "C:\elt"; Flags: ignoreversion
Source: "{src}\..\msvcr120.dll"; DestDir: {sys}; Flags: onlyifdoesntexist; 

我还想包含我的日志输出,因为我觉得文件的时间如此之晚很奇怪,我是在 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.

默认情况下{sys} (system32) 被重定向 https://learn.microsoft.com/en-us/windows/win32/winprog64/file-system-redirector to {win}\SysWOW64由 32 位应用程序的操作系统(例如 Inno Setup)执行。

如果您的 DLL(或者更确切地说应用程序)是 32 位的,您实际上需要重定向。这SysWOW64 is the System32相当于 Windows 64 位上的 Windows 32 位模拟。也可以看看Inno Setup 以 32 位模式安装到 SysWOW64 https://stackoverflow.com/q/29583694/850848.


如果您不希望重定向(因为您的 DLL/应用程序是 64 位),您可以使用以下命令覆盖重定向64bit flag https://jrsoftware.org/ishelp/index.php?topic=filessection:

Source: "..."; DestDir: "{sys}"; Flags: 64bit 

64bit: 导致{sys}用于映射到 64 位系统目录的常量Source and DestDir参数,...这是默认行为64位模式 https://jrsoftware.org/ishelp/index.php?topic=32vs64bitinstalls安装。


或启用64位模式 https://jrsoftware.org/ishelp/index.php?topic=32vs64bitinstalls安装。

[Setup]
ArchitecturesInstallIn64BitMode=x64 ia64

在 64 位模式下:

  • 返回的 System32 路径{sys}当在 [Dirs]、[Files]、[InstallDelete]、[Run]、[UninstallDelete] 和 [UninstallRun] 部分中使用时,常量默认映射到 64 位系统目录。这是因为安装/卸载暂时禁用WOW64 文件系统重定向 https://learn.microsoft.com/en-us/windows/win32/winprog64/file-system-redirector当这些部分访问文件/目录时。在其他地方,System32 和{sys}映射到 32 位系统目录,这在 32 位进程中是正常的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

安装到 {sys} 的文件/DLL 未出现在 C:\Windows\system32 中 的相关文章

  • 64 位机器/操作系统上的 32 位操作与 64 位操作

    哪个操作 即 32 位操作或 64 位操作 例如屏蔽 32 位标志或 64 位标志 在 64 位机器上会更便宜 由于您没有指定架构 我只能建议一个一般答案 因为它取决于操作和所讨论的处理器架构 一旦 CPU 寄存器中有数据 大多数操作通常会
  • 在64位linux上安装python 32位

    我基本上有两个问题 如何在 Linux 上安装 32 位 python 和 64 位 python 如何修复因以下失败尝试而损坏的系统 我只是尝试在 linux mint 16 上安装 32 位 python 和 64 位 python 它
  • 通过代码使卸载注册表项成为有条件的

    如何禁用 Inno SetupCreateUninstallRegKey http www jrsoftware org ishelp index php topic setup createuninstallregkey通过代码 My 安
  • 使用 64 位包编译 32 位 Qt 应用程序

    我使用的是 Windows 8 64 位 Qt 5 0 2 for Windows 64 位和 Visual Studio 2012 我在 64 位操作系统上编译和运行我的应用程序没有遇到任何问题 但显然它不适用于 32 位操作系统 有没有
  • Inno Setup 查找子文件夹

    是否有办法获取目录中的所有 或仅第一个 子文件夹 我正在尝试将文件安装到具有动态名称的子目录中 它不是 Inno Setup 可用的常量之一 有办法找到这个子目录名吗 那么 要获取某个文件夹中第一个找到的子文件夹的名称 无论它是哪个 您可以
  • 根据用户输入更改 AppID 和 AppName

    我想在同一系统上多次安装同一应用程序 例如两个用户使用两个不同的 Web 服务 每个都有自己的 在我的设置脚本中我想更改AppID and AppName基于用户的输入 例如我的默认值AppName Service App 应该改为AppN
  • Innosetup 添加多个 exe 文件并在主设置中执行

    我想知道如何添加额外的安装 exe 并使用 innosetup 与我的主 exe 一起执行额外的 exe 请帮助我 因为我在过去 3 天里一直在尝试这个 因为我是 innosetup 的新手 谢谢 最简单的方法是在 Run 部分调用附加的
  • C# - 混合汇编(C++/CLI、DirectX 本机)交互(32/64 位)

    我有一个相关问题这个问题 https stackoverflow com questions 2963809 anycpu x86 x64 for c application and its c cli dependency 两名球员 C
  • Inno Setup 仅卸载部分组件

    我有一个通用的应用程序 例如媒体播放器 用于安装在同一文件夹中的每个不同的零售产品 即 C 程序文件 myapp 并且不同的内容 例如电影 都安装在同一个文件夹中 C 程序文件 myapp 电影 对于每个单独的安装 单独的零售产品 我只是创
  • Inno Setup - 更新时删除旧的/过时的文件

    所以 我意识到这个问题以前已经被问过 事实上 在写这篇文章之前 我读了其中的 10 篇文章 但没有一个有适用的解决方案 我希望现在有人已经找到了一些东西 问题 我的程序是使用脚本构建的 在单个文件夹中创建所有最终文件 这些文件包含在 inn
  • ARM 汇编 SOS 中的 64 位除法

    我正在计算 16 个 64 位数字相加的平均值 我认为我已经正确完成了所有加法 但现在我需要弄清楚如何将 64 位数字除以 16 但我被困住了 任何帮助都会非常感谢你 到目前为止 这是我的代码 tableSize EQU 16 sum EQ
  • 使用反射从 Visual Studio(32 位)中的 T4 模板中分析 64 位 DLL

    我想使用反射从 T4 模板中分析 DLL 以便我可以根据反射分析的结果生成代码 我知道 EnvDTE 将是一个更好的选择 但由于多种原因 这在我的情况下是不可能的 反射的问题是 DLL 是 64 位 DLL 如果我在 T4 模板中加载它 我
  • 安装到 USB 驱动器根目录时出现 Inno Setup 错误:“您必须输入带驱动器号的完整路径”

    我想知道如何修复此类错误 您必须输入带驱动器号的完整路径 例如 C APP 或以下形式的 UNC 路径 server share 每当我尝试强制 Inno Setup Compiler 5 5 5 u 将我的东西放入其中时 就会出现这种情况
  • 如何在 Xcode 中确定是否针对 64 位 iOS 进行编译

    考虑以下函数 CGSize CGSizeIntegral CGSize size return CGSizeMake ceilf size width ceilf size height CGSize实际上由两个组成CGFloats and
  • 在 32 位和 64 位 C# 世界中使用 System.Data.SQLite 的选项

    我了解为什么在 32 位和 64 位版本中提供 System Data SQLite dll 因此 我们不要纠缠于此 继续前进 由于采用这种方式 纯 C 开发似乎变得更加困难 需要做出 3 个选择 是只支持32位并强制有托管 编译 x86
  • Inno Setup 卸载进度条更改事件

    有没有类似的事件 函数CurInstallProgressChanged对于进度条CurProgress and MaxProgressInno Setup 中卸载表单中的值 对此没有本机支持 您可以做的是设置一个计时器并观察时间的变化Un
  • 如何在 Inno Setup 中使用 GetVolumeInformation?

    我需要在使用 Inno Setup 创建的安装过程中获取驱动器号的卷序列号 我知道 DLL 函数可以导入到 Inno 中 但我对它还很陌生 并且在使其工作时遇到一些问题 我知道 kernel32 中的 GetVolumeInformatio
  • 安装到 {sys} 的文件/DLL 未出现在 C:\Windows\system32 中

    我不知道为什么 但是当我尝试将文件从安装目录复制到system32 尽管在 Inno Setup 中显示安装成功 但它未能执行此操作 这是我的代码 Files specifies what files will be included in
  • 安装日志文件丢失

    我制作了一个脚本 其中包括 Setup SetupLogging yes 但我找不到日志文件 好像没有被创建 它可能在哪里 可以指定我想放置它的位置吗 您可以通过设置指定日志文件的路径命令行参数 所以要记录例如到C FileName log
  • 如何从PrepareToInstall事件函数设置StatusMsg

    我的应用程序需要安装 NET Framework 因此我运行 NET 安装准备安装事件函数 当安装运行时 我想在向导上显示一些简单的消息 I found 如何在 Inno 安装脚本的 Code 部分设置状态消息 https stackove

随机推荐