NSIS 制作 64 位系统下的安装程序
2012-12-04 11:27
330 查看
NSIS 已经有现成的头文件 x64.nsh (X:\NSIS\Include\x64.nsh) 供大家使用。首先需要引用
x64.nsh 里有三个宏:
RunningX64 : 检查运行环境是否是X64
DisableX64FSRedirection : 禁止文件转向
EnableX64FSRedirection : 允许文件转向
简单的测试代码:
1、检测操作系统是否为 x64 系统
可以读环境变量 PROCESSOR_ARCHITECTURE,该变量在 32 位系统为 x86,在 AMD 的 x64 的机器和在 Intel 的 x64 机器上为 AMD64,在安腾(Itanium)系统为 IA64。
2、注册COM组件,需包含 Library.nsh,用宏 InstallLib/UnInstallLib 代替 RegDLL/UnRegDLL
3、在调用涉及注册表的函数前用 SetRegView 64,后用 SetRegView lastused
4、在调用涉及目标机器上系统目录(即 $SYSDIR)的函数前用 {DisableX64FSRedirection}
5、在 64 位系统上 $PROGRAMFILES64 表示“Program Files”, $PROGRAMFILES 表示 “Program Files (x86)”
可以在安装脚本的开始处定义一个常量:
6、可以做个批处理文件,一次性生成 32位/64 位的安装包
备注:本文转载自:
1、/article/1419555.html
2、http://blog.sina.com.cn/s/blog_617c05b001015hbn.html
!include "x64.nsh"
x64.nsh 里有三个宏:
RunningX64 : 检查运行环境是否是X64
DisableX64FSRedirection : 禁止文件转向
EnableX64FSRedirection : 允许文件转向
简单的测试代码:
!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
1、检测操作系统是否为 x64 系统
可以读环境变量 PROCESSOR_ARCHITECTURE,该变量在 32 位系统为 x86,在 AMD 的 x64 的机器和在 Intel 的 x64 机器上为 AMD64,在安腾(Itanium)系统为 IA64。
ReadEnvStr $Win64 PROCESSOR_ARCHITECTURE StrCmp $Win64 "x86" lbl_Win32
2、注册COM组件,需包含 Library.nsh,用宏 InstallLib/UnInstallLib 代替 RegDLL/UnRegDLL
; RegDLL "$SYSDIR\ComName.dll" !insertmacro InstallLib REGDLL NOTSHARED REBOOT_NOTPROTECTED "LocalPath\ComName.dll" "$SYSDIR\ComName.dll" $SYSDIR ; UnRegDLL "$SYSDIR\ComName.dll" !insertmacro UnInstallLib REGDLL NOTSHARED REBOOT_NOTPROTECTED "$SYSDIR\ComName.dll"
3、在调用涉及注册表的函数前用 SetRegView 64,后用 SetRegView lastused
!ifdef LIBRARY_X64 SetRegView 64 !endif WriteRegStr ... WriteRegStr ... WriteRegStr ... !ifdef LIBRARY_X64 SetRegView lastused !endif
4、在调用涉及目标机器上系统目录(即 $SYSDIR)的函数前用 {DisableX64FSRedirection}
5、在 64 位系统上 $PROGRAMFILES64 表示“Program Files”, $PROGRAMFILES 表示 “Program Files (x86)”
可以在安装脚本的开始处定义一个常量:
!ifdef LIBRARY_X64 !define PROGRAM_FILES_FIX $PROGRAMFILES64 !else !define PROGRAM_FILES_FIX $PROGRAMFILES !endif以后直接用 ${PROGRAM_FILES_FIX} 代替 $PROGRAMFILES。
6、可以做个批处理文件,一次性生成 32位/64 位的安装包
makensis .\myinstaller.nsi makensis /DLIBRARY_X64 .\myinstaller.nsi ; 使用 /D 参数 pause
备注:本文转载自:
1、/article/1419555.html
2、http://blog.sina.com.cn/s/blog_617c05b001015hbn.html
相关文章推荐
- NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序
- 软件打包工具NSIS安装程序制作系统
- 安装程序制作系统NSIS(Nullsoft Scriptable Install System)
- NSIS安装程序制作工具判断系统是否安装.NET
- 使用NSIS制作多语言的安装程序
- NSIS安装制作程序
- NSIS安装制作程序
- NSIS安装程序打包制作工具入门
- 使用NSIS (NullSoft Scriptable Install System)制作安装程序快速指南
- DotNet系统安装程序制作StepByStep(包括FrameWork安装和数据库安装配置)C#
- DotNet系统安装程序制作StepByStep(包括FrameWork安装和数据库安装配置)C#
- 用 NSIS 制作安装程序
- 使用NSIS (NullSoft Scriptable Install System)制作安装程序快速指南
- 用 NSIS 制作安装程序
- 安装程序制作之网站系统安装过程中给系统中应用到的数据库文件设置访问权限
- 基于NSIS脚本开发的安装程序制作软件:易量安装
- DotNet(C# )系统安装程序制作StepByStep(包括FrameWork安装和数据库安装...
- 安装制作问题 为什么在做安装程序时提示:msjro.dll受windows系统保护
- 用InstallShield制作数据库应用系统的安装程序(2000年8月17日) 作者:新疆 宗宏斌
- NSIS 安装程序 制作32+64位安装包