diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8f5615c7..bff39a05 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -72,12 +72,23 @@ if (APPLE)
endforeach()
qt5_import_plugins(${CMAKE_PROJECT_NAME} INCLUDE_BY_TYPE sqldrivers)
-elseif(WIN32)
-
- set(QT_USE_QTMAIN TRUE)
-
endif()
+macro(guid content)
+ string(
+ UUID GUID NAMESPACE f243d4ea-d51d-42fc-a3c0-4eb186c55d34
+ NAME ${content} TYPE SHA1
+ )
+ message("GUID " ${content} " " ${GUID})
+endmacro()
+
+macro(WixFile filename content)
+ file(WRITE ${filename} "\n"
+ "\n\n"
+ ${content}
+ "\n\n")
+endmacro()
+
##### Sub directories
add_subdirectory(lib)
@@ -99,6 +110,11 @@ set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}")
###############################################
##### Host specific settings
+get_target_property(qmake_executable Qt5::qmake IMPORTED_LOCATION)
+get_filename_component(_qt_bin_dir "${qmake_executable}" DIRECTORY)
+find_program(MACDEPLOYQT_EXECUTABLE macdeployqt HINTS "${_qt_bin_dir}")
+find_program(WINDEPLOYQT_EXECUTABLE windeployqt HINTS "${_qt_bin_dir}")
+
if(APPLE)
if (DEFINED ENV{APPLE_DEVELOPER})
set(APPLE_CERT_3PARTY_INST "3rd Party Mac Developer Installer: $ENV{APPLE_DEVELOPER}")
@@ -112,9 +128,6 @@ if(APPLE)
MACOSX_BUNDLE TRUE
RESOURCE "${APP_RESOURCES}"
)
- get_target_property(qmake_executable Qt5::qmake IMPORTED_LOCATION)
- get_filename_component(_qt_bin_dir "${qmake_executable}" DIRECTORY)
- find_program(MACDEPLOYQT_EXECUTABLE macdeployqt HINTS "${_qt_bin_dir}")
add_custom_command(TARGET ${CMAKE_PROJECT_NAME}
COMMAND "${MACDEPLOYQT_EXECUTABLE}"
"${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.app"
@@ -126,8 +139,26 @@ if(APPLE)
set(CPACK_GENERATOR "DragNDrop") #;productbuild")
elseif(WIN32)
+ add_custom_command(TARGET ${CMAKE_PROJECT_NAME}
+ COMMAND "${WINDEPLOYQT_EXECUTABLE}"
+ --dir "${CMAKE_BINARY_DIR}/OUT"
+ "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.exe"
+ COMMENT "Running windeployqt..."
+ )
set(QT_USE_QTMAIN TRUE)
set(CPACK_GENERATOR WIX)
+ set(CPACK_PACKAGE_VENDOR "Christian Hohnstädt")
+ set(CPACK_WIX_TEMPLATE "${PROJECT_SOURCE_DIR}/misc/xca.wxs")
+ set(CPACK_WIX_UPGRADE_GUID "23fdacfe-3ef8-45b4-81e8-b0c90244c217")
+ set(CPACK_WIX_UI_BANNER "${PROJECT_SOURCE_DIR}/img/banner.bmp")
+ set(CPACK_WIX_UI_DIALOG "${PROJECT_SOURCE_DIR}/img/dialog.bmp")
+ set(CPACK_WIX_LICENSE_RTF "${PROJECT_SOURCE_DIR}/misc/copyright.rtf")
+ set(CPACK_WIX_EXTRA_SOURCES
+ ${CMAKE_BINARY_DIR}/openssl.wxs
+ ${CMAKE_BINARY_DIR}/language.wxs
+ ${CMAKE_BINARY_DIR}/doc/documentation.wxs
+ ${CMAKE_BINARY_DIR}/misc/misc.wxs
+ )
else()
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX /usr/local CACHE PATH
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
index 8e3b763c..2c2ee92e 100644
--- a/doc/CMakeLists.txt
+++ b/doc/CMakeLists.txt
@@ -16,9 +16,26 @@ foreach(file ${FILENAMES})
list(APPEND RST_SOURCE "${S}/rst/${file}.rst")
list(APPEND RST_DEST "${D}/rst/${file}.rst")
list(APPEND HTML_DEST "${D}/html/${file}.html")
+ list(APPEND HTML_FILE "${file}.html")
list(APPEND QTHELP_DEST "${D}/qthelp/${file}.html")
endforeach()
+foreach(doc ${HTML_FILE} xca.qhc xca.qch)
+ string(REPLACE "-" "" id ${doc})
+ guid(${doc})
+ list(APPEND DOC_COMPREFS " \n")
+ list(APPEND DOC_COMPS "
+
+ \n")
+endforeach()
+
+string(APPEND WIX_DOC_CONTENT
+"\n" ${DOC_COMPS} "\n"
+"\n" ${DOC_COMPREFS} ""
+)
+
+WixFile(${D}/documentation.wxs ${WIX_DOC_CONTENT})
+
if(SPHINX)
configure_file(${S}/conf.py.in ${D}/rst/conf.py)
add_custom_command(
diff --git a/lang/CMakeLists.txt b/lang/CMakeLists.txt
index 8ee4874d..a50666e0 100644
--- a/lang/CMakeLists.txt
+++ b/lang/CMakeLists.txt
@@ -1,15 +1,33 @@
set(S "${PROJECT_SOURCE_DIR}/lang")
-set(D "${PROJECT_BINARY_DIR}/lang")
-file(MAKE_DIRECTORY "${D}")
+set(D "${PROJECT_BINARY_DIR}")
-set(TS_FILES
-${S}/xca_fr.ts ${S}/xca_ja.ts ${S}/xca_tr.ts ${S}/xca.ts
-${S}/xca_de.ts ${S}/xca_hr.ts ${S}/xca_nl.ts ${S}/xca_ru.ts
-${S}/xca_es.ts ${S}/xca_it.ts ${S}/xca_pl.ts ${S}/xca_sk.ts
-${S}/xca_zh_CN.ts ${S}/xca_pt_BR.ts ${S}/xca_id.ts
+list(APPEND XCA_LANGUAGES id hr nl pt_BR zh_CN)
+list(APPEND XCAQM_LANGUAGES de fr ja pl ru tr es it sk)
+
+foreach(lang ${XCA_LANGUAGES} ${XCAQM_LANGUAGES})
+ list(APPEND TS_FILES ${S}/xca_${lang}.ts)
+endforeach()
+
+foreach(lang ${XCA_LANGUAGES} ${XCAQM_LANGUAGES})
+ guid(${lang})
+ list(APPEND LANG_COMPREFS " \n")
+ set(LANG_COMPS "
+ \n")
+ if(${lang} IN_LIST XCAQM_LANGUAGES)
+ string(APPEND LANG_COMPS " \n")
+ endif()
+ string(APPEND LANG_COMPS " \n")
+ list(APPEND LANG_ALLCOMPS ${LANG_COMPS})
+endforeach()
+
+string(APPEND WIX_LANG_CONTENT
+ "\n" ${LANG_ALLCOMPS} "\n"
+ "\n" ${LANG_COMPREFS} ""
)
+WixFile(${D}/language.wxs ${WIX_LANG_CONTENT})
+
qt5_add_translation(QM_FILES ${TS_FILES})
list(APPEND APP_RESOURCES ${QM_FILES})
diff --git a/misc/CMakeLists.txt b/misc/CMakeLists.txt
index 0ea057ab..0d9a6574 100644
--- a/misc/CMakeLists.txt
+++ b/misc/CMakeLists.txt
@@ -11,8 +11,8 @@ set_property(TARGET ${PROJECT_NAME}
PROPERTY MACOSX_BUNDLE_INFO_PLIST "${D}/Info.plist")
##### XCA Templates
-
-foreach(templ CA.xca TLS_server.xca TLS_client.xca)
+set(TEMPLATES CA.xca TLS_server.xca TLS_client.xca)
+foreach(templ ${TEMPLATES})
list(APPEND XCA_TEMPLATES ${S}/${templ})
endforeach()
target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${XCA_TEMPLATES})
@@ -34,6 +34,21 @@ Text_header(dn)
Text_header(eku)
Text_header(oids)
+foreach(misc_name ${TEXT_FILES} ${XCA_TEMPLATES})
+ string(REGEX REPLACE ".*/" "" misc_basename ${misc_name})
+ guid(${misc_basename})
+ list(APPEND MISC_COMPREFS " \n")
+ list(APPEND MISC_COMPS "
+
+ \n")
+endforeach()
+
+string(APPEND WIX_MISC_CONTENT
+"\n" ${MISC_COMPS} "
+\n" ${MISC_COMPREFS} "")
+
+WixFile(${D}/misc.wxs ${WIX_MISC_CONTENT})
+
target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${TEXT_FILES})
list(APPEND APP_RESOURCES ${TEXT_FILES})
diff --git a/misc/xca.wxs b/misc/xca.wxs
index 52325a5c..90c53a79 100644
--- a/misc/xca.wxs
+++ b/misc/xca.wxs
@@ -1,22 +1,18 @@
-
-
+
+
-
-
+ Manufacturer="$(var.CPACK_PACKAGE_VENDOR)" >
-
-
-
+
+
+
@@ -51,8 +47,11 @@
-
-
+
@@ -124,35 +123,17 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -304,15 +169,17 @@
+
+
+
+
@@ -322,13 +189,6 @@
-
-
-
-
@@ -371,56 +230,10 @@
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -428,10 +241,11 @@
Description="Contains the main application, required Qt5 libraries and the SQLite driver.">
+
-
+
@@ -443,6 +257,7 @@
Description="Access to ODBC databases like Microsoft SQL Server">
+
+