nsi文件例子如下

;NSIS Modern User Interface;Basic Example Script;Written by Joost Verburg

!Define Product "MySoft"!Define NAME_JP "我的软件"!Define Company "俺公司"!Define Version "1.0.0"

!Define LocalMtExpertsDir "C:\Program Files (x86)\MetaTrader 4"!Define ROOT ".........\Release\"!Define RegUninstall "Software\Microsoft\Windows\CurrentVersion\Uninstall\${Product}"

;--------------------------------;Include Modern UI

  !include "MUI.nsh"

;--------------------------------;General

;Name and file  Name "${NAME_JP}"  OutFile "${Product}_${Version}_setup.exe"

;Default installation folder  InstallDir "$PROGRAMFILES\${Company}\${Product}"

;Get installation folder from registry if available  InstallDirRegKey HKCU "Software\${Company}\${Product}" ""

;--------------------------------;Variables

  Var MUI_TEMP  Var STARTMENU_FOLDER

  Var MT_DIR  Var MT_DIR_CTRL;--------------------------------;Interface Settings

  !define MUI_ABORTWARNING

Function setChooseMtArea!insertmacro MUI_HEADER_TEXT "MetaTrader 4的文件夹" "请选择MetaTrader 4所在的文件夹。"!insertmacro MUI_INSTALLOPTIONS_WRITE "mt4dir.ini" "Field 2" "State" "$PROGRAMFILES\Metatrader 4"!insertmacro MUI_INSTALLOPTIONS_DISPLAY "mt4dir.ini"FunctionEnd

Function setChooseMtAreaLeave!insertmacro MUI_INSTALLOPTIONS_READ $MT_DIR_CTRL "mt4dir.ini" "Field 2" "HWND"!insertmacro MUI_INSTALLOPTIONS_READ $MT_DIR "mt4dir.ini" "Field 2" "State"recheck:${If} $MT_DIR == ""    MessageBox MB_OK "MetaTrader 4のフォルダーを選択してください。"    Abort ${Else}    IfFileExists $MT_DIR\experts\*.* 0 +2    goto skip    MessageBox MB_OKCANCEL "所选文件夹中未找到MetaTrader 4。$\n需要为您安装MetaTrader 4吗?" IDCANCEL +6    SetOutPath "$TEMP"    File "${ROOT}mt4setup.exe"    ExecWait '"$TEMP\mt4setup.exe" '    Delete "$TEMP\mt4setup.exe"    goto recheck    Abortskip:    ${EndIf}

FunctionEnd

;--------------------------------;Pages

  !insertmacro MUI_PAGE_LICENSE "${ROOT}License.txt"  !insertmacro MUI_PAGE_COMPONENTS  !insertmacro MUI_PAGE_DIRECTORY  Page custom setChooseMtArea setChooseMtAreaLeave ""

;Start Menu Folder Page Configuration  !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"   !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\${Company}\${Product}"   !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"

  !insertmacro MUI_PAGE_STARTMENU ${Product} $STARTMENU_FOLDER

  !insertmacro MUI_PAGE_INSTFILES

  !insertmacro MUI_UNPAGE_CONFIRM  !insertmacro MUI_UNPAGE_INSTFILES

; Finish page  !define MUI_FINISHPAGE_RUN "$INSTDIR\${Product}.exe";Exec "$INSTDIR\${Product}.exe /regserver"  !define MUI_FINISHPAGE_RUN_NOTCHECKED  !insertmacro MUI_PAGE_FINISH;--------------------------------;Languages

  !insertmacro MUI_LANGUAGE "Japanese";!insertmacro MUI_LANGUAGE "English"

RequestExecutionLevel admin

