Skip to content

Commit

Permalink
Windows|MSYS: Create an Inno Setup installer
Browse files Browse the repository at this point in the history
CPack does an External package that creates an EXE installer
for Windows using Inno Setup.

Still missing signing of all the binaries.
  • Loading branch information
skyjake committed Jan 23, 2021
1 parent c06585a commit c8271db
Show file tree
Hide file tree
Showing 8 changed files with 102 additions and 18 deletions.
3 changes: 3 additions & 0 deletions doomsday/apps/client/CMakeLists.txt
Expand Up @@ -70,6 +70,9 @@ elseif (WIN32)
deng_glob_sources (SOURCES src/windows/*.cpp)
list (APPEND SOURCES res/windows/doomsday.rc)
endif ()
if (MSYS)
list (APPEND SOURCES res/windows/doomsday.rc)
endif ()
if (UNIX)
include_directories (include/unix)
deng_merge_sources (unix src/unix/*.cpp)
Expand Down
4 changes: 4 additions & 0 deletions doomsday/apps/server/CMakeLists.txt
Expand Up @@ -78,6 +78,10 @@ if (WIN32)
list (APPEND SHARED_WITH_CLIENT ${src}/src/init_windows.cpp)
endif ()

if (WIN32 OR MSYS)
list (APPEND SOURCES res/windows/doomsday.rc)
endif ()

if (UNIX)
include_directories (../client/include/unix)
list (APPEND SHARED_WITH_CLIENT ${src}/src/init_unix.cpp)
Expand Down
24 changes: 13 additions & 11 deletions doomsday/cmake/FindFMOD.cmake
Expand Up @@ -66,17 +66,19 @@ if (FMOD_FMOD_H AND NOT TARGET fmodex)
set (fmodInstLib ${fmodLib})
endif ()
target_link_libraries (fmodex INTERFACE ${fmodLib})
install (TARGETS fmodex
EXPORT fmod
ARCHIVE DESTINATION ${DE_INSTALL_LIB_DIR}
COMPONENT libs
)
install (EXPORT fmod
DESTINATION ${DE_INSTALL_CMAKE_DIR}/fmod
FILE fmod-config.cmake
NAMESPACE FMOD::
COMPONENT sdk
)
if (DE_ENABLE_SDK)
install (TARGETS fmodex
EXPORT fmod
ARCHIVE DESTINATION ${DE_INSTALL_LIB_DIR}
COMPONENT libs
)
install (EXPORT fmod
DESTINATION ${DE_INSTALL_CMAKE_DIR}/fmod
FILE fmod-config.cmake
NAMESPACE FMOD::
COMPONENT sdk
)
endif ()
if (fmodInstLib)
deng_install_library (${fmodInstLib})
endif ()
Expand Down
65 changes: 65 additions & 0 deletions doomsday/cmake/MsysInnoSetup.cmake
@@ -0,0 +1,65 @@
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]
")

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})
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")
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}
)

16 changes: 12 additions & 4 deletions doomsday/cmake/Packaging.cmake
Expand Up @@ -52,14 +52,17 @@ if (APPLE)
set (CPACK_DMG_FORMAT UDZO)
set (CPACK_DMG_BACKGROUND_IMAGE "${DE_SOURCE_DIR}/build/macx/dmg_background.jpg")
set (CPACK_DMG_DS_STORE_SETUP_SCRIPT "${DE_CMAKE_DIR}/DMGSetup.scpt")
elseif (MSYS)
set (CPACK_GENERATOR External)
set (CPACK_EXTERNAL_PACKAGE_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/MsysInnoSetup.cmake)
set (CPACK_EXTERNAL_ENABLE_STAGING YES)
elseif (UNIX)
#set (CPACK_GENERATOR RPM;DEB)
# Set CPACK_GENERATOR manually.
# CPACK_GENERATOR is set manually.
set (CPACK_PROJECT_CONFIG_FILE ${CMAKE_CURRENT_LIST_DIR}/PackagingUnix.cmake)
else ()
set (CPACK_PACKAGE_NAME "Doomsday ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
set (CPACK_PACKAGE_NAME "Doomsday ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
set (CPACK_GENERATOR WIX;ZIP)
set (CPACK_PROJECT_CONFIG_FILE ${CMAKE_CURRENT_LIST_DIR}/WIX.cmake)
set (CPACK_PROJECT_CONFIG_FILE ${CMAKE_CURRENT_LIST_DIR}/WIX.cmake)
set (CPACK_WIX_UI_DIALOG "${DE_SOURCE_DIR}/build/win32/installer_dialog.png")
set (CPACK_WIX_UI_BANNER "${DE_SOURCE_DIR}/build/win32/installer_banner.png")
endif ()
Expand Down Expand Up @@ -88,6 +91,7 @@ if (NOT CPack_CMake_INCLUDED)
if (DE_ENABLE_TESTS)
list (APPEND CPACK_COMPONENTS_ALL tests)
endif ()
list (APPEND CPACK_COMPONENTS_ALL post)

include (CPack)

Expand Down Expand Up @@ -132,6 +136,10 @@ if (NOT CPack_CMake_INCLUDED)
DEPENDS libs packs
INSTALL_TYPES sdk
)
cpack_add_component (post
DISPLAY_NAME "Post-install tasks"
HIDDEN REQUIRED
)

cpack_add_install_type (gui DISPLAY_NAME "Standard")
cpack_add_install_type (sdk DISPLAY_NAME "Developer")
Expand Down
5 changes: 3 additions & 2 deletions doomsday/post/CMakeLists.txt
Expand Up @@ -17,9 +17,10 @@ if (DE_ENABLE_DEPLOYMENT)
message (STATUS \"Copying dependencies...\")
execute_process (
COMMAND ${PYTHON_EXECUTABLE} ${DE_SOURCE_DIR}/build/scripts/${scriptName}
${CMAKE_INSTALL_PREFIX}/bin
\${CMAKE_INSTALL_PREFIX}/bin
OUTPUT_QUIET
)")
)"
COMPONENT post)
endif ()
endif ()

Expand Down
1 change: 1 addition & 0 deletions doomsday/tools/dshell/CMakeLists.txt
Expand Up @@ -45,4 +45,5 @@ deng_install_tool (dshell)
if (CYGWIN OR MSYS)
# Curses requires terminfo to be available.
install (FILES /usr/share/terminfo/63/cygwin DESTINATION share/terminfo/63)
install (FILES /usr/share/terminfo/78/xterm-256color DESTINATION share/terminfo/78)
endif ()
2 changes: 1 addition & 1 deletion doomsday/tools/shell/CMakeLists.txt
Expand Up @@ -22,7 +22,7 @@ set (MAC_RES
res/macx/English.lproj,Resources
)
set (MACOSX_BUNDLE_ICON_FILE "shell.icns")
if (WIN32)
if (WIN32 OR MSYS)
list (APPEND SOURCES res/windows/shell.rc)
endif ()

Expand Down

0 comments on commit c8271db

Please sign in to comment.