diff --git a/CMakeLists.txt b/CMakeLists.txt index fe18b47b..1621382e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/appveyor.yml b/appveyor.yml index 47a73f60..d69d7586 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -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 diff --git a/win32port/libwebsockets.nsi b/win32port/libwebsockets.nsi new file mode 100644 index 00000000..b23026a6 --- /dev/null +++ b/win32port/libwebsockets.nsi @@ -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 +