Add on-line KVASD install to Windows NSIS installer

To comply  with the  WSJT_X GPL  v3 license,  the closed  source KVASD
executable  must  be  delivered   separately  and  optionally  to  end
users. To facilitate  this a new install option has  been added to the
Windows  installer  to install  KVASD  by  downloading it  at  install
time. The installer  first downloads the KVASD EULA  from the Internet
and presents it  to the user for reading and  agreement.  If agreement
is  given  the  KVASD  binary  is downloaded  from  the  Internet  and
checksummed using an  MD5 hash, if that passes, it  is installed along
with WSJT-X.  An  uninstall record is also written to  ensure that, if
installed, KVASD will be un-installed if WSJT-X is un-installed.

To facilitate this enhancment to the NSIS installer the standard CPack
NSIS  installer script  template has  been overridden  with a  project
specific version.   This version also  implements the more  modern and
recomended nsDialogs mechanism for  installer custom page construction
including the install options page. See CMake/Modules/NSIS.template.in
for  details   and  CMakeCPackOptions.cmake.in   for  usage   in  this
installer.

Merged from branch wsjtx-1.4.



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4663 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Bill Somerville 2014-11-27 17:17:19 +00:00
parent 8e806c7201
commit 46064e3af3
11 changed files with 1321 additions and 58 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,25 +1,34 @@
#
# CMake script to fetch kvasd binary for the current platform
#
set (kvasd_NAME https://svn.code.sf.net/p/wsjt/wsjt/trunk/kvasd-binary/${SYSTEM_NAME}/kvasd${EXECUTABLE_SUFFIX})
set (kvasd_NAME ${URL}/${SYSTEM_NAME}/kvasd${EXECUTABLE_SUFFIX})
message (STATUS "file: ${kvasd_NAME}")
if (APPLE)
set (__kvasd_md5sum 198dbdde1e4b04f9940f63731097ee35)
elseif (WIN32)
set (__kvasd_md5sum 7b16809e51126a01bd02aed44427510c)
elseif (UNIX)
set (__kvasd_md5sum 28a6f8ba2efc3df02af2a781bd3ab654)
endif ()
file (
DOWNLOAD ${kvasd_NAME}.md5 contrib/kvasd${EXECUTABLE_SUFFIX}.md5
TIMEOUT 120
STATUS status
LOG log
SHOW_PROGRESS
)
list (GET staus 0 rc)
if (rc)
message (WARNING "${status}")
message (FATAL_ERROR "${log}")
endif (rc)
file (READ contrib/kvasd${EXECUTABLE_SUFFIX}.md5 md5sum)
string (REGEX MATCH "[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]" md5sum ${md5sum})
file (
DOWNLOAD ${kvasd_NAME} contrib/kvasd${EXECUTABLE_SUFFIX}
TIMEOUT 120
STATUS kvasd_STATUS
LOG kvasd_LOG
STATUS status
LOG log
SHOW_PROGRESS
EXPECTED_MD5 ${__kvasd_md5sum}
EXPECTED_MD5 ${md5sum}
)
list (GET kvasd_STATUS 0 kvasd_RC)
if (kvasd_RC)
message (WARNING "${kvasd_STATUS}")
message (FATAL_ERROR "${kvasd_LOG}")
endif (kvasd_RC)
list (GET status 0 rc)
if (rc)
message (WARNING "${status}")
message (FATAL_ERROR "${log}")
endif (rc)

View File

@ -15,9 +15,11 @@ set (CPACK_STRIP_FILES TRUE)
#
# components
#
#set (CPACK_COMPONENTS_ALL Unspecified Runtime)
#set (CPACK_COMPONENT_APPLICATIONS_DISPLAY_NAME "@PROJECT_NAME@ Application")
#set (CPACK_COMPONENT_APPLICATIONS_DESCRIPTION "@WSJTX_DESCRIPTION_SUMMARY@")
#set (CPACK_COMPONENTS_ALL runtime kvasd)
#set (CPACK_COMPONENT_RUNTIME_DISPLAY_NAME "@PROJECT_NAME@ Application")
#set (CPACK_COMPONENT_RUNTIME_DESCRIPTION "@WSJTX_DESCRIPTION_SUMMARY@")
#set (CPACK_COMPONENT_KVASD_DISPLAY_NAME "KVASD Reed Solomon Decoder")
#set (CPACK_COMPONENT_KVASD_DESCRIPTION "Optional decoder component")
if (CPACK_GENERATOR MATCHES "NSIS")
set (CPACK_STRIP_FILES FALSE) # breaks Qt packaging on Windows
@ -44,6 +46,191 @@ if (CPACK_GENERATOR MATCHES "NSIS")
set (CPACK_NSIS_CONTACT "${CPACK_PACKAGE_CONTACT}")
set (CPACK_NSIS_MUI_FINISHPAGE_RUN "wsjtx.exe")
set (CPACK_NSIS_MODIFY_PATH ON)
set (CPACK_NSIS_EXTRA_DEFINES "
;
; enable local plugins
;
!ifdef NSIS_WIN32_MAKENSIS
!define NSISCONF_3 ';' ; NSIS 2 tries to parse some preprocessor instructions inside \"!if 0\" blocks!
!addincludedir '@CMAKE_CURRENT_SOURCE_DIR@\\contrib\\NSIS\\Include'
!if \${NSIS_PACKEDVERSION} > 0x02ffffff ; NSIS 3+:
!define /redef NSISCONF_3 ''
\${NSISCONF_3} !addplugindir /x86-ansi '@CMAKE_CURRENT_SOURCE_DIR@\\contrib\\NSIS\\Plugins-i386-ansi'
\${NSISCONF_3} !addplugindir /x86-unicode '@CMAKE_CURRENT_SOURCE_DIR@\\contrib\\NSIS\\Plugins-i386-unicode'
!else ; NSIS 2:
!addplugindir '@CMAKE_CURRENT_SOURCE_DIR@\\contrib\\NSIS\\Plugins-i386-ansi'
!endif ;~ NSIS_PACKEDVERSION
!undef NSISCONF_3
!endif ;~ NSIS_WIN32_MAKENSIS
; global variables
Var KVASD_EXECUTABLE
Var CB_INSTALL_KVASD
Var INSTALL_KVASD
Var RichEditLicense
Var CheckBoxAgree
Var KVASD_LICENSE
; page callbacks
Function KVASD_page_create
Push $R0
\${If} $INSTALL_KVASD = \${BST_CHECKED}
\${AndIfNot} \${FileExists} $KVASD_LICENSE
GetTempFileName $KVASD_LICENSE
retry_eula:
NSISdl::download /TIMEOUT=30000 @PROJECT_KVASD_URL@/kvasd_eula.txt $KVASD_LICENSE
Pop $R0
\${If} $R0 != success
MessageBox MB_RETRYCANCEL|MB_ICONQUESTION 'Download: @PROJECT_KVASD_URL@/kvasd_eula.txt$\\nFailed: $R0' IDRETRY retry_eula
StrCpy $INSTALL_KVASD \${BST_UNCHECKED}
Delete $KVASD_LICENSE
\${EndIf}
\${EndIf}
\${If} $INSTALL_KVASD = \${BST_CHECKED}
\${AndIf} \${FileExists} $KVASD_LICENSE
!insertmacro MUI_HEADER_TEXT `$(MUI_TEXT_LICENSE_TITLE)` `Please agree the terms of this license before installing KVASD`
; disable install button until agreed
GetDlgItem $R0 $HWNDPARENT 1
EnableWindow $R0 0
nsDialogs::Create 1018
Pop $R0
; \${If} $R0 == error
; Abort
; \${EndIf}
nsDialogs::CreateControl RichEdit20A \${WS_VISIBLE}|\${WS_CHILD}|\${WS_TABSTOP}|\${WS_VSCROLL}|\${ES_MULTILINE}|\${ES_READONLY} \${__NSD_Text_EXSTYLE} 0 0 100% -24u ''
Pop $RichEditLicense
nsRichEdit::Load $RichEditLicense $KVASD_LICENSE
\${NSD_CreateCheckBox} 0 -20u 160u 12u `$(^AcceptBtn)`
Pop $CheckBoxAgree
\${NSD_OnClick} $CheckBoxAgree KVASD_Page_CheckBoxAgree_Click
nsDialogs::Show
\${Else}
Abort ; skip page
\${EndIf}
Pop $R0
FunctionEnd
Function KVASD_page_leave
FunctionEnd
; field callbacks
Function KVASD_Page_CheckBoxAgree_Click
Pop $0
\${NSD_GetState} $CheckBoxAgree $R0
\${If} $R0 = \${BST_CHECKED}
GetDlgItem $R0 $HWNDPARENT 1
EnableWindow $R0 1
\${Else}
GetDlgItem $R0 $HWNDPARENT 1
EnableWindow $R0 0
\${EndIf}
FunctionEnd"
)
set (CPACK_NSIS_EXTRA_INIT_COMMANDS "
; initial value of $INSATLL_KVASD chack box
IntOp $INSTALL_KVASD 0 + \${BST_CHECKED}"
)
set (CPACK_NSIS_EXTRA_PAGES "
; custom page for KVASD license display and acceptance
Page custom KVASD_page_create KVASD_page_leave"
)
set (CPACK_NSIS_EXTRA_INSTALL_OPTIONS "
; add a chackbox for installing KVASD
\${NSD_CreateCheckBox} 0u 110u 100% 10u 'Install the optional KVASD decoder'
Pop $CB_INSTALL_KVASD
\${NSD_SetState} $CB_INSTALL_KVASD $INSTALL_KVASD"
)
set (CPACK_NSIS_EXTRA_INSTALL_OPTIONS_READ "
\${NSD_GetState} $CB_INSTALL_KVASD $INSTALL_KVASD"
)
set (CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS "
\${If} $INSTALL_KVASD = \${BST_CHECKED}
;
; fetch KVASD license
;
StrCpy $5 @PROJECT_KVASD_URL@/@SYSTEM_NAME@/kvasd@CMAKE_EXECUTABLE_SUFFIX@
GetTempFileName $1
retry:
NSISdl::download /TIMEOUT=30000 $5.md5 $1
Pop $R0
\${If} $R0 != success
MessageBox MB_RETRYCANCEL|MB_ICONQUESTION 'Download: $5.md5$\\nFailed: $R0' IDRETRY retry
Abort
\${EndIf}
ClearErrors
FileOpen $2 $1 r
\${If} \${Errors}
MessageBox MB_RETRYCANCEL|MB_ICONQUESTION 'Failed to read MD5 hash file: $5.md5' IDRETRY retry
Abort
\${EndIf}
; extract MD5 hash
FileRead $2 $3 32
FileClose $2
;
; fetch kvasd executable
;
GetTempFileName $KVASD_EXECUTABLE
NSISdl::download /TIMEOUT=30000 $5 $KVASD_EXECUTABLE
Pop $R0
\${If} $R0 != success
MessageBox MB_RETRYCANCEL|MB_ICONQUESTION 'Download: $5$\\nFailed: $R0' IDRETRY retry
Abort
\${EndIf}
; calculate MD5 hash
Crypto::HashFile 'MD5' $KVASD_EXECUTABLE
Pop $0
\${If} $3 != $0
MessageBox MB_RETRYCANCEL|MB_ICONQUESTION 'MD5 hash check failed on: $5$\\nExpected: [$4]$\\n Actual: [$0]' IDRETRY retry
Abort
\${EndIf}
skip_kvasd:
Delete $1 ; MD5 hash file
\${EndIf}
; save $INSTALL_KVASD to registry for use in teh un-installer
WriteRegDWORD SHCTX 'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\${CPACK_PACKAGE_INSTALL_REGISTRY_KEY}' \\
'InstallKvasd' $INSTALL_KVASD"
)
set (CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
; install the kvasd executable
\${If} $INSTALL_KVASD = \${BST_CHECKED}
\${AndIf} \${FileExists} $KVASD_EXECUTABLE
DetailPrint 'Installing: $INSTDIR\\@WSJT_BIN_DESTINATION@\\kvasd@CMAKE_EXECUTABLE_SUFFIX@'
Rename $KVASD_EXECUTABLE '$INSTDIR\\@WSJT_BIN_DESTINATION@\\kvasd@CMAKE_EXECUTABLE_SUFFIX@'
\${EndIf}"
)
set (CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "
; fetch $INSTALL_KVASD from registry
ReadRegDWORD $INSTALL_KVASD SHCTX \\
'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\${CPACK_PACKAGE_INSTALL_REGISTRY_KEY}' 'InstallKvasd'
; conditionally un-install the kvasd executable
\${If} $INSTALL_KVASD = \${BST_CHECKED}
Delete '$INSTDIR\\@WSJT_BIN_DESTINATION@\\kvasd@CMAKE_EXECUTABLE_SUFFIX@'
\${EndIf}"
)
endif ()
if ("${CPACK_GENERATOR}" STREQUAL "PackageMaker")

View File

@ -49,8 +49,9 @@ set (PROJECT_DESCRIPTION "${PROJECT_SUMMARY_DESCRIPTION}
standard SSB-width IF filters, switching between JT65 and JT9 modes
is quick and convenient. Be sure to read the online ${PROJECT_NAME} User's
Guide.")
set (PROJECT_KVASD_URL https://svn.code.sf.net/p/wsjt/wsjt/trunk/kvasd-binary)
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMake/Modules)
set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMake/Modules ${CMAKE_MODULE_PATH})
include (${PROJECT_SOURCE_DIR}/CMake/VersionCompute.cmake)
message (STATUS "Building ${CMAKE_PROJECT_NAME}-${wsjtx_VERSION}")
@ -102,7 +103,7 @@ attach a debugger which will then receive the console output inside its console.
# decide if we are bundling kvasd (non-FOSS)
#
CMAKE_DEPENDENT_OPTION (WSJT_INCLUDE_KVASD "Include kvasd in the package." OFF
"NOT is_debug_build;NOT WIN32" ON)
"NOT is_debug_build" ON)
#
@ -666,19 +667,6 @@ elseif (CMAKE_HOST_WIN32)
endif ()
if (WSJT_INCLUDE_KVASD)
#
# fetch and validate kvasd
#
set (KVASD contrib/kvasd${CMAKE_EXECUTABLE_SUFFIX})
add_custom_target (kvasd ALL
${CMAKE_COMMAND} -D SYSTEM_NAME=${CMAKE_SYSTEM_NAME} -D EXECUTABLE_SUFFIX=${CMAKE_EXECUTABLE_SUFFIX} -P ${CMAKE_SOURCE_DIR}/CMake/download_kvasd.cmake
COMMENT "Downloading kvasd for ${CMAKE_SYSTEM_NAME}"
VERBATIM
)
endif (WSJT_INCLUDE_KVASD)
# UI generation
qt5_wrap_ui (wsjt_qt_GENUISRCS ${wsjt_qt_UISRCS})
qt5_wrap_ui (ConfigTest_GENUISRCS ${ConfigTest_UISRCS})
@ -736,6 +724,24 @@ add_executable (wsjtx MACOSX_BUNDLE
)
qt5_use_modules (wsjtx Widgets OpenGL Network Multimedia)
set (SYSTEM_NAME ${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR})
if (WIN32)
set (SYSTEM_NAME "${SYSTEM_NAME}i386")
endif (WIN32)
if (WSJT_INCLUDE_KVASD)
#
# fetch and validate kvasd
#
set (KVASD_BINARY contrib/kvasd${CMAKE_EXECUTABLE_SUFFIX})
add_custom_target (kvasd ALL
${CMAKE_COMMAND} -D SYSTEM_NAME=${SYSTEM_NAME} -D EXECUTABLE_SUFFIX=${CMAKE_EXECUTABLE_SUFFIX} -D URL=${PROJECT_KVASD_URL} -P ${CMAKE_SOURCE_DIR}/CMake/download_kvasd.cmake
COMMENT "Downloading kvasd for ${SYSTEM_NAME}"
VERBATIM
)
endif (WSJT_INCLUDE_KVASD)
if (UNIX)
if (NOT WSJT_SKIP_MANPAGES)
add_subdirectory (manpages)
@ -768,24 +774,19 @@ target_link_libraries (wsjtx wsjt wsjt_qt ${hamlib_LIBRARIES} ${FFTW3_LIBRARIES}
# installation
#
install (TARGETS wsjtx
RUNTIME DESTINATION ${WSJT_BIN_DESTINATION}
LIBRARY DESTINATION ${WSJT_LIB_DESTINATION}
BUNDLE DESTINATION .
#COMPONENT Runtime
RUNTIME DESTINATION ${WSJT_BIN_DESTINATION} COMPONENT runtime
BUNDLE DESTINATION . COMPONENT runtime
)
install (TARGETS jt9 jt65code jt9code
RUNTIME DESTINATION ${WSJT_BIN_DESTINATION}
LIBRARY DESTINATION ${WSJT_LIB_DESTINATION}
BUNDLE DESTINATION ${WSJT_BIN_DESTINATION}
#COMPONENT Runtime
RUNTIME DESTINATION ${WSJT_BIN_DESTINATION} COMPONENT runtime
BUNDLE DESTINATION ${WSJT_BIN_DESTINATION} COMPONENT runtime
)
if (WSJT_INCLUDE_KVASD)
install (PROGRAMS
${CMAKE_BINARY_DIR}/${KVASD}
DESTINATION ${WSJT_BIN_DESTINATION}
#COMPONENT Runtime
${CMAKE_BINARY_DIR}/${KVASD_BINARY}
DESTINATION ${WSJT_BIN_DESTINATION} COMPONENT runtime
)
else (WSJT_INCLUDE_KVASD)
if (APPLE)
@ -800,14 +801,14 @@ endif (WSJT_INCLUDE_KVASD)
install (PROGRAMS
${RIGCTLD_EXE}
DESTINATION ${WSJT_BIN_DESTINATION}
#COMPONENT Runtime
#COMPONENT runtime
RENAME rigctld-wsjtx${CMAKE_EXECUTABLE_SUFFIX}
)
install (FILES
${CMAKE_BINARY_DIR}/contrib/${PROJECT_MANUAL}
DESTINATION ${WSJT_SHARE_DESTINATION}/${WSJT_DOC_DESTINATION}
#COMPONENT Runtime
#COMPONENT runtime
)
#
@ -818,7 +819,7 @@ if (APPLE)
Darwin/ReadMe.txt
Darwin/sysctl.conf
DESTINATION .
#COMPONENT Runtime
#COMPONENT runtime
)
endif (APPLE)
@ -862,12 +863,12 @@ if (NOT WIN32 AND NOT APPLE)
install (
FILES wsjtx.desktop
DESTINATION share/applications
#COMPONENT Runtime
#COMPONENT runtime
)
install (
FILES icons/Unix/wsjtx_icon.png
DESTINATION share/pixmaps
#COMPONENT Runtime
#COMPONENT runtime
)
endif (NOT WIN32 AND NOT APPLE)
@ -901,7 +902,7 @@ if (NOT is_debug_build)
\"[Paths]
\")
"
#COMPONENT Runtime
#COMPONENT runtime
)
# if a system Qt is used (e.g. installed in /usr/lib/), it will not be included in the installation
@ -918,7 +919,7 @@ if (NOT is_debug_build)
${QT_PLUGINS_DIR}/accessible
DESTINATION ${WSJT_PLUGIN_DESTINATION}
CONFIGURATIONS Release MinSizeRel
#COMPONENT Runtime
#COMPONENT runtime
FILES_MATCHING PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}"
PATTERN "*minimal*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE
PATTERN "*offscreen*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE
@ -932,7 +933,7 @@ if (NOT is_debug_build)
# ${QT_PLUGINS_DIR}/accessible
# DESTINATION ${WSJT_PLUGIN_DESTINATION}
# CONFIGURATIONS Debug
# #COMPONENT Runtime
# #COMPONENT runtime
# FILES_MATCHING PATTERN "*_debug${CMAKE_SHARED_LIBRARY_SUFFIX}"
# PATTERN "*minimal*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE
# PATTERN "*offscreen*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE
@ -945,7 +946,7 @@ file (APPEND \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WSJT_QT_CONF_DESTINATION
\"Plugins = Plugins
\")
"
#COMPONENT Runtime
#COMPONENT runtime
)
endif (APPLE)
@ -963,7 +964,7 @@ file (APPEND \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WSJT_QT_CONF_DESTINATION
${QT_PLUGINS_DIR}/accessible
DESTINATION ${WSJT_PLUGIN_DESTINATION}
CONFIGURATIONS Release MinSizeRel
#COMPONENT Runtime
#COMPONENT runtime
FILES_MATCHING PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}"
PATTERN "*minimal*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE
PATTERN "*offscreen*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE
@ -976,7 +977,7 @@ file (APPEND \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WSJT_QT_CONF_DESTINATION
# ${QT_PLUGINS_DIR}/accessible
# DESTINATION ${WSJT_PLUGIN_DESTINATION}
# CONFIGURATIONS Debug
# #COMPONENT Runtime
# #COMPONENT runtime
# FILES_MATCHING PATTERN "*d${CMAKE_SHARED_LIBRARY_SUFFIX}"
# PATTERN "*minimal*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE
# PATTERN "*offscreen*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE
@ -990,7 +991,7 @@ file (APPEND \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WSJT_QT_CONF_DESTINATION
\"Plugins = ${_plugins_path}
\")
"
#COMPONENT Runtime
#COMPONENT runtime
)
# set (gp_tool "objdump") # we want MinGW tool - not MSVC (See GetPrerequisites.cmake)
@ -1010,7 +1011,7 @@ file (APPEND \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WSJT_QT_CONF_DESTINATION
message (STATUS \"fixup_exe: \${the_exe}\")
fixup_bundle (\"\${the_exe}\" \"\${QTPLUGINS}\" \"${fixup_library_dirs}\")
"
#COMPONENT Runtime
#COMPONENT runtime
)
endif (APPLE OR WIN32)
@ -1020,6 +1021,7 @@ endif (NOT is_debug_build)
#
# packaging
#
set (CPACK_MONOLITHIC_INSTALL 1)
set (CPACK_PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
set (CPACK_PACKAGE_VERSION_MAJOR ${WSJTX_VERSION_MAJOR})
set (CPACK_PACKAGE_VERSION_MINOR ${WSJTX_VERSION_MINOR})

BIN
contrib/NSIS/NsRichEdit.zip Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

9
contrib/NSIS/README Normal file
View File

@ -0,0 +1,9 @@
NSIS Addons
===========
This directory contains archives of NSIS plugins and includes that are
used in making the WSJT-X Windows installer. The plugin DLLs are also
extracted and deployed in sub-directories where they are added to the
project NSIS plugin path in the project CMakeCPackOptions.cmake.in
template which is in turn used in generating the NSIS installer script
from the CMake/Modules/NSIS.template.in template file.

Binary file not shown.