;--------------------------------;Installer SectionsSection ${NAME_JP} SecDummySetShellVarContext all

  ReadRegStr $4 HKEY_LOCAL_MACHINE \"Software\Microsoft\NET Framework Setup\NDP\v3.5" "SP"  STRCMP $4 1 SKIP NOSKIP;      Exec "$INSTDIR\${Product}.exe /regserver";  abort  NOSKIP:  MESSAGEBOX  mb_ok "本产品需要Microsoft .NET Framework 3.5 SP1或以后的版本支持。"NSISdl::download /TIMEOUT=30000 "http://download.microsoft.com/download/0/6/1/061F001C-8752-4600-A198-53214C69B51F/dotnetfx35setup.exe" "$TEMP\dotNetFx35setup.exe"  ExecWait '"$TEMP\dotNetFx35setup.exe" ';Delete "$TEMP\dotNetFx35setup.exe"  SKIP:

  SetOutPath "$INSTDIR"    File /oname=${Product}.exe "${ROOT}${Product}.exe"    File "${ROOT}*.dll"    File "${ROOT}${Product}.exe.config"    File "${ROOT}XXX2.ico"    File "${LocalMtExpertsDir}\experts\libraries\XXX.dll"    File "${LocalMtExpertsDir}\experts\indicators\XXX.ex4"    File "${LocalMtExpertsDir}\experts\scripts\XXX.ex4"    

  SetOutPath "$INSTDIR\Sound"    File "${ROOT}Sound\*.wav"

  SetOutPath "$INSTDIR\Help"    File "${ROOT}Help\*.chm"

  SetOutPath "$MT_DIR"    File "${LocalMtExpertsDir}\XXX.dll"    File "${LocalMtExpertsDir}\Fann.Net.dll"    File "${ROOT}fanndoubleMT.dll"    File "${ROOT}System.Windows.Forms.DataVisualization.dll"

  SetOutPath "$MT_DIR\experts\indicators"    File "${LocalMtExpertsDir}\experts\indicators\XXX.ex4"

  SetOutPath "$MT_DIR\experts\scripts"    File "${LocalMtExpertsDir}\experts\scripts\XXX.ex4"

  SetOutPath "$MT_DIR\experts\libraries"    File "${LocalMtExpertsDir}\experts\libraries\XXX.dll"

;Create uninstaller  WriteUninstaller "$INSTDIR\Uninstall.exe"    WriteRegStr   HKLM "${RegUninstall}" "DisplayName"     ${NAME_JP}  WriteRegStr   HKLM "${RegUninstall}" "UninstallString" "$INSTDIR\Uninstall.exe"  WriteRegStr   HKLM "${RegUninstall}" "HelpLink"        "http://www.internal.co.jp/support/"  WriteRegDWORD HKLM "${RegUninstall}" "NoModify"        1  WriteRegDWORD HKLM "${RegUninstall}" "NoRepair"        1  WriteRegStr   HKLM "${RegUninstall}" "MtDir"           "$MT_DIR"  WriteRegStr   HKLM "${RegUninstall}" "MainDir"           "$INSTDIR"

  WriteRegStr   HKCR ".xxx" "" "XXX.file"  WriteRegStr   HKCR "XXX.file" "" "XXXファイル (.xxx)"  WriteRegStr   HKCR "XXX.file\DefaultIcon" "" "$INSTDIR\XXX.ico"  WriteRegStr   HKCR "XXX.file\shell" "" ""  WriteRegStr   HKCR "XXX.file\shell\open" "" ""  WriteRegStr   HKCR "XXX.file\shell\open\command" "" '"$INSTDIR\${Product}.exe" "%1"'

  !insertmacro MUI_STARTMENU_WRITE_BEGIN ${Product}  SetOutPath "$INSTDIR"  CreateShortCut "$DESKTOP\${NAME_JP}.lnk" "$INSTDIR\${Product}.exe"  CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"  CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\${NAME_JP}.lnk" "$INSTDIR\${Product}.exe"  CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\uninstall.lnk" "$INSTDIR\Uninstall.exe"  !insertmacro MUI_STARTMENU_WRITE_END

System::Call 'shell32.dll::SHChangeNotify(l, l, i, i) v (0x08000000, 0, 0, 0)'

SectionEnd

;--------------------------------;Descriptions

;Language strings  LangString DESC_SecDummy ${LANG_ENGLISH} "${NAME_JP} 执行程序。";LangString DESC_SecDummy ${LANG_ENGLISH} "This is ${NAME_JP}."

;Assign language strings to sections  !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN    !insertmacro MUI_DESCRIPTION_TEXT ${SecDummy} $(DESC_SecDummy)  !insertmacro MUI_FUNCTION_DESCRIPTION_END

;--------------------------------;Uninstaller Section

