Refactor Companion Windows install and installer targets (#5949)

* [companion][build][Windows] Refactor 'install' and 'installer' targets: Use qtwindeploy to collect Qt dependencies; 'install' with WIN_DO_FULL_INSTALL=YES now really copies everything needed; Simplified NSIS script, now also supports MinGW build; Refactor libeay search.

* Rename nsis input script.

* Fix NSIS input script name in CMakeLists.txt.

* [Companion][build] Create new Windows icon with more sizes; move icon files out of src root.
This commit is contained in:
Max Paperno
2018-06-29 08:07:02 +02:00
committed by Bertrand Songis
parent 7db74cb017
commit 71912cfdbd
26 changed files with 83 additions and 766 deletions
+50 -73
View File
@@ -303,7 +303,7 @@ set(companion_UIS
)
if(WIN32)
set(icon_RC icon.rc)
set(icon_RC images/winicons/icon.rc)
endif()
qt5_wrap_ui(companion_SRCS ${companion_UIS})
@@ -362,13 +362,6 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
elseif(WIN32)
set(QT_DLL_DIR ${QT_LIB_DIR})
set(INSTALL_TEMP_QTDLL_FILES Qt5Core Qt5Gui Qt5Widgets Qt5Xml Qt5Network Qt5PrintSupport Qt5Multimedia Qt5Svg)
set(INSTALL_TEMP_ICUDLL_FILES icudt54.dll icuin54.dll icuuc54.dll)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(INSTALL_TEMP_QTDLL_SFX "d")
endif()
if(NOT WIN_DO_FULL_INSTALL)
# Just copy supporting DLLs to build folder
set(INSTALL_DESTINATION "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
@@ -382,106 +375,90 @@ elseif(WIN32)
install(TARGETS ${SIMULATOR_NAME} DESTINATION ${INSTALL_DESTINATION})
install(FILES ${simulator_plugins} DESTINATION "${INSTALL_DESTINATION}")
# supporting utilities
set(INSTALL_TEMP_FILES avrdude.exe avrdude.conf dfu-util.exe libusb0.dll libusb-1.0.dll)
set(INSTALL_TEMP_FILES avrdude.exe avrdude.conf dfu-util.exe libusb0.dll libusb-1.0.dll license.txt)
foreach(tmpfile ${INSTALL_TEMP_FILES})
install(FILES "${COMPANION_SRC_DIRECTORY}/../targets/windows/${tmpfile}" DESTINATION ${INSTALL_DESTINATION})
endforeach()
endif() # WIN_DO_FULL_INSTALL
# Qt dlls
foreach(tmpfile ${INSTALL_TEMP_QTDLL_FILES})
install(FILES ${QT_DLL_DIR}/${tmpfile}${INSTALL_TEMP_QTDLL_SFX}.dll DESTINATION ${INSTALL_DESTINATION})
endforeach()
install(FILES ${QT_DLL_DIR}/../plugins/platforms/qwindows${INSTALL_TEMP_QTDLL_SFX}.dll DESTINATION ${INSTALL_DESTINATION}/platforms)
# ICU dlls
foreach(tmpfile ${INSTALL_TEMP_ICUDLL_FILES})
# Qt5.7+ doesn't use icu dlls anymore, hence optional
install(FILES ${QT_DLL_DIR}/${tmpfile}.dll DESTINATION ${INSTALL_DESTINATION} OPTIONAL)
endforeach()
# Qt dlls (using windeployqt)
## Qt translations are already packaged into our custom qrc. Pckg size could be further reduced with: [--no-system-d3d-compiler] [--no-angle]
set(wdqtopts --no-translations --no-opengl-sw)
if(CMAKE_BUILD_TYPE STREQUAL "Release")
set(wdqtopts ${wdqtopts} --release) # release builds aren't always properly detected with mingw
endif()
if(MSVC)
set(wdqtopts ${wdqtopts} --no-compiler-runtime) # --compiler-runtime includes vcredist_x86, but we just copy the required DLLs manually
endif()
set(wdqtopts ${wdqtopts} -dir "${INSTALL_DESTINATION}" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${COMPANION_NAME}.exe" "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${SIMULATOR_NAME}.exe")
# Add installer command to execute windeployqt
install(CODE "execute_process(COMMAND \"${QT_BIN_DIR}/windeployqt.exe\" ${wdqtopts})")
# SDL dll
if(SDL_FOUND AND SDL_LIBRARY_PATH AND EXISTS "${SDL_LIBRARY_PATH}/SDL.dll")
if(SDL_FOUND AND EXISTS "${SDL_LIBRARY_PATH}/SDL.dll")
set(SDL_DIR ${SDL_LIBRARY_PATH}) # this is also used by NSIS installer script
install(FILES ${SDL_DIR}/SDL.dll DESTINATION ${INSTALL_DESTINATION})
elseif(SDL_FOUND)
message(WARNING "Installer: SDL.dll not found!")
message(WARNING "Installer: SDL.dll not found, set SDL_LIBRARY_PATH manually.")
endif()
# libeay (SSL) dlls (used by QtNetwork)
set(EAY_LIB_DIR "") # this is also used by NSIS installer script
# Mingw-w64 comes with the required DLLs
if (MINGW AND IS_DIRECTORY "${MINGW_DIR}/../opt/bin/libeay32.dll")
set(EAY_LIB_DIR "${MINGW_DIR}/../opt/bin")
# check the user-configured WIN_EXTRA_LIBS_PATH for an OpenSSL folder
elseif(EXISTS "${WIN_EXTRA_LIBS_PATH}/OpenSSL/libeay32.dll")
set(EAY_LIB_DIR "${WIN_EXTRA_LIBS_PATH}/OpenSSL")
# most build setups will still have the (now legacy) PyQt dependency, so check for that next
elseif(EXISTS "${PYTHON_DIRECTORY}/lib/site-packages/PyQt4/libeay32.dll")
set(EAY_LIB_DIR "${PYTHON_DIRECTORY}/lib/site-packages/PyQt4")
else()
# the "slow" way -- look for an OpenSSL install
find_package("OpenSSL")
if (OPENSSL_FOUND)
set(EAY_LIB_DIR "${OPENSSL_INCLUDE_DIR}/../bin")
endif()
endif()
# libeay (SSL) dlls (used by QtNetwork) -- not strictly required but avoids possible issues with downloads and Qt warnings.
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" WIN_PROGRAM_FILES)
find_path(EAY_LIB_DIR libeay32.dll HINTS
"${WIN_PROGRAM_FILES}/OpenSSL" "${WIN_PROGRAM_FILES}/OpenSSL-Win32"
"C:/OpenSSL/" "C:/OpenSSL-Win32/"
"${WIN_EXTRA_LIBS_PATH}" "${WIN_EXTRA_LIBS_PATH}/OpenSSL" "${WIN_EXTRA_LIBS_PATH}/OpenSSL-Win32"
"${MINGW_DIR}/../opt/bin"
"${PYTHON_DIRECTORY}/lib/site-packages/PyQt4"
PATH_SUFFIXES bin
DOC "Path to libeay32.dll and ssleay32.dll (OpenSSL)"
)
if (EAY_LIB_DIR)
install(FILES "${EAY_LIB_DIR}/libeay32.dll" "${EAY_LIB_DIR}/ssleay32.dll" DESTINATION ${INSTALL_DESTINATION} OPTIONAL)
else()
message(WARNING "Installer: SSL libs not found, set EAY_LIB_DIR manually.")
endif()
# C++/system dlls, depends on compiler
if(MSVC)
string(REPLACE "\\" "/" WIN_SYSDIR "$ENV{windir}")
set(WIN_SYSDIR "${WIN_SYSDIR}/SysWOW64") # This would be "system32" for a 64-bit build or on x86... but how to tell?
if(IS_DIRECTORY "${WIN_SYSDIR}")
install(FILES "${WIN_SYSDIR}/msvcp140.dll" "${WIN_SYSDIR}/vcruntime140.dll" DESTINATION ${INSTALL_DESTINATION} OPTIONAL)
file(TO_CMAKE_PATH "$ENV{windir}/SysWOW64" WIN_SYSDIR) # This would be "system32" for a 64-bit build or on x86... but how to tell?
if (NOT EXISTS "${WIN_SYSDIR}")
file(TO_CMAKE_PATH "$ENV{windir}/system32" WIN_SYSDIR) # Must be 32-bit Windows.
endif()
install(FILES "${WIN_SYSDIR}/msvcp140.dll" "${WIN_SYSDIR}/vcruntime140.dll" DESTINATION ${INSTALL_DESTINATION} OPTIONAL)
if(WIN_PTHREAD_DLL)
install(FILES "${WIN_PTHREAD_DLL}" DESTINATION ${INSTALL_DESTINATION})
endif()
elseif(MINGW)
install(FILES "${MINGW_DIR}/libgcc_s_dw2-1.dll" "${MINGW_DIR}/libstdc++-6.dll" "${MINGW_DIR}/libwinpthread-1.dll" DESTINATION ${INSTALL_DESTINATION})
endif()
endif() # WIN32 install
############# Packaging ####################
# Create Windows installer with NSIS (only works for MSVC for now)
# Create Windows installer with NSIS
if(WIN32)
if(MSVC)
set(COMPANION_NSI_IN_FILE companion-vs.nsi.in)
set(SIMULATOR_NSI_IN_FILE simulator-vs.nsi.in)
else()
set(COMPANION_NSI_IN_FILE companion-msys.nsi.in)
set(SIMULATOR_NSI_IN_FILE simulator-msys.nsi.in)
endif()
set(SYSDIR "$ENV{windir}/system32")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../targets/windows/${COMPANION_NSI_IN_FILE} ${PROJECT_BINARY_DIR}/companion/companion.nsi @ONLY)
#configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../targets/windows/${SIMULATOR_NSI_IN_FILE} ${PROJECT_BINARY_DIR}/companion/simulator.nsi @ONLY)
find_program(NSIS_EXE makensis.exe PATHS
"C:/Program Files/NSIS"
"C:/Program Files (x86)/NSIS"
"C:/Programs/NSIS"
"${WIN_EXTRA_LIBS_PATH}/NSIS"
)
if (NSIS_EXE)
file(TO_NATIVE_PATH "${INSTALL_DESTINATION}" NSIS_DISTRO) # all files in here will be included in installer
set(NSI_FILE "${PROJECT_BINARY_DIR}/companion/companion.nsi")
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/../targets/windows/companion.nsi.in" "${NSI_FILE}" @ONLY)
add_custom_target(installer
# The 'install' target prepares all the distro files, make sure it has been executed first.
COMMAND "${CMAKE_COMMAND}" --build "${CMAKE_BINARY_DIR}" --target install
COMMAND "${NSIS_EXE}" "${NSI_FILE}"
DEPENDS "${NSI_FILE}"
COMMENT "Building Windows NSIS installer..."
)
endif()
add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/companion/companion-windows.exe
COMMAND "${NSIS_EXE}" ARGS ${PROJECT_BINARY_DIR}/companion/companion.nsi
DEPENDS companion simulator opentx-simulators ${PROJECT_BINARY_DIR}/companion/companion.nsi
COMMENT "Companion Windows NSIS Installer")
# add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/companion/simulator-install.exe
# COMMAND "${NSIS_EXE}" ARGS ${PROJECT_BINARY_DIR}/companion/simulator.nsi
# DEPENDS simulator ${PROJECT_BINARY_DIR}/companion/simulator.nsi
# COMMENT "Simulator Windows NSIS Installer")
add_custom_target(installer
DEPENDS ${PROJECT_BINARY_DIR}/companion/companion-windows.exe
# DEPENDS ${PROJECT_BINARY_DIR}/companion/simulator-windows.exe
SOURCES ${PROJECT_BINARY_DIR}/companion/companion.nsi
# SOURCES ${PROJECT_BINARY_DIR}/companion/simulator.nsi
)
endif()
set(CPACK_PACKAGE_NAME "companion${C9X_NAME_SUFFIX}")
+1 -1
View File
@@ -1,7 +1,7 @@
<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="/">
<file>images/customize.png</file>
<file>icon.png</file>
<file alias="icon.png">images/icon.png</file>
<file>../../CREDITS.txt</file>
<file>../releasenotes.txt</file>
<file>images/screenshot.png</file>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

-1
View File
@@ -1 +0,0 @@
IDI_ICON1 ICON DISCARDABLE "icon.ico"

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

+1
View File
@@ -0,0 +1 @@
IDI_ICON1 ICON DISCARDABLE "opentx.ico"
Binary file not shown.

After

Width:  |  Height:  |  Size: 480 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@@ -1,200 +0,0 @@
;NSIS Modern User Interface
;Start Menu Folder Selection Example Script
;Written by Joost Verburg
;--------------------------------
;Include Modern UI
!include "MUI2.nsh"
!include "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\FileAssociation.nsh"
;--------------------------------
;General
;Name and file
Name "OpenTX companion"
OutFile "companion-windows-v@VERSION@.exe"
;Default installation folder
InstallDir "$PROGRAMFILES\OpenTX companion"
;Get installation folder from registry if available
InstallDirRegKey HKCU "Software\companion9x" ""
;Compressor options
SetCompressor /FINAL /SOLID lzma
SetCompressorDictSize 64
;Request application privileges for Windows Vista
RequestExecutionLevel admin
;--------------------------------
;Variables
Var StartMenuFolder
;--------------------------------
;Interface Settings
!define MUI_ABORTWARNING
;--------------------------------
;Pages
!insertmacro MUI_PAGE_LICENSE "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\license.txt"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
;Start Menu Folder Page Configuration
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\companion9x"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
!insertmacro MUI_PAGE_INSTFILES
# These indented statements modify settings for MUI_PAGE_FINISH
!define MUI_FINISHPAGE_NOAUTOCLOSE
!define MUI_FINISHPAGE_RUN
!define MUI_FINISHPAGE_RUN_CHECKED
!define MUI_FINISHPAGE_RUN_TEXT "Launch companion"
!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchLink"
# !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
# !define MUI_FINISHPAGE_SHOWREADME $INSTDIR\readme.txt
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
;--------------------------------
;Languages
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "French"
;--------------------------------
;Installer Sections
Section "OpenTX companion" SecDummy
SetOutPath "$INSTDIR"
File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\license.txt"
File "companion.exe"
File "C:\Programs\xerces\src\.libs\libxerces-c-3-1.dll"
File "C:\MinGW\bin\libgcc_s_dw2-1.dll"
File "C:\MinGW\bin\mingwm10.dll"
File "C:\MinGW\bin\libstdc++-6.dll"
File "@QT_BINARY_DIR@\QtCore4.dll"
File "@QT_BINARY_DIR@\QtGui4.dll"
File "@QT_BINARY_DIR@\QtXml4.dll"
File "@QT_BINARY_DIR@\QtNetwork4.dll"
File "@QT_BINARY_DIR@\Phonon4.dll"
File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\avrdude.exe"
File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\avrdude.conf"
File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\libusb0.dll"
File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\dfu-util.exe"
CreateDirectory "$INSTDIR\phonon_backend"
SetOutPath "$INSTDIR\phonon_backend"
File "@QT_BINARY_DIR@\..\plugins\phonon_backend\Phonon_ds94.dll"
CreateDirectory "$INSTDIR\lang"
SetOutPath "$INSTDIR\lang"
File "*.qm"
SetOutPath "$INSTDIR"
;Store installation folder
WriteRegStr HKCU "Software\companion9x" "" $INSTDIR
;Associate with extentions ,bin and .hex
${registerExtension} "$INSTDIR\companion.exe" ".bin" "BIN_File"
${registerExtension} "$INSTDIR\companion.exe" ".hex" "HEX_File"
${registerExtension} "$INSTDIR\companion.exe" ".companion" "EEPE_File"
${registerExtension} "$INSTDIR\companion.exe" ".eepm" "EEPM_File"
;Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
;Registry information for add/remove programs
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "DisplayName" "OpenTX Companion"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "UninstallString" "$\"$INSTDIR\Uninstall.exe$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "DisplayIcon" "$\"$INSTDIR\companion.exe$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "Publisher" "OpenTX"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "URLInfoAbout" "http://www.open-tx.org"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ImageMaker" "QuietUninstallString" "$\"$INSTDIR\Uninstall.exe$\" /S"
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
;Create shortcuts
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\companion.lnk" "$INSTDIR\companion.exe"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
!insertmacro MUI_STARTMENU_WRITE_END
SectionEnd
;--------------------------------
;Descriptions
;Language strings
LangString DESC_SecDummy ${LANG_ENGLISH} "Models and settings editor for OpenTX"
LangString DESC_SecDummy ${LANG_FRENCH} "Editeur de r�glages et mod�les pour OpenTX"
;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"
;ADD YOUR OWN FILES HERE...
Delete "$INSTDIR\license.txt"
Delete "$INSTDIR\companion.exe"
Delete "$INSTDIR\libxerces-c-3-1.dll"
Delete "$INSTDIR\libgcc_s_dw2-1.dll"
Delete "$INSTDIR\mingwm10.dll"
Delete "$INSTDIR\libstdc++-6.dll"
Delete "$INSTDIR\QtCore4.dll"
Delete "$INSTDIR\QtGui4.dll"
Delete "$INSTDIR\QtNetwork4.dll"
Delete "$INSTDIR\Phonon4.dll"
Delete "$INSTDIR\QtXml4.dll"
Delete "$INSTDIR\avrdude.exe"
Delete "$INSTDIR\avrdude.conf"
Delete "$INSTDIR\libusb0.dll"
Delete "$INSTDIR\dfu-util.exe"
Delete "$INSTDIR\Uninstall.exe"
Delete "$INSTDIR\lang\*.*"
Delete "$INSTDIR\phonon_backend\*.*"
RMDir "$INSTDIR\lang"
RMDir "$INSTDIR\phonon_backend"
RMDir "$INSTDIR"
${unregisterExtension} ".bin" "BIN File"
${unregisterExtension} ".hex" "HEX File"
${unregisterExtension} ".eepm" "EEPE File"
${unregisterExtension} ".companion" "EEPM File"
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
Delete "$SMPROGRAMS\$StartMenuFolder\companion.lnk"
Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk"
RMDir "$SMPROGRAMS\$StartMenuFolder"
DeleteRegKey /ifempty HKCU "Software\companion9x"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX"
SectionEnd
Function LaunchLink
ExecShell "" "$INSTDIR\companion.exe"
FunctionEnd
@@ -60,7 +60,7 @@
;--------------------------------
;Pages
!insertmacro MUI_PAGE_LICENSE "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\license.txt"
!insertmacro MUI_PAGE_LICENSE "@NSIS_DISTRO@\license.txt"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
@@ -98,70 +98,18 @@
Section "OpenTX Companion @VERSION_FAMILY@" SecDummy
Delete "$INSTDIR\opentx-*-simulator.dll"
Delete "$INSTDIR\lang\*.*"
RMDir "$INSTDIR\lang"
SetOutPath "$INSTDIR\platforms"
File "@QT_DLL_DIR@\..\plugins\platforms\qwindows.dll"
RMDir /r "$INSTDIR\lang"
RMDir /r "$INSTDIR\phonon_backend"
SetOutPath "$INSTDIR"
File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\license.txt"
File "..\Release\companion.exe"
File "..\Release\simulator.exe"
File "..\Release\opentx-*-simulator.dll"
${!defineifexist} PTHREAD_WINDIR "C:\Programs\pthreads\Pre-built.2\lib\pthreadVC2.dll"
!ifdef PTHREAD_WINDIR
File "C:\Programs\pthreads\Pre-built.2\lib\pthreadVC2.dll"
!else
File "@SYSDIR@\system32\pthreadVC2.dll"
!endif
File "@SYSDIR@\msvcp140.dll"
File "@SYSDIR@\vcruntime140.dll"
File "@QT_DLL_DIR@\Qt5Core.dll"
File "@QT_DLL_DIR@\Qt5Gui.dll"
File "@QT_DLL_DIR@\Qt5Widgets.dll"
File "@QT_DLL_DIR@\Qt5PrintSupport.dll"
File "@QT_DLL_DIR@\Qt5Network.dll"
File "@QT_DLL_DIR@\Qt5Multimedia.dll"
File "@QT_DLL_DIR@\Qt5Svg.dll"
File "@QT_DLL_DIR@\Qt5Xml.dll"
${!defineifexist} EAY_LIB_WINDIR "@EAY_LIB_DIR@\libeay32.dll"
!ifdef EAY_LIB_WINDIR
File "@EAY_LIB_DIR@\libeay32.dll"
File "@EAY_LIB_DIR@\ssleay32.dll"
!endif
; Copy the complete distribution folder contents
File /r "@NSIS_DISTRO@\*"
File "@SDL_DIR@\SDL.dll"
File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\avrdude.exe"
File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\avrdude.conf"
File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\libusb0.dll"
File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\dfu-util.exe"
File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\libusb-1.0.dll"
SetOutPath "$INSTDIR\printsupport"
File "@QT_DLL_DIR@\..\plugins\printsupport\windowsprintersupport.dll"
SetOutPath "$INSTDIR\imageformats"
File "@QT_DLL_DIR@\..\plugins\imageformats\qjpeg.dll"
File "@QT_DLL_DIR@\..\plugins\imageformats\qsvg.dll"
File "@QT_DLL_DIR@\..\plugins\imageformats\qdds.dll"
File "@QT_DLL_DIR@\..\plugins\imageformats\qgif.dll"
File "@QT_DLL_DIR@\..\plugins\imageformats\qicns.dll"
File "@QT_DLL_DIR@\..\plugins\imageformats\qico.dll"
File "@QT_DLL_DIR@\..\plugins\imageformats\qtga.dll"
File "@QT_DLL_DIR@\..\plugins\imageformats\qtiff.dll"
File "@QT_DLL_DIR@\..\plugins\imageformats\qwbmp.dll"
File "@QT_DLL_DIR@\..\plugins\imageformats\qwebp.dll"
SetOutPath "$INSTDIR\mediaservice"
File "@QT_DLL_DIR@\..\plugins\mediaservice\dsengine.dll"
SetOutPath "$INSTDIR"
;Store installation folder
WriteRegStr HKCU "Software\OpenTX\Companion @VERSION_FAMILY@" "" $INSTDIR
;Associate with extentions .otx, .bin (TODO: remove .bin)
${registerExtension} "$INSTDIR\companion.exe" ".bin" "BIN File"
;Associate with extentions .otx
${registerExtension} "$INSTDIR\companion.exe" ".otx" "OpenTX Settings File"
;Create uninstaller
@@ -206,46 +154,46 @@ Section "un.OpenTX Companion @VERSION_FAMILY@"
SectionIn RO ; Not deselectable
;ADD YOUR OWN FILES HERE...
Delete "$INSTDIR\license.txt"
Delete "$INSTDIR\companion.exe"
Delete "$INSTDIR\simulator.exe"
Delete "$INSTDIR\opentx-*-simulator.dll"
Delete "$INSTDIR\pthreadVC2.dll"
Delete "$INSTDIR\*opentx-*-simulator.dll"
Delete "$INSTDIR\SDL.dll"
; MSVC-specific libs
Delete "$INSTDIR\msvcp140.dll"
Delete "$INSTDIR\vcruntime140.dll"
Delete "$INSTDIR\Qt5Core.dll"
Delete "$INSTDIR\Qt5Gui.dll"
Delete "$INSTDIR\Qt5Widgets.dll"
Delete "$INSTDIR\Qt5PrintSupport.dll"
Delete "$INSTDIR\Qt5Network.dll"
Delete "$INSTDIR\Qt5Multimedia.dll"
Delete "$INSTDIR\Qt5Xml.dll"
Delete "$INSTDIR\Qt5Svg.dll"
Delete "$INSTDIR\pthreadVC2.dll"
; Qt libs
Delete "$INSTDIR\Qt5*.dll"
Delete "$INSTDIR\d3dcompiler_47.dll"
Delete "$INSTDIR\libEGL.dll"
Delete "$INSTDIR\libGLESV2.dll"
; flashing utils
Delete "$INSTDIR\avrdude.exe"
Delete "$INSTDIR\avrdude.conf"
Delete "$INSTDIR\libusb0.dll"
Delete "$INSTDIR\dfu-util.exe"
Delete "$INSTDIR\libusb0.dll"
Delete "$INSTDIR\libusb-1.0.dll"
; OpenSSL libs
Delete "$INSTDIR\libeay32.dll"
Delete "$INSTDIR\ssleay32.dll"
; MinGW libs
Delete "$INSTDIR\libgcc_s_dw2-1.dll"
Delete "$INSTDIR\libstdc++-6.dll"
Delete "$INSTDIR\libwinpthread-1.dll"
Delete "$INSTDIR\Uninstall.exe"
Delete "$INSTDIR\lang\*.*"
Delete "$INSTDIR\phonon_backend\*.*"
Delete "$INSTDIR\platforms\*.*"
Delete "$INSTDIR\printsupport\*.*"
Delete "$INSTDIR\mediaservice\*.*"
Delete "$INSTDIR\imageformats\*.*"
; Qt plugin folders
RMDir /r "$INSTDIR\audio"
RMDir /r "$INSTDIR\bearer"
RMDir /r "$INSTDIR\iconengines"
RMDir /r "$INSTDIR\imageformats"
RMDir /r "$INSTDIR\mediaservice"
RMDir /r "$INSTDIR\platforms"
RMDir /r "$INSTDIR\playlistformats"
RMDir /r "$INSTDIR\printsupport"
RMDir "$INSTDIR\lang"
RMDir "$INSTDIR\phonon_backend"
RMDir "$INSTDIR\platforms"
RMDir "$INSTDIR\printsupport"
RMDir "$INSTDIR\mediaservice"
RMDir "$INSTDIR\imageformats"
RMDir "$INSTDIR"
${unregisterExtension} ".bin" "BIN File"
@@ -1,204 +0,0 @@
;NSIS Modern User Interface
;Start Menu Folder Selection Example Script
;Written by Joost Verburg
;--------------------------------
;Include Modern UI
!include "MUI2.nsh"
;--------------------------------
;General
;Name and file
Name "OpenTX Simulator"
OutFile "simulator-windows-@VERSION@.exe"
;Default installation folder
InstallDir "$PROGRAMFILES\OpenTX"
;Get installation folder from registry if available
InstallDirRegKey HKCU "Software\OpenTX" ""
;Compressor options
SetCompressor /FINAL /SOLID lzma
SetCompressorDictSize 64
;Request application privileges for Windows Vista
RequestExecutionLevel admin
;--------------------------------
;Variables
Var StartMenuFolder
;--------------------------------
;Interface Settings
!define MUI_ABORTWARNING
;--------------------------------
;File Exists Macro
; See http://nsis.sourceforge.net/Check_if_a_file_exists_at_compile_time for documentation
!macro !defineifexist _VAR_NAME _FILE_NAME
!tempfile _TEMPFILE
!ifdef NSIS_WIN32_MAKENSIS
; Windows - cmd.exe
!system 'if exist "${_FILE_NAME}" echo !define ${_VAR_NAME} > "${_TEMPFILE}"'
!else
; Posix - sh
!system 'if [ -e "${_FILE_NAME}" ]; then echo "!define ${_VAR_NAME}" > "${_TEMPFILE}"; fi'
!endif
!include '${_TEMPFILE}'
!delfile '${_TEMPFILE}'
!undef _TEMPFILE
!macroend
!define !defineifexist "!insertmacro !defineifexist"
;--------------------------------
;Pages
!insertmacro MUI_PAGE_LICENSE "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\license.txt"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
;Start Menu Folder Page Configuration
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\OpenTX"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
!insertmacro MUI_PAGE_INSTFILES
# These indented statements modify settings for MUI_PAGE_FINISH
!define MUI_FINISHPAGE_NOAUTOCLOSE
!define MUI_FINISHPAGE_RUN
!define MUI_FINISHPAGE_RUN_CHECKED
!define MUI_FINISHPAGE_RUN_TEXT "Launch OpenTX Simulator"
!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchLink"
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
;--------------------------------
;Languages
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "French"
;--------------------------------
;Installer Sections
Section "OpenTX Simulator" SecDummy
SetOutPath "$INSTDIR"
File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\license.txt"
File "Release\simulator.exe"
File "Release\opentx-*-simulator.dll"
${!defineifexist} PTHREAD_WINDIR "C:\Programs\pthreads\Pre-built.2\lib\pthreadVC2.dll"
!ifdef PTHREAD_WINDIR
File "C:\Programs\pthreads\Pre-built.2\lib\pthreadVC2.dll"
!else
File "@SYSDIR@\system32\pthreadVC2.dll"
!endif
File "C:\Programs\xerces-vc\bin\xerces-c_3_1.dll"
File "C:\Programs\SDL\lib\SDL.dll"
File "@SYSDIR@\msvcp100.dll"
File "@SYSDIR@\msvcr100.dll"
File "@QT_BINARY_DIR@\QtCore4.dll"
File "@QT_BINARY_DIR@\QtGui4.dll"
File "@QT_BINARY_DIR@\QtNetwork4.dll"
File "@QT_BINARY_DIR@\Phonon4.dll"
File "@QT_BINARY_DIR@\QtXml4.dll"
CreateDirectory "$INSTDIR\phonon_backend"
SetOutPath "$INSTDIR\phonon_backend"
File "@QT_BINARY_DIR@\..\plugins\phonon_backend\Phonon_ds94.dll"
CreateDirectory "$INSTDIR\lang"
SetOutPath "$INSTDIR\lang"
File "src\*.qm"
SetOutPath "$INSTDIR"
;Store installation folder
WriteRegStr HKCU "Software\OpenTX" "" $INSTDIR
;Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
;Registry information for add/remove programs
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "DisplayName" "OpenTX Simulator"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "UninstallString" "$\"$INSTDIR\Uninstall.exe$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "DisplayIcon" "$\"$INSTDIR\simulator.exe$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "Publisher" "OpenTX"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "URLInfoAbout" "http://www.open-tx.org"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ImageMaker" "QuietUninstallString" "$\"$INSTDIR\Uninstall.exe$\" /S"
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
;Create shortcuts
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\simulator.lnk" "$INSTDIR\simulator.exe"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
!insertmacro MUI_STARTMENU_WRITE_END
SectionEnd
;--------------------------------
;Descriptions
;Language strings
LangString DESC_SecDummy ${LANG_ENGLISH} "Simulator for OpenTX"
LangString DESC_SecDummy ${LANG_FRENCH} "Simulateur pour OpenTX"
;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"
;ADD YOUR OWN FILES HERE...
Delete "$INSTDIR\license.txt"
Delete "$INSTDIR\simulator.exe"
Delete "$INSTDIR\pthreadVC2.dll"
Delete "$INSTDIR\xerces-c_3_1.dll"
Delete "$INSTDIR\SDL.dll"
Delete "$INSTDIR\msvcp100.dll"
Delete "$INSTDIR\msvcr100.dll"
Delete "$INSTDIR\QtCore4.dll"
Delete "$INSTDIR\QtGui4.dll"
Delete "$INSTDIR\QtXml4.dll"
Delete "$INSTDIR\QtNetwork4.dll"
Delete "$INSTDIR\Phonon4.dll"
Delete "$INSTDIR\Uninstall.exe"
Delete "$INSTDIR\lang\*.*"
Delete "$INSTDIR\opentx-*-simulator.dll"
RMDir "$INSTDIR\lang"
RMDir "$INSTDIR"
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
Delete "$SMPROGRAMS\$StartMenuFolder\simulator.lnk"
Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk"
RMDir "$SMPROGRAMS\$StartMenuFolder"
DeleteRegKey /ifempty HKCU "Software\OpenTX"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX"
SectionEnd
Function LaunchLink
ExecShell "" "$INSTDIR\simulator.exe"
FunctionEnd
@@ -1,204 +0,0 @@
;NSIS Modern User Interface
;Start Menu Folder Selection Example Script
;Written by Joost Verburg
;--------------------------------
;Include Modern UI
!include "MUI2.nsh"
;--------------------------------
;General
;Name and file
Name "OpenTX Simulator"
OutFile "simulator-windows-@VERSION@.exe"
;Default installation folder
InstallDir "$PROGRAMFILES\OpenTX"
;Get installation folder from registry if available
InstallDirRegKey HKCU "Software\OpenTX" ""
;Compressor options
SetCompressor /FINAL /SOLID lzma
SetCompressorDictSize 64
;Request application privileges for Windows Vista
RequestExecutionLevel admin
;--------------------------------
;Variables
Var StartMenuFolder
;--------------------------------
;Interface Settings
!define MUI_ABORTWARNING
;--------------------------------
;File Exists Macro
; See http://nsis.sourceforge.net/Check_if_a_file_exists_at_compile_time for documentation
!macro !defineifexist _VAR_NAME _FILE_NAME
!tempfile _TEMPFILE
!ifdef NSIS_WIN32_MAKENSIS
; Windows - cmd.exe
!system 'if exist "${_FILE_NAME}" echo !define ${_VAR_NAME} > "${_TEMPFILE}"'
!else
; Posix - sh
!system 'if [ -e "${_FILE_NAME}" ]; then echo "!define ${_VAR_NAME}" > "${_TEMPFILE}"; fi'
!endif
!include '${_TEMPFILE}'
!delfile '${_TEMPFILE}'
!undef _TEMPFILE
!macroend
!define !defineifexist "!insertmacro !defineifexist"
;--------------------------------
;Pages
!insertmacro MUI_PAGE_LICENSE "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\license.txt"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
;Start Menu Folder Page Configuration
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\OpenTX"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
!insertmacro MUI_PAGE_INSTFILES
# These indented statements modify settings for MUI_PAGE_FINISH
!define MUI_FINISHPAGE_NOAUTOCLOSE
!define MUI_FINISHPAGE_RUN
!define MUI_FINISHPAGE_RUN_CHECKED
!define MUI_FINISHPAGE_RUN_TEXT "Launch OpenTX Simulator"
!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchLink"
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
;--------------------------------
;Languages
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "French"
;--------------------------------
;Installer Sections
Section "OpenTX Simulator" SecDummy
SetOutPath "$INSTDIR"
File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\license.txt"
File "Release\simulator.exe"
File "Release\opentx-*-simulator.dll"
${!defineifexist} PTHREAD_WINDIR "C:\Programs\pthreads\Pre-built.2\lib\pthreadVC2.dll"
!ifdef PTHREAD_WINDIR
File "C:\Programs\pthreads\Pre-built.2\lib\pthreadVC2.dll"
!else
File "@SYSDIR@\system32\pthreadVC2.dll"
!endif
File "C:\Programs\xerces-vc\bin\xerces-c_3_1.dll"
File "C:\Programs\SDL\lib\SDL.dll"
File "@SYSDIR@\msvcp100.dll"
File "@SYSDIR@\msvcr100.dll"
File "@QT_BINARY_DIR@\QtCore4.dll"
File "@QT_BINARY_DIR@\QtGui4.dll"
File "@QT_BINARY_DIR@\QtNetwork4.dll"
File "@QT_BINARY_DIR@\Phonon4.dll"
File "@QT_BINARY_DIR@\QtXml4.dll"
CreateDirectory "$INSTDIR\phonon_backend"
SetOutPath "$INSTDIR\phonon_backend"
File "@QT_BINARY_DIR@\..\plugins\phonon_backend\Phonon_ds94.dll"
CreateDirectory "$INSTDIR\lang"
SetOutPath "$INSTDIR\lang"
File "src\*.qm"
SetOutPath "$INSTDIR"
;Store installation folder
WriteRegStr HKCU "Software\OpenTX" "" $INSTDIR
;Create uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
;Registry information for add/remove programs
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "DisplayName" "OpenTX Simulator"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "UninstallString" "$\"$INSTDIR\Uninstall.exe$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "DisplayIcon" "$\"$INSTDIR\simulator.exe$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "Publisher" "OpenTX"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX" "URLInfoAbout" "http://www.open-tx.org"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\ImageMaker" "QuietUninstallString" "$\"$INSTDIR\Uninstall.exe$\" /S"
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
;Create shortcuts
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\simulator.lnk" "$INSTDIR\simulator.exe"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
!insertmacro MUI_STARTMENU_WRITE_END
SectionEnd
;--------------------------------
;Descriptions
;Language strings
LangString DESC_SecDummy ${LANG_ENGLISH} "Simulator for OpenTX"
LangString DESC_SecDummy ${LANG_FRENCH} "Simulateur pour OpenTX"
;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"
;ADD YOUR OWN FILES HERE...
Delete "$INSTDIR\license.txt"
Delete "$INSTDIR\simulator.exe"
Delete "$INSTDIR\pthreadVC2.dll"
Delete "$INSTDIR\xerces-c_3_1.dll"
Delete "$INSTDIR\SDL.dll"
Delete "$INSTDIR\msvcp100.dll"
Delete "$INSTDIR\msvcr100.dll"
Delete "$INSTDIR\QtCore4.dll"
Delete "$INSTDIR\QtGui4.dll"
Delete "$INSTDIR\QtXml4.dll"
Delete "$INSTDIR\QtNetwork4.dll"
Delete "$INSTDIR\Phonon4.dll"
Delete "$INSTDIR\Uninstall.exe"
Delete "$INSTDIR\lang\*.*"
Delete "$INSTDIR\opentx-*-simulator.dll"
RMDir "$INSTDIR\lang"
RMDir "$INSTDIR"
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
Delete "$SMPROGRAMS\$StartMenuFolder\simulator.lnk"
Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk"
RMDir "$SMPROGRAMS\$StartMenuFolder"
DeleteRegKey /ifempty HKCU "Software\OpenTX"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX"
SectionEnd
Function LaunchLink
ExecShell "" "$INSTDIR\simulator.exe"
FunctionEnd