set(TR_QT_DIR "$<TARGET_FILE_DIR:Qt5::Core>/..")
endif()
+find_msvc_crt_msm(TR_MSVC_CRT_MSM_FILE)
+
set(ICONS_DIR "${CMAKE_SOURCE_DIR}/qt/icons/hicolor")
png2ico(Transmission.ico
"${ICONS_DIR}/16x16/transmission-qt.png"
"WebSrcDir=${WEBSRCDIR}"
"TrQmSrcDir=${TRQMSRCDIR}"
"QtQmSrcDir=${QTQMSRCDIR}"
+ "MsvcCrtMsmFile=${TR_MSVC_CRT_MSM_FILE}"
EXTRA_DEPENDS
"${CMAKE_CURRENT_BINARY_DIR}/TransmissionConfig.wxi")
<Property Id="DiskPrompt" Value="Transmission $(var.TrVersion) Installation [1]" />
<Directory Id="TARGETDIR" Name="SourceDir">
- <Merge Id="VCRedist" SourceFile="$(env.CommonProgramFiles(x86))\Merge Modules\Microsoft_VC140_CRT_$(sys.BUILDARCH).msm" DiskId="1" Language="0" />
+ <Merge Id="VCRedist" SourceFile="$(var.MsvcCrtMsmFile)" DiskId="1" Language="0" />
<Directory Id="$(var.PlatformProgramFilesFolder)" Name="PFiles">
<Directory Id="INSTALLDIR" Name="Transmission">
<Directory Id="WEBINSTALLDIR" Name="web" />
</Directory>
<Feature Id="CompleteInstall" Title="Transmission" Level="1" AllowAdvertise="no" Display="expand" ConfigurableDirectory="INSTALLDIR">
- <Feature Id="VCRedist" Title="Visual C++ 14.0 Runtime" Level="1" AllowAdvertise="no" Display="hidden">
+ <Feature Id="VCRedist" Title="Visual C++ Runtime" Level="1" AllowAdvertise="no" Display="hidden">
<MergeRef Id="VCRedist" />
</Feature>
<Feature Id="CommonLibs" Level="1" AllowAdvertise="no" Display="hidden">
include(CMakeParseArguments)
+function(find_msvc_crt_msm OUTPUT_VAR)
+ if(${OUTPUT_VAR})
+ return()
+ endif()
+
+ message(STATUS "Looking for a CRT MSM:")
+
+ if(NOT MSVC_TOOLSET_VERSION)
+ if(MSVC_VERSION GREATER_EQUAL 1920)
+ set(MSVC_TOOLSET_VERSION 142)
+ elseif(MSVC_VERSION GREATER_EQUAL 1910)
+ set(MSVC_TOOLSET_VERSION 141)
+ elseif(MSVC_VERSION GREATER_EQUAL 1900)
+ set(MSVC_TOOLSET_VERSION 140)
+ endif()
+ endif()
+
+ set(MSM_FILE "Microsoft_VC${MSVC_TOOLSET_VERSION}_CRT_${ARCH}.msm")
+ message(STATUS " * File name: ${MSM_FILE}")
+
+ set(VC_DIR "${CMAKE_CXX_COMPILER}")
+ while(VC_DIR AND NOT VC_DIR MATCHES "/VC$")
+ get_filename_component(VC_DIR "${VC_DIR}" DIRECTORY)
+ endwhile()
+ message(STATUS " * VC directory: ${VC_DIR}")
+
+ file(GLOB VC_VER_DIRS "${VC_DIR}/Redist/MSVC/*")
+ message(STATUS " * Redist directories: ${VC_VER_DIRS}")
+
+ set(CMN_PF_DIR "CommonProgramFiles(x86)")
+ find_file(${OUTPUT_VAR}
+ NAMES "${MSM_FILE}"
+ PATHS ${VC_VER_DIRS} $ENV{${CMN_PF_DIR}}
+ PATH_SUFFIXES "MergeModules" "Merge Modules")
+ message(STATUS " * Result: ${${OUTPUT_VAR}}")
+
+ set(${OUTPUT_VAR} "${${OUTPUT_VAR}}" PARENT_SCOPE)
+endfunction()
+
function(png2ico OUTPUT_FILE)
if(NOT IS_ABSOLUTE "${OUTPUT_FILE}")
set(OUTPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE}")