Section "Uninstall"SetShellVarContext all;ADD YOUR OWN FILES HERE..

  ReadRegStr $MT_DIR HKLM "${RegUninstall}" "MtDir" 

  Delete "$INSTDIR\Uninstall.exe"    Delete "$INSTDIR\${Product}.exe"    Delete "$INSTDIR\*.ico"    Delete "$INSTDIR\*.config"    Delete "$INSTDIR\*.dll"    Delete "$INSTDIR\*.ini"    Delete "$INSTDIR\*.log"    Delete "$INSTDIR\*.wav"    Delete "$INSTDIR\*.db"    Delete "$INSTDIR\*.xxx"    Delete "$INSTDIR\*.chm"    Delete "$INSTDIR\Help\*.chm"    Delete "$INSTDIR\Sound\*.wav"    Delete "$INSTDIR\Models\*.xxx"    Delete "$INSTDIR\Models\NetResults\*.xxx"

  Delete "$MT_DIR\experts\libraries\XXX.dll"  Delete "$MT_DIR\experts\scripts\XXX.ex4"  Delete "$MT_DIR\experts\indicators\XXX.ex4"  Delete "$MT_DIR\XXXX.dll"  Delete "$MT_DIR\Fann.Net.dll"  Delete "$MT_DIR\fanndoubleMT.dll"  Delete "$MT_DIR\System.Windows.Forms.DataVisualization.dll"

  !insertmacro MUI_STARTMENU_GETFOLDER ${Product} $MUI_TEMP  Delete "$DESKTOP\${NAME_JP}.lnk"    Delete "$SMPROGRAMS\$MUI_TEMP\*.lnk"  RMDir "$SMPROGRAMS\$MUI_TEMP"  RMDir "$INSTDIR\Help"  RMDir "$INSTDIR\Sound"  RMDir "$INSTDIR\Models\NetResults"  RMDir "$INSTDIR\Models"  RMDir "$INSTDIR"

  DeleteRegKey   HKCR ".xxx"  DeleteRegKey   HKCR "XXX.file"  DeleteRegKey HKLM "${RegUninstall}"

System::Call 'shell32.dll::SHChangeNotify(l, l, i, i) v (0x08000000, 0, 0, 0)'SectionEnd

;Function .onInstSuccess    ;Exec "$INSTDIR\${Product}.exe /regserver";FunctionEnd

Function .onInit    !insertmacro MUI_INSTALLOPTIONS_EXTRACT "mt4dir.ini"    ReadRegStr $0 HKLM "${RegUninstall}" "DisplayName"    StrCmp $0 "" noabort3    MessageBox MB_OK "${NAME_JP}已经安装,请先卸载。";MessageBox MB_OK "${NAME_JP} has already been installed. Please uninstall the programm and restart the install procedure."  Abort ; causes installer to quit.    noabort3:FunctionEndFunction un.onInitPush $R0 CheckProc: Push "${Product}.exe" ProcessWork::existsprocess Pop $R0     IntCmp $R0 0 GetDir    MessageBox MB_OKCANCEL|MB_ICONSTOP "${NAME_JP}正在运行。$\r$\n${NAME_JP}强制结束吗?" IDCANCEL abortPush "${Product}.exe"Processwork::KillProcess    Sleep 1000    goto CheckProcabort:    AbortGetDir:        FunctionEndIcon "${ROOT}Setup.ico"UninstallIcon "${ROOT}Setup.ico"

这个过程中,加入了一个自定义的页面选择Metatrader所在的文件夹。除了上述代码外,还需要一个描述页面用的ini文件(通过NSIS图形工具制作)

; Ini file generated by the HM NIS Edit IO designer.[Settings]NumFields=3

[Field 1]Type=LabelText=Metatrader4的文件夹:Left=10Right=80Top=26Bottom=34

[Field 2]Type=DirRequestState=DirRequestLeft=80Right=270Top=22Bottom=36

[Field 3]Type=LabelText=本软件在Metatrader 4的基础上运行。请选择Metatrader 4所在的文件夹。Left=10Right=273Top=3Bottom=19

随后,可通过批处理文件对dll进行签名(未签名的dll可能被视为带威胁性软件),创建安装包

@echo on

set version=1.0.0set pfxDir=c:\set nsisDir=C:\Program Files (x86)\NSIS\set signtoolDir=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\set dllRoot=.......\Release\set installerFolder=......\Installer\set releaseFolder=\\server\MySoft\

"%signtoolDir%signtool.exe" sign /du http://www.mycompany.com /t http://timestamp.verisign.com/scripts/timstamp.dll /f %pfxDir%mycredit.pfx /v %dllRoot%MySoft.exe

"%signtoolDir%signtool.exe" sign /du http://www.mycompany.com /t http://timestamp.verisign.com/scripts/timstamp.dll /f %pfxDir%mycredit.pfx /v %dllRoot%XXX1.dll

"%signtoolDir%signtool.exe" sign /du http://www.mycompany.com /t http://timestamp.verisign.com/scripts/timstamp.dll /f %pfxDir%mycredit.pfx /v %dllRoot%XXX2.dll

"%nsis%makensis" %installerFolder%Setup.nsi

copy "%installerFolder%MySoft_%version%_setup.exe" "%releaseFolder%"

pause@echo off

双击执行,即可完成创建安装包,并上传至服务器。

