mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-13 19:49:51 +01:00
fix: handle older VC redist versions (#5447)
This commit is contained in:
parent
66471075a5
commit
280ac30289
|
@ -42,7 +42,7 @@ $VCRTVersion = (Get-Item "$Env:VCToolsRedistDir\vc_redist.x64.exe").VersionInfo;
|
||||||
ISCC `
|
ISCC `
|
||||||
/DWORKING_DIR="$($pwd.Path)\" `
|
/DWORKING_DIR="$($pwd.Path)\" `
|
||||||
/DINSTALLER_BASE_NAME="$installerBaseName" `
|
/DINSTALLER_BASE_NAME="$installerBaseName" `
|
||||||
/DSHIPPED_VCRT_BUILD="$($VCRTVersion.FileBuildPart)" `
|
/DSHIPPED_VCRT_MINOR="$($VCRTVersion.FileMinorPart)" `
|
||||||
/DSHIPPED_VCRT_VERSION="$($VCRTVersion.FileDescription)" `
|
/DSHIPPED_VCRT_VERSION="$($VCRTVersion.FileDescription)" `
|
||||||
$defines `
|
$defines `
|
||||||
/O. `
|
/O. `
|
||||||
|
|
|
@ -120,15 +120,15 @@ begin
|
||||||
Result := VCRTVersion + ' is installed';
|
Result := VCRTVersion + ' is installed';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Checks if a new VCRT is needed by comparing the builds.
|
// Checks if a new VCRT is needed by comparing the minor version (the major one is locked at 14).
|
||||||
function NeedsNewVCRT(): Boolean;
|
function NeedsNewVCRT(): Boolean;
|
||||||
var
|
var
|
||||||
VCRTBuild: Cardinal;
|
VCRTBuild: Cardinal;
|
||||||
begin
|
begin
|
||||||
Result := True;
|
Result := True;
|
||||||
if RegQueryDWordValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64', 'Bld', VCRTBuild) then
|
if RegQueryDWordValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64', 'Minor', VCRTBuild) then
|
||||||
begin
|
begin
|
||||||
if VCRTBuild >= {#SHIPPED_VCRT_BUILD} then
|
if VCRTBuild >= {#SHIPPED_VCRT_MINOR} then
|
||||||
Result := False;
|
Result := False;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
30
.CI/deploy-crt.ps1
Normal file
30
.CI/deploy-crt.ps1
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
param (
|
||||||
|
[string] $InstallDir = "Chatterino2"
|
||||||
|
)
|
||||||
|
|
||||||
|
if ($null -eq $Env:VCToolsRedistDir) {
|
||||||
|
Write-Error "VCToolsRedistDir is not set. Forgot to set Visual Studio environment variables?";
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# A path to the runtime libraries (e.g. "$Env:VCToolsRedistDir\onecore\x64\Microsoft.VC143.CRT")
|
||||||
|
$vclibs = (Get-ChildItem "$Env:VCToolsRedistDir\onecore\x64" -Filter '*.CRT')[0].FullName;
|
||||||
|
|
||||||
|
# All executables and libraries in the installation directory
|
||||||
|
$targets = Get-ChildItem -Recurse -Include '*.dll', '*.exe' $InstallDir;
|
||||||
|
# All dependencies of the targets (with duplicates)
|
||||||
|
$all_deps = $targets | ForEach-Object { (dumpbin /DEPENDENTS $_.FullName) -match '^(?!Dump of).+\.dll$' } | ForEach-Object { $_.Trim() };
|
||||||
|
# All dependencies without duplicates
|
||||||
|
$dependencies = $all_deps | Sort-Object -Unique;
|
||||||
|
|
||||||
|
$n_deployed = 0;
|
||||||
|
foreach ($dll in $dependencies) {
|
||||||
|
Write-Output "Checking for $dll";
|
||||||
|
if (Test-Path -PathType Leaf "$vclibs\$dll") {
|
||||||
|
Write-Output "Deploying $dll";
|
||||||
|
Copy-Item "$vclibs\$dll" "$InstallDir\$dll" -Force;
|
||||||
|
$n_deployed++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Output "Deployed $n_deployed libraries";
|
1
.github/workflows/build.yml
vendored
1
.github/workflows/build.yml
vendored
|
@ -251,6 +251,7 @@ jobs:
|
||||||
cd build
|
cd build
|
||||||
windeployqt bin/chatterino.exe --release --no-compiler-runtime --no-translations --no-opengl-sw --dir Chatterino2/
|
windeployqt bin/chatterino.exe --release --no-compiler-runtime --no-translations --no-opengl-sw --dir Chatterino2/
|
||||||
cp bin/chatterino.exe Chatterino2/
|
cp bin/chatterino.exe Chatterino2/
|
||||||
|
..\.CI\deploy-crt.ps1 Chatterino2
|
||||||
echo nightly > Chatterino2/modes
|
echo nightly > Chatterino2/modes
|
||||||
|
|
||||||
- name: Package (windows)
|
- name: Package (windows)
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
- Dev: Removed unused timegate settings. (#5361)
|
- Dev: Removed unused timegate settings. (#5361)
|
||||||
- Dev: All Lua globals now show in the `c2` global in the LuaLS metadata. (#5385)
|
- Dev: All Lua globals now show in the `c2` global in the LuaLS metadata. (#5385)
|
||||||
- Dev: Images are now loaded in worker threads. (#5431)
|
- Dev: Images are now loaded in worker threads. (#5431)
|
||||||
|
- Dev: The MSVC CRT is now bundled with Chatterino as it depends on having a recent version installed. (#5447)
|
||||||
|
|
||||||
## 2.5.1
|
## 2.5.1
|
||||||
|
|
||||||
|
|
|
@ -865,6 +865,7 @@ if (BUILD_APP)
|
||||||
endif()
|
endif()
|
||||||
get_filename_component(QT_BIN_DIR ${QT_CORE_LOC} DIRECTORY)
|
get_filename_component(QT_BIN_DIR ${QT_CORE_LOC} DIRECTORY)
|
||||||
|
|
||||||
|
# This assumes the installed CRT is up-to-date (see .CI/deploy-crt.ps1)
|
||||||
set(WINDEPLOYQT_COMMAND_ARGV "${WINDEPLOYQT_PATH}" "$<TARGET_FILE:${EXECUTABLE_PROJECT}>" ${WINDEPLOYQT_MODE} --no-compiler-runtime --no-translations --no-opengl-sw)
|
set(WINDEPLOYQT_COMMAND_ARGV "${WINDEPLOYQT_PATH}" "$<TARGET_FILE:${EXECUTABLE_PROJECT}>" ${WINDEPLOYQT_MODE} --no-compiler-runtime --no-translations --no-opengl-sw)
|
||||||
string(REPLACE ";" " " WINDEPLOYQT_COMMAND "${WINDEPLOYQT_COMMAND_ARGV}")
|
string(REPLACE ";" " " WINDEPLOYQT_COMMAND "${WINDEPLOYQT_COMMAND_ARGV}")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue