/
MsysInnoSetup.cmake
76 lines (65 loc) · 2.41 KB
/
MsysInnoSetup.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
message (STATUS "Packaging with Inno Setup for MSYS")
set (INNOSETUP_COMMAND $ENV{INNOSETUP_DIR}/iscc.exe)
file (GLOB_RECURSE files
RELATIVE ${CPACK_TEMPORARY_DIRECTORY}
${CPACK_TEMPORARY_DIRECTORY}/*
)
set (deployScript ${CMAKE_CURRENT_LIST_DIR}/../build/scripts/deploy_msys.py)
message (STATUS "Script: ${deployScript}")
set (outFile ${CPACK_TEMPORARY_DIRECTORY}/setup.iss)
set (depsDir ${CPACK_TEMPORARY_DIRECTORY}/deps)
file (MAKE_DIRECTORY ${depsDir})
set (binaries)
file (WRITE ${outFile} "
[Setup]
AppName=Doomsday Engine
AppVersion=${CPACK_PACKAGE_VERSION}
WizardStyle=modern
DefaultDirName={autopf}\\Doomsday Engine
DefaultGroupName=Doomsday Engine
UninstallDisplayIcon={app}\\doomsday.exe
Compression=lzma2
SolidCompression=yes
OutputBaseFilename=${CPACK_PACKAGE_FILE_NAME}
OutputDir=..\\..\\..\\..
ArchitecturesAllowed=x64
ArchitecturesInstallIn64BitMode=x64
[Files]
")
macro (do_sign path)
execute_process (COMMAND /opt/bin/signtool.exe
sign -n $ENV{DE_SIGNTOOL_CERT}
-t $ENV{DE_SIGNTOOL_TIMESTAMP} -fd sha256 -v ${path}
)
endmacro (do_sign)
foreach (fn ${files})
get_filename_component (fnDir ${fn} DIRECTORY)
get_filename_component (fnName ${fn} NAME)
get_filename_component (fnExt ${fn} EXT)
string (REGEX REPLACE "[^/]+/(.*)" "\\1" fnDir ${fnDir})
if (fnExt STREQUAL ".exe" OR fnExt STREQUAL ".dll")
list (APPEND binaries ${depsDir}/${fnName})
file (COPY ${CPACK_TEMPORARY_DIRECTORY}/${fn} DESTINATION ${depsDir})
do_sign (${CPACK_TEMPORARY_DIRECTORY}/${fn})
endif ()
file (APPEND ${outFile} "Source: \"${fn}\"; DestDir: \"{app}/${fnDir}\"\n")
endforeach (fn)
message (STATUS "Copying dependencies")
execute_process (COMMAND python3 ${deployScript} ${depsDir})
file (REMOVE ${binaries})
file (GLOB deps ${depsDir}/*.dll)
foreach (fn ${deps})
get_filename_component (fnName ${fn} NAME)
file (APPEND ${outFile} "Source: \"deps/${fnName}\"; DestDir: \"{app}/bin\"\n")
do_sign (${CPACK_TEMPORARY_DIRECTORY}/deps/${fnName})
endforeach ()
file (APPEND ${outFile} "
[Icons]
Name: \"{group}\\Doomsday Engine\"; Filename: \"{app}\\doomsday.exe\"
Name: \"{group}\\Doomsday Shell\"; Filename: \"{app}\\doomsday-shell.exe\"
")
execute_process (COMMAND "${INNOSETUP_COMMAND}" setup.iss
WORKING_DIRECTORY ${CPACK_TEMPORARY_DIRECTORY}
)
# Sign the generated installer.
do_sign (${CPACK_TEMPORARY_DIRECTORY}/../../../../${CPACK_PACKAGE_FILE_NAME}.exe)