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)"
3、在调用涉及注册表的函数前用 SetRegView 64,后用 SetRegView lastused。
!ifdef LIBRARY_X64
SetRegView 64
!endif
WriteRegStr ...
WriteRegStr ...
WriteRegStr ...
!ifdef LIBRARY_X64
SetRegView lastused
!endif
阅读(2341) | 评论(0) | 转发(0) |