博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSIS x64 位系统下安装
阅读量:6847 次
发布时间:2019-06-26

本文共 1310 字,大约阅读时间需要 4 分钟。

——转载自 百度空间 

NSIS生成的安装程序都是32位的应用程序,所以在x64下运行时,所安装的文件会被自动转向,如安装到C:\Windows\System32目录下的文件会被安装到C:\Windows\SysWOW64目录下。这对于有些软件是不方便的。

NSIS已经有现成的头文件 x64.nsh (X:\NSIS\Include\x64.nsh) 供大家使用

首先需要引用

!include "x64.nsh"

x64.nsh 里有三个宏 _RunningX64、DisableX64FSRedirection 和 EnableX64FSRedirection

根据宏名称能猜到它们是功能,分别对应 检查运行环境是否是X64、禁止文件转向 和 运行文件转向

在实际调用的时候就可以根据实际需要来运用上述3个宏了。

简单的测试代码:

!include x64.nsh    Function .onInit          ${If} ${RunningX64}           ${EnableX64FSRedirection}           ${else}          MessageBox MB_OK "Sorry this application runs only on x64 machines"          Abort          ${EndIf}  FunctionEnd    Section -         Detailprint '$SYSDIR'         DetailPrint '$WINDIR'         DetailPrint '$PROGRAMFILES'  SectionEnd

参考资料:

NSIS在x64系统下的使用

NSIS生成的安装程序都是32位的应用程序,所以在x64下运行时,所安装的文件会被自动转向,如安装到C:\Windows\System32目录下的文件会被安装到C:\Windows\SysWOW64目录下。这对于有些软件是不方便的。一个办法是重新编译NSIS的代码为64位,就是有点麻烦,而且需要大量的时间测试一下。利用简单的代码也可以解决类似的问题:

1、检测操作系统是否为x64系统
可以读环境变量PROCESSOR_ARCHITECTURE,该变量在32位系统为x86,在AMD的x64的机器和在Intel的x64机器上为AMD64,在安腾(Itanium)系统为IA64。可以使用下面的代码:
ReadEnvStr $Win64 PROCESSOR_ARCHITECTURE
StrCmp $Win64 "x86" lbl_Win32
2、禁止文件转向
调用函数可以禁止或恢复文件转向。如:
; 禁止
System::Call "Kernel32::Wow64EnableWow64FsRedirection(i 0)"
    ......
; 恢复
System::Call "Kernel32::Wow64EnableWow64FsRedirection(i 1)"

$PROGRAMFILES on x64

你可能感兴趣的文章
Java 开源博客——B3log Solo 0.6.6 正式版公布了!
查看>>
平衡二叉树
查看>>
A SIMPLE LIBRARY TO BUILD A DEEP ZOOM IMAGE
查看>>
VIM 的帮助文档在哪里?看这里。
查看>>
javaweb学习总结(四十二)——Filter(过滤器)学习
查看>>
模块化之后的项目在正式环境中的数据迁移(含代码生成器)
查看>>
Java JDBC连接SQL Server2005错误:通过port 1433 连接到主机 localhost 的 TCP/IP 连接失败...
查看>>
erlang配置三方库
查看>>
java设计模式演示样例
查看>>
Java发邮件带附件测试通过
查看>>
FreeIconMaker - 在线创建免费和时尚的图标
查看>>
Xcode6:模拟器消失了?
查看>>
深入Delphi下的DLL编程
查看>>
aix5.1 5.2 5.3 6.1 7.1运维技术总结
查看>>
[ubuntu Setup] ubuntu 14.10 安装 JDK
查看>>
fork与vfork
查看>>
Make a printer-port EEPROM programmer and dongle
查看>>
Windows 商店应用中使用 SharePoint REST API
查看>>
《BI那点儿事》数据流转换——数据转换
查看>>
重新操刀开发一个软件的碎碎念
查看>>