Add Windows installer file and configure appveyor to create it

Also update OpenSSL on Windows to latest version.
This commit is contained in:
Roger A. Light 2015-03-09 22:02:59 +00:00 committed by Andy Green
parent 7d62eb066e
commit 12126d701e
3 changed files with 138 additions and 4 deletions

View file

@ -885,6 +885,12 @@ set(CPACK_SOURCE_IGNORE_FILES $(CPACK_SOURCE_IGNORE_FILES) ".git" "build" "tgz"
# Most people are more used to "make dist" compared to "make package_source"
add_custom_target(dist COMMAND "${CMAKE_MAKE_PROGRAM}" package_source)
# ===========================================================================
# Windows installer
set(CPACK_NSIS_DISPLAY_NAME "bob")
# ===========================================================================
include(UseRPMTools)
if (RPMTools_FOUND)
RPMTools_ADD_RPM_TARGETS(libwebsockets libwebsockets.spec)

View file

@ -14,15 +14,27 @@ environment:
- LWS_METHOD: nossl
CMAKE_ARGS: -DLWS_WITH_SSL=OFF
install:
- appveyor DownloadFile http://slproweb.com/download/Win32OpenSSL-1_0_1L.exe
- Win32OpenSSL-1_0_1L.exe /silent /verysilent /sp- /suppressmsgboxes
- appveyor DownloadFile http://slproweb.com/download/Win32OpenSSL-1_0_2.exe
- Win32OpenSSL-1_0_2.exe /silent /verysilent /sp- /suppressmsgboxes
- cinst nsis
build:
build_script:
- md build
- cd build
- cmake %CMAKE_ARGS% ..
- cmake --build .
- cmake -DCMAKE_BUILD_TYPE=Release %CMAKE_ARGS% ..
- cmake --build . --config Release
after_build:
- cd ..
- cd win32port
- C:\Program Files\NSIS\makensis.exe -DVERSION=%APPVEYOR_BUILD_VERSION% libwebsockets.nsi'
artifacts:
- name: Installer
path: 'win32port/libwebsockets-*-install.exe'
cache:
- C:\OpenSSL-Win32

116
win32port/libwebsockets.nsi Normal file
View file

@ -0,0 +1,116 @@
; NSIS installer script for libwebsockets
SetCompressor
!include "MUI.nsh"
Name "libwebsockets"
OutFile "libwebsockets-${VERSION}-install.exe"
InstallDir "$PROGRAMFILES\libwebsockets"
;--------------------------------
; Installer pages
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
;--------------------------------
; Uninstaller pages
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_UNPAGE_FINISH
;--------------------------------
; Languages
!insertmacro MUI_LANGUAGE "English"
;--------------------------------
; Installer sections
Section "Files" SecInstall
SectionIn RO
SetOutPath "$INSTDIR"
File "..\libwebsockets-api-doc.html"
File "..\LICENSE"
File "..\README"
File "..\README.build"
File "..\README.coding"
File "..\README.test-apps"
File "..\build\bin\Release\libwebsockets-test-client.exe"
File "..\build\bin\Release\libwebsockets-test-echo.exe"
File "..\build\bin\Release\libwebsockets-test-fraggle.exe"
File "..\build\bin\Release\libwebsockets-test-ping.exe"
File "..\build\bin\Release\libwebsockets-test-server.exe"
File "..\build\bin\Release\libwebsockets-test-server-extpoll.exe"
File "..\build\bin\Release\websockets.dll"
SetOutPath "$INSTDIR\libwebsockets-test-server"
File "..\build\bin\share\libwebsockets-test-server\favicon.ico"
File "..\build\bin\share\libwebsockets-test-server\leaf.jpg"
File "..\build\bin\share\libwebsockets-test-server\libwebsockets.org-logo.png"
File "..\build\bin\share\libwebsockets-test-server\libwebsockets-test-server.key.pem"
File "..\build\bin\share\libwebsockets-test-server\libwebsockets-test-server.pem"
File "..\build\bin\share\libwebsockets-test-server\test.html"
SetOutPath "$INSTDIR\lib"
File "..\build\lib\Release\websockets.lib"
File "..\build\lib\Release\websockets_static.lib"
SetOutPath "$INSTDIR\include"
File "..\lib\libwebsockets.h"
WriteUninstaller "$INSTDIR\Uninstall.exe"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\libwebsockets" "DisplayName" "libwebsockets library and clients"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\libwebsockets" "UninstallString" "$\"$INSTDIR\Uninstall.exe$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\libwebsockets" "QuietUninstallString" "$\"$INSTDIR\Uninstall.exe$\" /S"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\libwebsockets" "HelpLink" "http://libwebsockets.org/"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\libwebsockets" "URLInfoAbout" "http://libwebsockets.org/"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\libwebsockets" "DisplayVersion" "${VERSION}"
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\libwebsockets" "NoModify" "1"
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\libwebsockets" "NoRepair" "1"
SectionEnd
Section "Uninstall"
Delete "$INSTDIR\libwebsockets-api-doc.html"
Delete "$INSTDIR\LICENSE"
Delete "$INSTDIR\README"
Delete "$INSTDIR\README.build"
Delete "$INSTDIR\README.coding"
Delete "$INSTDIR\README.test-apps"
Delete "$INSTDIR\libwebsockets-test-client.exe"
Delete "$INSTDIR\libwebsockets-test-echo.exe"
Delete "$INSTDIR\libwebsockets-test-fraggle.exe"
Delete "$INSTDIR\libwebsockets-test-ping.exe"
Delete "$INSTDIR\libwebsockets-test-server.exe"
Delete "$INSTDIR\libwebsockets-test-server-extpoll.exe"
Delete "$INSTDIR\websockets.dll"
Delete "$INSTDIR\libwebsockets-test-server\favicon.ico"
Delete "$INSTDIR\libwebsockets-test-server\leaf.jpg"
Delete "$INSTDIR\libwebsockets-test-server\libwebsockets.org-logo.png"
Delete "$INSTDIR\libwebsockets-test-server\libwebsockets-test-server.key.pem"
Delete "$INSTDIR\libwebsockets-test-server\libwebsockets-test-server.pem"
Delete "$INSTDIR\libwebsockets-test-server\test.html"
RMDir "$INSTDIR\libwebsockets-test-server"
Delete "$INSTDIR\lib\websockets.lib"
Delete "$INSTDIR\lib\websockets_static.lib"
RMDir "$INSTDIR\lib"
Delete "$INSTDIR\include\libwebsockets.h"
RMDir "$INSTDIR\include"
Delete "$INSTDIR\Uninstall.exe"
RMDir "$INSTDIR"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\libwebsockets"
SectionEnd
LangString DESC_SecInstall ${LANG_ENGLISH} "The main installation."
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SecInstall} $(DESC_SecInstall)
!insertmacro MUI_FUNCTION_DESCRIPTION_END