Arm64 架构中每个“Program Files”文件夹的用途是什么?

Ger*_*oli 2 windows windows-installer windows-arm64

尝试重新构建一个应用程序,但针对 Arm64 并制作一个正确的安装程序。有3个Program Files文件夹:

  • C:\Program Files\
  • C:\Program Files (Arm)\
  • C:\Program Files (x86)\

每个文件夹的用途是什么?为 Arm64 处理器架构构建的应用程序应该安装在哪里?

为了供将来参考,这里是环境变量。

CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(Arm)=C:\Program Files (Arm)\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(Arm)=C:\Program Files (Arm)
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
Run Code Online (Sandbox Code Playgroud)

Lex*_* Li 6

C:\Program Files (Arm)\

该文件夹即将消失。您可以阅读这篇文章和以下内容,

“在 Windows 11 的未来版本中将删除对 32 位 Arm 版本应用程序的支持。”

这并不奇怪,因为当时并没有很多 32 位 Arm 应用程序。

C:\Program Files (x86)\

对于 x86 应用程序,此文件夹保持不变。您可以参考这篇文章来了解背后的仿真。

C:\Program Files\

这个文件夹现在在 Windows 11 ARM64 上相当混乱,因为它接受三种类型,

  • 您现有的 x64 应用程序
  • 您的新纯 ARM64 应用程序
  • 您的ARM64X 应用程序

    包括纯转发器二进制文件(如果使用)。

因此,在将二进制文件安装到此文件夹时,旧的 x64 安装程序会继续工作并实现向后兼容性。但是,x64 二进制文件是在模拟下执行的。

最后,将应用程序重新编译为纯 ARM64 或 ARM64X 二进制文件并安装到此文件夹,以便它们在本机执行。

请注意,ARM64X 二进制执行很棘手,因为它取决于启动设置。二进制文件可能在纯 ARM64 模式(大多数情况下)或 x64 模拟模式(如果启动方式不同)下运行。

奖金

因此,当您尝试将应用程序移植到 Windows 11 ARM64 时,您需要决定移植的具体目的,

  • 如果移植不会带来显着的好处,您可以使用旧的二进制文件。
  • 您可以生成纯 ARM64 二进制文件,这很常见。
  • 有时您可能需要生成 ARM64X 二进制文件(一种情况是 IIS 本机扩展,例如 ASP.NET Core 模块)。

有趣的是,无论您选择哪个路径,二进制文件都会安装到相同的C:\Program Files\.