mirror of
https://github.com/LizardByte/Sunshine.git
synced 2025-03-14 01:27:36 +00:00
build(win): use UCRT64 environment instead of MinGW64. (#2323)
Co-authored-by: Conn O'Griofa <connogriofa@gmail.com>
This commit is contained in:
parent
3c341ead45
commit
fed482caf0
32
.github/workflows/CI.yml
vendored
32
.github/workflows/CI.yml
vendored
@ -935,29 +935,23 @@ jobs:
|
||||
- name: Setup Dependencies Windows
|
||||
uses: msys2/setup-msys2@v2
|
||||
with:
|
||||
msystem: ucrt64
|
||||
update: true
|
||||
install: >-
|
||||
base-devel
|
||||
diffutils
|
||||
doxygen
|
||||
git
|
||||
make
|
||||
mingw-w64-x86_64-binutils
|
||||
mingw-w64-x86_64-boost
|
||||
mingw-w64-x86_64-cmake
|
||||
mingw-w64-x86_64-curl
|
||||
mingw-w64-x86_64-graphviz
|
||||
mingw-w64-x86_64-miniupnpc
|
||||
mingw-w64-x86_64-nlohmann-json
|
||||
mingw-w64-x86_64-nodejs
|
||||
mingw-w64-x86_64-nsis
|
||||
mingw-w64-x86_64-onevpl
|
||||
mingw-w64-x86_64-openssl
|
||||
mingw-w64-x86_64-opus
|
||||
mingw-w64-x86_64-toolchain
|
||||
nasm
|
||||
wget
|
||||
yasm
|
||||
mingw-w64-ucrt-x86_64-boost
|
||||
mingw-w64-ucrt-x86_64-cmake
|
||||
mingw-w64-ucrt-x86_64-curl
|
||||
mingw-w64-ucrt-x86_64-graphviz
|
||||
mingw-w64-ucrt-x86_64-miniupnpc
|
||||
mingw-w64-ucrt-x86_64-nlohmann-json
|
||||
mingw-w64-ucrt-x86_64-nodejs
|
||||
mingw-w64-ucrt-x86_64-nsis
|
||||
mingw-w64-ucrt-x86_64-onevpl
|
||||
mingw-w64-ucrt-x86_64-openssl
|
||||
mingw-w64-ucrt-x86_64-opus
|
||||
mingw-w64-ucrt-x86_64-toolchain
|
||||
|
||||
- name: Setup python
|
||||
# use this instead of msys2 python due to known issues using wheels, https://www.msys2.org/docs/python/
|
||||
|
@ -3,7 +3,7 @@ Windows
|
||||
|
||||
Requirements
|
||||
------------
|
||||
First you need to install `MSYS2 <https://www.msys2.org>`__, then startup "MSYS2 MinGW 64-bit" and execute the following
|
||||
First you need to install `MSYS2 <https://www.msys2.org>`__, then startup "MSYS2 UCRT64" and execute the following
|
||||
codes.
|
||||
|
||||
Update all packages:
|
||||
@ -15,26 +15,21 @@ Install dependencies:
|
||||
.. code-block:: bash
|
||||
|
||||
pacman -S \
|
||||
base-devel \
|
||||
cmake \
|
||||
diffutils \
|
||||
doxygen \
|
||||
gcc \
|
||||
git \
|
||||
make \
|
||||
mingw-w64-x86_64-binutils \
|
||||
mingw-w64-x86_64-boost \
|
||||
mingw-w64-x86_64-cmake \
|
||||
mingw-w64-x86_64-curl \
|
||||
mingw-w64-x86_64-graphviz \
|
||||
mingw-w64-x86_64-miniupnpc \
|
||||
mingw-w64-x86_64-nlohmann-json \
|
||||
mingw-w64-x86_64-nodejs \
|
||||
mingw-w64-x86_64-onevpl \
|
||||
mingw-w64-x86_64-openssl \
|
||||
mingw-w64-x86_64-opus \
|
||||
mingw-w64-x86_64-rust \
|
||||
mingw-w64-x86_64-toolchain \
|
||||
mingw-w64-ucrt-x86_64-boost \
|
||||
mingw-w64-ucrt-x86_64-cmake \
|
||||
mingw-w64-ucrt-x86_64-curl \
|
||||
mingw-w64-ucrt-x86_64-graphviz \
|
||||
mingw-w64-ucrt-x86_64-miniupnpc \
|
||||
mingw-w64-ucrt-x86_64-nlohmann-json \
|
||||
mingw-w64-ucrt-x86_64-nodejs \
|
||||
mingw-w64-ucrt-x86_64-nsis \
|
||||
mingw-w64-ucrt-x86_64-onevpl \
|
||||
mingw-w64-ucrt-x86_64-openssl \
|
||||
mingw-w64-ucrt-x86_64-opus \
|
||||
mingw-w64-ucrt-x86_64-rust \
|
||||
mingw-w64-ucrt-x86_64-toolchain \
|
||||
python \
|
||||
python-pip
|
||||
|
||||
|
@ -1272,10 +1272,16 @@ namespace config {
|
||||
BOOST_LOG(fatal) << "Failed to apply config: "sv << err.what();
|
||||
}
|
||||
|
||||
if (!config_loaded) {
|
||||
#ifdef _WIN32
|
||||
// UCRT64 raises an access denied exception if launching from the shortcut
|
||||
// as non-admin and the config folder is not yet present; we can defer
|
||||
// so that service instance will do the work instead.
|
||||
|
||||
if (!config_loaded && !shortcut_launch) {
|
||||
BOOST_LOG(fatal) << "To relaunch Sunshine successfully, use the shortcut in the Start Menu. Do not run Sunshine.exe manually."sv;
|
||||
std::this_thread::sleep_for(10s);
|
||||
#else
|
||||
if (!config_loaded) {
|
||||
#endif
|
||||
return -1;
|
||||
}
|
||||
@ -1283,6 +1289,8 @@ namespace config {
|
||||
#ifdef _WIN32
|
||||
// We have to wait until the config is loaded to handle these launches,
|
||||
// because we need to have the correct base port loaded in our config.
|
||||
// Exception: UCRT64 shortcut_launch instances may have no config loaded due to
|
||||
// insufficient permissions to create folder; port defaults will be acceptable.
|
||||
if (service_admin_launch) {
|
||||
// This is a relaunch as admin to start the service
|
||||
service_ctrl::start_service();
|
||||
|
@ -91,8 +91,7 @@ main(int argc, char *argv[]) {
|
||||
task_pool_util::TaskPool::task_id_t force_shutdown = nullptr;
|
||||
|
||||
#ifdef _WIN32
|
||||
// Switch default C standard library locale to UTF-8 on Windows 10 1803+
|
||||
setlocale(LC_ALL, ".UTF-8");
|
||||
setlocale(LC_ALL, "C");
|
||||
#endif
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
|
@ -38,10 +38,11 @@ if exist "%OLD_DIR%\credentials\" (
|
||||
rem Create the credentials directory if it wasn't migrated or already existing
|
||||
if not exist "%NEW_DIR%\credentials\" mkdir "%NEW_DIR%\credentials"
|
||||
|
||||
rem Disallow read access to the credentials directory for normal users
|
||||
rem Note: We must use the SID directly because "Administrators" is localized
|
||||
rem Disallow read access to the credentials directory contents for normal users
|
||||
rem Note: We must use the SIDs directly because "Users" and "Administrators" are localized
|
||||
icacls "%NEW_DIR%\credentials" /inheritance:r
|
||||
icacls "%NEW_DIR%\credentials" /grant:r *S-1-5-32-544:(OI)(CI)(F)
|
||||
icacls "%NEW_DIR%\credentials" /grant:r *S-1-5-32-545:(R)
|
||||
|
||||
rem Migrate the covers directory
|
||||
if exist "%OLD_DIR%\covers\" (
|
||||
|
Loading…
x
Reference in New Issue
Block a user