123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- ;-----------------------------------------------------------------------------
- ;
- ; SRT - Secure, Reliable, Transport
- ; Copyright (c) 2021, Thierry Lelegard
- ;
- ; This Source Code Form is subject to the terms of the Mozilla Public
- ; License, v. 2.0. If a copy of the MPL was not distributed with this
- ; file, You can obtain one at http://mozilla.org/MPL/2.0/.
- ;
- ;-----------------------------------------------------------------------------
- ;
- ; NSIS script to build the SRT binary installer for Windows.
- ; Do not invoke NSIS directly, use PowerShell script build-win-installer.ps1
- ; to ensure that all parameters are properly passed.
- ;
- ;-----------------------------------------------------------------------------
- Name "SRT"
- Caption "SRT Libraries Installer"
- !verbose push
- !verbose 0
- !include "MUI2.nsh"
- !include "Sections.nsh"
- !include "TextFunc.nsh"
- !include "FileFunc.nsh"
- !include "WinMessages.nsh"
- !include "x64.nsh"
- !verbose pop
- !define ProductName "libsrt"
- !define Build32Dir "${BuildRoot}\build.Win32"
- !define Build64Dir "${BuildRoot}\build.x64"
- !define SSL32Dir "C:\Program Files (x86)\OpenSSL-Win32"
- !define SSL64Dir "C:\Program Files\OpenSSL-Win64"
- ; Installer file information.
- VIProductVersion ${VersionInfo}
- VIAddVersionKey ProductName "${ProductName}"
- VIAddVersionKey ProductVersion "${Version}"
- VIAddVersionKey Comments "The SRT static libraries for Visual C++ on Windows"
- VIAddVersionKey CompanyName "Haivision"
- VIAddVersionKey LegalCopyright "Copyright (c) 2021 Haivision Systems Inc."
- VIAddVersionKey FileVersion "${VersionInfo}"
- VIAddVersionKey FileDescription "SRT Installer"
- ; Name of binary installer file.
- OutFile "${OutDir}\${ProductName}-${Version}.exe"
- ; Generate a Unicode installer (default is ANSI).
- Unicode true
- ; Registry key for environment variables
- !define EnvironmentKey '"SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
- ; Registry entry for product info and uninstallation info.
- !define ProductKey "Software\${ProductName}"
- !define UninstallKey "Software\Microsoft\Windows\CurrentVersion\Uninstall\${ProductName}"
- ; Use XP manifest.
- XPStyle on
- ; Request administrator privileges for Windows Vista and higher.
- RequestExecutionLevel admin
- ; "Modern User Interface" (MUI) settings.
- !define MUI_ABORTWARNING
- ; Default installation folder.
- InstallDir "$PROGRAMFILES\${ProductName}"
- ; Get installation folder from registry if available from a previous installation.
- InstallDirRegKey HKLM "${ProductKey}" "InstallDir"
- ; Installer pages.
- !insertmacro MUI_PAGE_DIRECTORY
- !insertmacro MUI_PAGE_INSTFILES
- ; Uninstaller pages.
- !insertmacro MUI_UNPAGE_CONFIRM
- !insertmacro MUI_UNPAGE_INSTFILES
- ; Languages.
- !insertmacro MUI_LANGUAGE "English"
- ; Installation initialization.
- function .onInit
- ; In 64-bit installers, don't use registry redirection.
- ${If} ${RunningX64}
- SetRegView 64
- ${EndIf}
- functionEnd
- ; Uninstallation initialization.
- function un.onInit
- ; In 64-bit installers, don't use registry redirection.
- ${If} ${RunningX64}
- SetRegView 64
- ${EndIf}
- functionEnd
- ; Installation section
- Section "Install"
- ; Work on "all users" context, not current user.
- SetShellVarContext all
- ; Delete obsolete files from previous versions.
- Delete "$INSTDIR\LICENSE.pthread.txt"
- Delete "$INSTDIR\include\srt\srt4udt.h"
- Delete "$INSTDIR\include\srt\udt.h"
- Delete "$INSTDIR\lib\Release-x64\pthread.lib"
- Delete "$INSTDIR\lib\Release-Win32\pthread.lib"
- Delete "$INSTDIR\lib\Debug-x64\srt.pdb"
- Delete "$INSTDIR\lib\Debug-x64\pthread.pdb"
- Delete "$INSTDIR\lib\Debug-x64\pthread.lib"
- Delete "$INSTDIR\lib\Debug-Win32\srt.pdb"
- Delete "$INSTDIR\lib\Debug-Win32\pthread.pdb"
- Delete "$INSTDIR\lib\Debug-Win32\pthread.lib"
- SetOutPath "$INSTDIR"
- File /oname=LICENSE.txt "${RepoDir}\LICENSE"
- File "libsrt.props"
- ; Header files.
- CreateDirectory "$INSTDIR\include\srt"
- SetOutPath "$INSTDIR\include\srt"
- File "${RepoDir}\srtcore\access_control.h"
- File "${RepoDir}\srtcore\logging_api.h"
- File "${RepoDir}\srtcore\platform_sys.h"
- File "${RepoDir}\srtcore\srt.h"
- File "${RepoDir}\srtcore\udt.h"
- File "${Build64Dir}\version.h"
- CreateDirectory "$INSTDIR\include\win"
- SetOutPath "$INSTDIR\include\win"
- File "${RepoDir}\common\win\syslog_defs.h"
- ; Libraries.
- CreateDirectory "$INSTDIR\lib"
-
- CreateDirectory "$INSTDIR\lib\Release-x64"
- SetOutPath "$INSTDIR\lib\Release-x64"
- File /oname=srt.lib "${Build64Dir}\Release\srt_static.lib"
- File /oname=libcrypto.lib "${SSL64Dir}\lib\VC\static\libcrypto64MD.lib"
- File /oname=libssl.lib "${SSL64Dir}\lib\VC\static\libssl64MD.lib"
- CreateDirectory "$INSTDIR\lib\Debug-x64"
- SetOutPath "$INSTDIR\lib\Debug-x64"
- File /oname=srt.lib "${Build64Dir}\Debug\srt_static.lib"
- File /oname=libcrypto.lib "${SSL64Dir}\lib\VC\static\libcrypto64MDd.lib"
- File /oname=libssl.lib "${SSL64Dir}\lib\VC\static\libssl64MDd.lib"
- CreateDirectory "$INSTDIR\lib\Release-Win32"
- SetOutPath "$INSTDIR\lib\Release-Win32"
- File /oname=srt.lib "${Build32Dir}\Release\srt_static.lib"
- File /oname=libcrypto.lib "${SSL32Dir}\lib\VC\static\libcrypto32MD.lib"
- File /oname=libssl.lib "${SSL32Dir}\lib\VC\static\libssl32MD.lib"
- CreateDirectory "$INSTDIR\lib\Debug-Win32"
- SetOutPath "$INSTDIR\lib\Debug-Win32"
- File /oname=srt.lib "${Build32Dir}\Debug\srt_static.lib"
- File /oname=libcrypto.lib "${SSL32Dir}\lib\VC\static\libcrypto32MDd.lib"
- File /oname=libssl.lib "${SSL32Dir}\lib\VC\static\libssl32MDd.lib"
- ; Add an environment variable to installation root.
- WriteRegStr HKLM ${EnvironmentKey} "LIBSRT" "$INSTDIR"
- ; Store installation folder in registry.
- WriteRegStr HKLM "${ProductKey}" "InstallDir" $INSTDIR
- ; Create uninstaller
- WriteUninstaller "$INSTDIR\Uninstall.exe"
-
- ; Declare uninstaller in "Add/Remove Software" control panel
- WriteRegStr HKLM "${UninstallKey}" "DisplayName" "${ProductName}"
- WriteRegStr HKLM "${UninstallKey}" "Publisher" "Haivision"
- WriteRegStr HKLM "${UninstallKey}" "URLInfoAbout" "https://github.com/Haivision/srt"
- WriteRegStr HKLM "${UninstallKey}" "DisplayVersion" "${Version}"
- WriteRegStr HKLM "${UninstallKey}" "DisplayIcon" "$INSTDIR\Uninstall.exe"
- WriteRegStr HKLM "${UninstallKey}" "UninstallString" "$INSTDIR\Uninstall.exe"
- ; Get estimated size of installed files
- ${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
- IntFmt $0 "0x%08X" $0
- WriteRegDWORD HKLM "${UninstallKey}" "EstimatedSize" "$0"
- ; Notify applications of environment modifications
- SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
- SectionEnd
- ; Uninstallation section
- Section "Uninstall"
- ; Work on "all users" context, not current user.
- SetShellVarContext all
- ; Get installation folder from registry
- ReadRegStr $0 HKLM "${ProductKey}" "InstallDir"
- ; Delete product registry entries
- DeleteRegKey HKCU "${ProductKey}"
- DeleteRegKey HKLM "${ProductKey}"
- DeleteRegKey HKLM "${UninstallKey}"
- DeleteRegValue HKLM ${EnvironmentKey} "LIBSRT"
- ; Delete product files.
- RMDir /r "$0\include"
- RMDir /r "$0\lib"
- Delete "$0\libsrt.props"
- Delete "$0\LICENSE*"
- Delete "$0\Uninstall.exe"
- RMDir "$0"
- ; Notify applications of environment modifications
- SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
- SectionEnd
|