64-bit - 在 64 位主机上安装到 "Program Files (x86)"

标签 64-bit nsis

如果在 64 位主机上,我尝试使用“x64.nsh”将默认安装目录设置为 PROGRAMFILES64。安装程序脚本看起来与此类似:

!include x64.nsh
# set to default here, override in .onInit if on 64bit
InstallDir "$PROGRAMFILES\AppName"

function .onInit
    ${If} ${RunningX64}
        SetRegView 64
        StrCpy $INSTDIR "$PROGRAMFILES64\AppName"
    ${EndIf}
functionEnd

但它顽固地安装到c:\Program Files\AppName

我看过一些例子(特别是this one),但它们似乎都不适合我。有完整的例子吗?

即使在 64 位操作系统上打包 64 位代码,这是否与 nsis 创建 32 位安装程序(PE32 可执行文件 (GUI) Intel 80386)有关?

编辑:实际上,我不介意使用仅 64 位的安装程序,因为存在(并且可能不会)32 位版本。但我似乎无法从 $PROGRAMFILES64 变量获取 Program Files (x86)

最佳答案

正如 @leppie 所指出的,将 64 位二进制文​​件安装到 c:\Program Files 中是正确的(而不是 c: Program Files (x86) 我相信是基于其他一些 64 位软件的安装。仅限 64 位的安装程序可以直接使用 $PROGRAMFILES64

关于64-bit - 在 64 位主机上安装到 "Program Files (x86)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14089647/

相关文章:

windows - NSIS 使用 GetParameters 的奇怪行为

electron - Electron NSIS阻止重新安装

nsis - 检测实例是否正在使用 kernel32::CreateMutexA 运行

windows-7 - 检查 InnoSetup 配置文件的 [Run] 段中的 Windows 版本

caching - 软件预取是否分配行填充缓冲区(LFB)?

NSIS 静默安装更改默认选项

nsis - 如何从另一个 NSIS 安装程序中执行 NSIS 卸载程序并等待它完成?

c++ - 将 Linux 32 位应用程序移植到 64 位?

c - C 64 位机器中字符串的大小

build - WiX x64 平台目标