Installation (Windows 5xx) test

From Project Skyfire
Jump to navigation Jump to search


INTRODUCTION

This page covers the Windows prerequisites and build steps for the current SkyFire_548 source tree.

The current build requires a C++23-capable MSVC compiler, Boost 1.91.0, OpenSSL 4.0.0 with the legacy provider module, and MySQL client development libraries. ACE is no longer required.

The commands below assume a 64-bit Windows host and install or stage the server in D:\SkyFire_Files\Server. Adjust paths if your local layout is different.

Software Required

  • Windows 10, Windows 11, Windows Server 2022, or Windows Server 2025, 64-bit.
  • Git for Windows.
  • Visual Studio 2022 Community, Professional, Enterprise, or Build Tools.
    • Install the Desktop development with C++ workload.
    • Include the MSVC v143 toolset and the Windows 10 or Windows 11 SDK.
    • SkyFire requires MSVC 19.44.35217.0 or newer.
  • CMake 4.1.2 or newer.
  • Boost 1.91.0.
  • OpenSSL 4.0.0, full x64 install, with the legacy provider module.
  • MySQL 9.7 or compatible MySQL client development libraries.
    • The tested Windows install is MySQL Server 9.7.
    • The C API development headers and libraries must be installed.
  • SQL client for database work, such as HeidiSQL.

Do not install only runtime components for OpenSSL or MySQL. The build needs headers, import libraries, and runtime DLLs.

The CMake files can find several common locations, but these paths match the current project defaults and CI layout:

C:\SkyFire_548
C:\local\boost_1_91_0
C:\Program Files\OpenSSL
C:\Program Files\MySQL\MySQL Server 9.7
D:\SkyFire_Files\Server

If your OpenSSL installer uses C:\Program Files\OpenSSL-Win64 instead of C:\Program Files\OpenSSL, use that path for OPENSSL_ROOT_DIR.

Install Boost 1.91.0

Open Developer PowerShell for Visual Studio 2022 and run:

$env:BOOST_ROOT = "C:\local\boost_1_91_0"
New-Item -ItemType Directory -Force C:\local | Out-Null

$boostArchive = Join-Path $env:TEMP "boost_1_91_0.tar.gz"
$boostSource = Join-Path $env:TEMP "boost_1_91_0"

Invoke-WebRequest `
  -Uri "https://archives.boost.io/release/1.91.0/source/boost_1_91_0.tar.gz" `
  -OutFile $boostArchive

if (Test-Path $boostSource) {
  Remove-Item -Recurse -Force $boostSource
}

tar -xzf $boostArchive -C $env:TEMP

Push-Location $boostSource
try {
  .\bootstrap.bat
  .\b2.exe install --prefix="$env:BOOST_ROOT" --with-headers -j"$env:NUMBER_OF_PROCESSORS"
}
finally {
  Pop-Location
}

Verify the install:

Test-Path C:\local\boost_1_91_0\include\boost

The command should print True.

Install OpenSSL 4.0.0

Install OpenSSL 4.0.0 x64. The CI build uses Chocolatey:

choco install -y openssl --version=4.0.0

Manual installers are also fine if they install the full x64 package. Do not use a light/runtime-only package if it omits development libraries or provider modules.

Verify OpenSSL:

$env:OPENSSL_ROOT_DIR = "C:\Program Files\OpenSSL"
$env:OPENSSL_MODULES = "C:\Program Files\OpenSSL\bin"

Test-Path "$env:OPENSSL_ROOT_DIR\include\openssl\ssl.h"
Test-Path "$env:OPENSSL_MODULES\legacy.dll"
Test-Path "$env:OPENSSL_ROOT_DIR\lib\VC\x64\MD\liblegacy.lib"

Each command should print True.

If OpenSSL is installed under C:\Program Files\OpenSSL-Win64, use:

$env:OPENSSL_ROOT_DIR = "C:\Program Files\OpenSSL-Win64"
$env:OPENSSL_MODULES = "C:\Program Files\OpenSSL-Win64\bin"

Install MySQL Development Files

Install MySQL Server 9.7 or a compatible MySQL package that includes the C API headers and import libraries.

Verify the expected files:

$env:MYSQL_ROOT = "C:\Program Files\MySQL\MySQL Server 9.7"

Test-Path "$env:MYSQL_ROOT\include\mysql.h"
Test-Path "$env:MYSQL_ROOT\lib\libmysql.lib"
Test-Path "$env:MYSQL_ROOT\lib\libmysql.dll"

Each command should print True.

If MySQL is installed somewhere else, set MYSQL_ROOT, MYSQL_HOME, or MYSQL_DIR before running CMake.

Pulling the Source

Open Developer PowerShell for Visual Studio 2022 and run:

cd C:\
git clone -b main https://github.com/ProjectSkyfire/SkyFire_548.git C:\SkyFire_548
cd C:\SkyFire_548

To update an existing checkout:

cd C:\SkyFire_548
git pull --ff-only

Configure with CMake

Set dependency paths in the same shell you will use to configure:

$env:BOOST_ROOT = "C:\local\boost_1_91_0"
$env:OPENSSL_ROOT_DIR = "C:\Program Files\OpenSSL"
$env:OPENSSL_MODULES = "C:\Program Files\OpenSSL\bin"
$env:MYSQL_ROOT = "C:\Program Files\MySQL\MySQL Server 9.7"

Configure a 64-bit Visual Studio solution:

cmake -S C:\SkyFire_548 -B C:\SkyFire_548\build `
  -G "Visual Studio 17 2022" `
  -A x64 `
  -DCMAKE_INSTALL_PREFIX="D:\SkyFire_Files\Server" `
  -DTOOLS=ON `
  -DBOOST_ROOT="$env:BOOST_ROOT" `
  -DOPENSSL_ROOT_DIR="$env:OPENSSL_ROOT_DIR"

Default server and script options are enabled. TOOLS=ON builds the map, vmap, and mmap extraction tools.

If you need to work around a precompiled-header issue while debugging, add:

-DNOPCH=1

Do not use NOPCH for normal Windows release builds unless you are troubleshooting.

Configure with CMake GUI

Command-line CMake is recommended, but CMake GUI also works:

  • Where is the source code: C:\SkyFire_548
  • Where to build the binaries: C:\SkyFire_548\build
  • Generator: Visual Studio 17 2022
  • Optional platform: x64

After the first Configure pass, verify or add:

BOOST_ROOT=C:\local\boost_1_91_0
OPENSSL_ROOT_DIR=C:\Program Files\OpenSSL
CMAKE_INSTALL_PREFIX=D:\SkyFire_Files\Server
TOOLS=ON

OPENSSL_MODULES is read from the environment, so set it before launching CMake GUI if your OpenSSL module directory is not discovered automatically.

Build

From Developer PowerShell:

cmake --build C:\SkyFire_548\build --config Release --parallel

Release build output is written under:

C:\SkyFire_548\build\bin\Release

Expected server files include:

authserver.exe
worldserver.exe
authserver.conf.dist
worldserver.conf.dist
libcrypto-4-x64.dll
libssl-4-x64.dll
libmysql.dll

With TOOLS=ON, extraction tools are also built in the same output tree.

Install or Stage the Server Files

You can install the main targets with:

cmake --install C:\SkyFire_548\build --config Release

For a normal local server folder, copying the Release output is often simpler:

New-Item -ItemType Directory -Force D:\SkyFire_Files\Server | Out-Null
Copy-Item C:\SkyFire_548\build\bin\Release\* D:\SkyFire_Files\Server -Recurse -Force

Rename the configuration files:

Copy-Item D:\SkyFire_Files\Server\authserver.conf.dist D:\SkyFire_Files\Server\authserver.conf
Copy-Item D:\SkyFire_Files\Server\worldserver.conf.dist D:\SkyFire_Files\Server\worldserver.conf

Edit authserver.conf and worldserver.conf for your database host, database names, bind IPs, ports, and data directory.

If OpenSSL provider loading fails at runtime, set OPENSSL_MODULES for the user running the server:

setx OPENSSL_MODULES "C:\Program Files\OpenSSL\bin"

Open a new shell after using setx.

Useful CMake Options

-DSERVERS=ON          Build worldserver and authserver. Enabled by default.
-DSCRIPTS=ON          Build core with scripts included. Enabled by default.
-DTOOLS=ON            Build map/vmap/mmap extraction and assembler tools.
-DNOPCH=1             Disable all precompiled headers.
-DUSE_COREPCH=ON      Use precompiled headers for core/server targets.
-DUSE_SCRIPTPCH=ON    Use precompiled headers for scripts.
-DWITH_WARNINGS=ON    Enable extra compiler warnings.
-DWITH_COREDEBUG=ON   Include additional core debug code.
-DWITHOUT_GIT=ON      Disable git revision detection.
-DAUTH_SERVER=ON      Build authserver. Enabled by default.
-DWITH_CXX_23_STD=ON  Use C++23. Enabled by default.
-DWITH_CXX_DRAFT_STD=ON Use the compiler draft standard mode.

Troubleshooting

MSVC version is too old

SkyFire requires MSVC 19.44.35217.0 or newer. Update Visual Studio 2022 or Visual Studio Build Tools, then delete the CMake build directory and configure again.

Remove-Item -Recurse -Force C:\SkyFire_548\build

Boost was not found

Confirm BOOST_ROOT points at Boost 1.91.0:

$env:BOOST_ROOT = "C:\local\boost_1_91_0"
Test-Path "$env:BOOST_ROOT\include\boost"

Delete the CMake build directory and configure again.

SkyFire needs OpenSSL version 4.0.0

CMake found a different OpenSSL version. Set OPENSSL_ROOT_DIR to the OpenSSL 4.0.0 install and reconfigure from a clean build directory.

$env:OPENSSL_ROOT_DIR = "C:\Program Files\OpenSSL"
Remove-Item -Recurse -Force C:\SkyFire_548\build

OpenSSL modules or legacy.dll were not found

Set OPENSSL_MODULES to the directory containing legacy.dll:

$env:OPENSSL_MODULES = "C:\Program Files\OpenSSL\bin"
Test-Path "$env:OPENSSL_MODULES\legacy.dll"

If legacy.dll is missing, reinstall the full OpenSSL 4.0.0 x64 package.

MySQL headers or libraries were not found

Install the MySQL development components and set MYSQL_ROOT if needed:

$env:MYSQL_ROOT = "C:\Program Files\MySQL\MySQL Server 9.7"
Test-Path "$env:MYSQL_ROOT\include\mysql.h"
Test-Path "$env:MYSQL_ROOT\lib\libmysql.lib"

Delete the CMake build directory and configure again.

Runtime error for libmysql.dll, libssl, or libcrypto

Copy the DLLs from the build output into the server folder, or keep the dependency directories on PATH.

Copy-Item C:\SkyFire_548\build\bin\Release\*.dll D:\SkyFire_Files\Server -Force

References