正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- ;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
- Abort
- skip:
- ${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 Sections
- Section ${NAME_JP} SecDummy
- SetShellVarContext 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:
- FunctionEnd
- Function un.onInit
- Push $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 abort
- Push "${Product}.exe"
- Processwork::KillProcess
- Sleep 1000
- goto CheckProc
- abort:
- Abort
- GetDir:
- FunctionEnd
- Icon "${ROOT}Setup.ico"
- UninstallIcon "${ROOT}Setup.ico"
复制代码 这个过程中,加入了一个自定义的页面选择Metatrader所在的文件夹。除了上述代码外,还需要一个描述页面用的ini文件(通过NSIS图形工具制作)
双击执行,即可完成创建安装包,并上传至服务器。
|