转载于:https://www.cnblogs.com/lican/archive/2012/01/06/2315083.html

NSIS制作安装包实例相关推荐

  1. 使用NSIS制作安装包

    使用NSIS制作安装包 (2018-01-08 14:25:12) 转载▼ 标签: nsis 分类: windows 这两天使用NSIS制作了一个程序安装包,这里记录一下过程. 开始参考博客:http ...

  2. 使用NSIS制作安装包(1)

    NSIS是一个基于脚本语言的制作安装包的免费工具,它使用起来也很方便,下面是制作安装.NET框架和语言包的脚本. NSIS的编译器和脚本编辑工具可以到nsis.sf.net上下载 !include W ...

  3. [工具设置]使用NSIS制作安装包

    https://www.cnblogs.com/modou/p/3573772.html nsis下载地址:http://www.pc6.com/softview/SoftView_14342.htm ...

  4. NSIS制作安装包软件

    一.简介 NSIS 是"Nullsoft 脚本安装系统"(Nullsoft Scriptable Installation System) 的缩写,它是一个Open Source的 ...

  5. .Net Core WPF 制作安装包

    注:由于项目中用到了x86 DLL,项目目标平台选择x86; 打包步骤: 1.修改项目配置管理器为 2.项目发布,配置改为如下: 如果nuget报错,可以试着改程序包源(工具--选项--NuGet包管 ...

  6. vs2005制作安装包(自动安装.net framework 2.0)(小寿原创)

    vs2005制作安装包(自动安装.net framework 2.0)(小寿原创) 新建项目-> 其他项目类型->安装和部署->安装向导! 安装向导会提示你添加要安装的文件,这时你可 ...

  7. VS2008制作安装包

    图文详细地址:http://www.itwis.com/html/net/kaifagongju/20090218/3387.html VS2008制作安装包 安装与部署 2010-03-13 14: ...

  8. Debian、Ubuntu源码编译制作安装包(二)

    在<Debian.Ubuntu源码编译制作安装包(一)>文章中描述了dpkg基本制作安装包过程,本篇文章描述如何增加patch及解决出错问题. 章节预览: 5. 增加patch 6. 修改 ...

  9. Debian、Ubuntu源码编译制作安装包(一)

    Debian.Ubuntu系列linux操作系统制作安装包相较于CentOS更简便一些,如"dpkg -b"指令即可重新打包.如果需要源码级制作安装包则更困难一些,接下来,我们逐步 ...

最新文章

  1. 这便是有三AI一年的底蕴,那些5000粉丝1000阅读量的AI技术干货
  2. 启明云端方案分享| ESP32-S2 摄像头 WIFI方案应用于智能猫眼
  3. 机器学习基础:分类vs回归
  4. false libhadoop was built without ISA-L support以及编译hadoop本地库失败(没有解决)
  5. activemq 发两条只收到一条_浅谈ActiveMQ与使用
  6. 国家中长期教育改革和发展规划纲要(2010-2020年)
  7. python爬虫入门
  8. 【转载】KG-知识图谱初探
  9. c语言数据结构与算法参考文献,数据结构论文参考文献
  10. 一文说清:可逆与不可逆加密算法,对称与非对称加密算法-据说BCrypt比MD5要好?
  11. java 碳架山地车寿命_关于自行车的4大“谣言” 铝合金车架寿命只有五年
  12. 电磁兼容设计中无法忽视的高频效应
  13. 2018年总结和职场规划
  14. css显示苹方字体,苹方字体合集
  15. AI随笔-python3(4)
  16. python中的argv和argc
  17. 鄢陵一高2021高考成绩查询单,鄢陵县第一高级中学2020年高考喜报
  18. 数据泄露是如何发生的?有哪些预防措施...
  19. vue3-admin商品管理后台项目(登录页开发和功能实现)
  20. 计算机网络——网络层功能概述

热门文章

  1. 2020-06-05 原始套接字/AF_PACKET链路层访问
  2. 开源GIS(二十)——CAD数据添加属性转GIS数据
  3. Nginx编译-安装-配置-优化实践总结
  4. Android杂谈--ListView之SimpleAdapter的使用
  5. 《高级着色语言HLSL入门》系列文章
  6. Window环境下使用C#调用VBScript、JavaScript等脚本
  7. PVE虚拟服务器配置,我与PVE的交往史 篇一:如何使用虚拟机PVE一步一步打造自己想要的ALL IN ONE 主机...
  8. Impala之DDL、DML
  9. jmeter分布式性能测试
  10. js深拷贝和浅拷贝对数组的影响_浅拷贝与深拷贝(JavaScript)