From 364947e04cdefcb7788c892c2600451177338a27 Mon Sep 17 00:00:00 2001 From: BRUNER Patrick Date: Wed, 17 Jun 2026 16:50:16 +0200 Subject: [PATCH 1/2] removed a lot off no longer necessary dependency checks --- .github/workflows/release.yml | 16 +- src/Directory.Build.props | 10 +- src/LogExpert.sln | 8 + src/setup/CodeDependencies.iss | 668 +----------------- winget/LogExperts.LogExpert.installer.yaml | 6 +- winget/LogExperts.LogExpert.locale.en-US.yaml | 4 +- winget/LogExperts.LogExpert.yaml | 2 +- 7 files changed, 41 insertions(+), 673 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dec6258c..31ce4e54 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -83,13 +83,21 @@ jobs: git add "src/Solution Items/usedComponents.json" git add "src/PluginRegistry/PluginHashGenerator.Generated.cs" - git diff --staged --quiet - if ($LASTEXITCODE -eq 0) { + # Describe only the files that actually changed. usedComponents.json is + # regenerated every release but rarely differs (dependencies are stable), + # so without this the message falsely claims it was updated each time. + $staged = git diff --staged --name-only + if ([string]::IsNullOrWhiteSpace($staged)) { Write-Host "No changes to commit; skipping PR." exit 0 } - git commit -m "chore: update plugin hashes and usedComponents.json for ${{ github.ref_name }} [skip ci]" + $parts = @() + if ($staged -match 'PluginHashGenerator\.Generated\.cs') { $parts += 'plugin hashes' } + if ($staged -match 'usedComponents\.json') { $parts += 'usedComponents.json' } + $what = $parts -join ' and ' + + git commit -m "chore: update $what for ${{ github.ref_name }} [skip ci]" # Force-push so re-running the release for the same tag updates the existing branch git push --force origin $branch @@ -98,7 +106,7 @@ jobs: if ([string]::IsNullOrWhiteSpace($existing)) { gh pr create --base Development --head $branch ` --title "chore: update generated files for ${{ github.ref_name }} [skip ci]" ` - --body "Automated update of plugin hashes and ``usedComponents.json`` for release ${{ github.ref_name }}." + --body "Automated update of $what for release ${{ github.ref_name }}." } else { Write-Host "PR #$existing already exists for $branch" } diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 1f28b2b9..5fc5b6a2 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -1,9 +1,9 @@ 1.40.1.0 - 1.40.1.0 - 1.40.1.0 - 1.40.1.0 + 1.40.4.0 + 1.40.4.0 + 1.40.4.0 Hirogen, zarunbal, RandallFlagg, TheNicker LogExperts enable @@ -21,8 +21,8 @@ https://github.com/LogExperts/LogExpert LogExpert, Columnizer, Logging, Windows, Winforms git - https://github.com/LogExperts/LogExpert/releases/tag/v.1.40.1 - 1.40.1.0 + https://github.com/LogExperts/LogExpert/releases/tag/v.1.40.4 + 1.40.4.0 true LogExpert Copyright © LogExpert 2025 diff --git a/src/LogExpert.sln b/src/LogExpert.sln index 4fe6edb1..f7a09da6 100644 --- a/src/LogExpert.sln +++ b/src/LogExpert.sln @@ -109,6 +109,13 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "help", "help", "{9FC7BC64-C HelpSmith\LogExpert.chm = HelpSmith\LogExpert.chm EndProjectSection EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "winget", "winget", "{EC031913-3DC3-443F-9A86-01F80F964D2A}" + ProjectSection(SolutionItems) = preProject + ..\winget\LogExperts.LogExpert.installer.yaml = ..\winget\LogExperts.LogExpert.installer.yaml + ..\winget\LogExperts.LogExpert.locale.en-US.yaml = ..\winget\LogExperts.LogExpert.locale.en-US.yaml + ..\winget\LogExperts.LogExpert.yaml = ..\winget\LogExperts.LogExpert.yaml + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -246,6 +253,7 @@ Global {CAD17410-CE8C-4FE5-91DE-1B3DE2945135} = {848C24BA-BEBA-48EC-90E6-526ECAB6BB4A} {1046779B-500D-8260-33BA-BC778C4B836F} = {848C24BA-BEBA-48EC-90E6-526ECAB6BB4A} {9FC7BC64-CE77-45DF-B8AC-10F1D0336E76} = {DE6375A4-B4C4-4620-8FFB-B9D5A4E21144} + {EC031913-3DC3-443F-9A86-01F80F964D2A} = {DE6375A4-B4C4-4620-8FFB-B9D5A4E21144} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {15924D5F-B90B-4BC7-9E7D-BCCB62EBABAD} diff --git a/src/setup/CodeDependencies.iss b/src/setup/CodeDependencies.iss index 2b3e3ea5..8531f8f4 100644 --- a/src/setup/CodeDependencies.iss +++ b/src/setup/CodeDependencies.iss @@ -1,5 +1,13 @@ [Code] -// https://github.com/DomGries/InnoDependencyInstaller +// Based on https://github.com/DomGries/InnoDependencyInstaller +// +// TRIMMED for LogExpert: this installer only needs the .NET 10 Desktop Runtime. +// All other dependency definitions from the upstream script (other .NET versions, +// VC++ redistributables, DirectX, SQL Server, WebView2, Access, VSTO, Windows App +// Runtime, Java, Python, PowerShell 7) were removed. They were dead code here, and +// their embedded download URLs and an inline PowerShell execution-policy override +// made the compiled setup.exe look like a downloader to AV heuristics. Keep this file +// minimal: only add back a dependency helper if the installer actually invokes it. // types and variables type @@ -321,90 +329,6 @@ begin Result := False; end; -procedure Dependency_AddDotNet35; -begin - // https://dotnet.microsoft.com/download/dotnet-framework/net35-sp1 - if not IsDotNetInstalled(net35, 1) then begin - Dependency_Add('dotnetfx35.exe', - '/lang:enu ' + Dependency_PassiveOrQuiet('/passive', '/q') + ' /norestart', - '.NET Framework 3.5 Service Pack 1', - 'https://download.microsoft.com/download/2/0/E/20E90413-712F-438C-988E-FDAA79A8AC3D/dotnetfx35.exe', - '', False, False); - end; -end; - -procedure Dependency_AddDotNet40; -begin - // https://dotnet.microsoft.com/download/dotnet-framework/net40 - if not IsDotNetInstalled(net4full, 0) then begin - Dependency_Add('dotNetFx40_Full_setup.exe', - '/lcid ' + IntToStr(GetUILanguage) + ' ' + Dependency_PassiveOrQuiet('/passive', '/q') + ' /norestart', - '.NET Framework 4.0', - 'https://download.microsoft.com/download/1/B/E/1BE39E79-7E39-46A3-96FF-047F95396215/dotNetFx40_Full_setup.exe', - '', False, False); - end; -end; - -procedure Dependency_AddDotNet45; -begin - // https://dotnet.microsoft.com/download/dotnet-framework/net452 - if not IsDotNetInstalled(net452, 0) then begin - Dependency_Add('dotnetfx45.exe', - '/lcid ' + IntToStr(GetUILanguage) + ' ' + Dependency_PassiveOrQuiet('/passive', '/q') + ' /norestart', - '.NET Framework 4.5.2', - 'https://go.microsoft.com/fwlink/?LinkId=397707', - '', False, False); - end; -end; - -procedure Dependency_AddDotNet46; -begin - // https://dotnet.microsoft.com/download/dotnet-framework/net462 - if not IsDotNetInstalled(net462, 0) then begin - Dependency_Add('dotnetfx46.exe', - '/lcid ' + IntToStr(GetUILanguage) + ' ' + Dependency_PassiveOrQuiet('/passive', '/q') + ' /norestart', - '.NET Framework 4.6.2', - 'https://go.microsoft.com/fwlink/?linkid=780596', - '', False, False); - end; -end; - -procedure Dependency_AddDotNet47; -begin - // https://dotnet.microsoft.com/download/dotnet-framework/net472 - if not IsDotNetInstalled(net472, 0) then begin - Dependency_Add('dotnetfx47.exe', - '/lcid ' + IntToStr(GetUILanguage) + ' ' + Dependency_PassiveOrQuiet('/passive', '/q') + ' /norestart', - '.NET Framework 4.7.2', - 'https://go.microsoft.com/fwlink/?LinkId=863262', - '', False, False); - end; -end; - -procedure Dependency_AddDotNet48; -begin - // https://dotnet.microsoft.com/download/dotnet-framework/net48 - if not IsDotNetInstalled(net48, 0) then begin - Dependency_Add('dotnetfx48.exe', - '/lcid ' + IntToStr(GetUILanguage) + ' ' + Dependency_PassiveOrQuiet('/passive', '/q') + ' /norestart', - '.NET Framework 4.8', - 'https://go.microsoft.com/fwlink/?LinkId=2085155', - '', False, False); - end; -end; - -procedure Dependency_AddDotNet481; -begin - // https://dotnet.microsoft.com/download/dotnet-framework/net481 - if not IsDotNetInstalled(net481, 0) then begin - Dependency_Add('dotnetfx481.exe', - '/lcid ' + IntToStr(GetUILanguage) + ' ' + Dependency_PassiveOrQuiet('/passive', '/q') + ' /norestart', - '.NET Framework 4.8.1', - 'https://go.microsoft.com/fwlink/?LinkId=2203304', - '', False, False); - end; -end; - procedure Dependency_AddNetCore(const Prefix, Title, URL: String); begin Dependency_Add(Prefix + Dependency_ArchSuffix + '.exe', @@ -414,582 +338,10 @@ begin '', False, False); end; -procedure Dependency_AddNetCore31; -begin - // https://dotnet.microsoft.com/download/dotnet-core/3.1 - if not Dependency_IsNetCoreInstalled('Microsoft.NETCore.App', 3, 1, 32) then begin - Dependency_AddNetCore('netcore31', '.NET Core Runtime 3.1.32', Dependency_String('https://download.visualstudio.microsoft.com/download/pr/de4b3438-24a2-4d1d-a845-97355cf97b71/515abb880478b49f7c1bced8fbf07b16/dotnet-runtime-3.1.32-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/476eba79-f17f-49c8-a213-0f24a22cd026/37c02de81ff5b76ac57a5427462395f1/dotnet-runtime-3.1.32-win-x64.exe', 'https://download.visualstudio.microsoft.com/download/pr/476eba79-f17f-49c8-a213-0f24a22cd026/37c02de81ff5b76ac57a5427462395f1/dotnet-runtime-3.1.32-win-x64.exe')); - end; -end; - -procedure Dependency_AddNetCore31Asp; -begin - if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App', 3, 1, 32) then begin - Dependency_AddNetCore('netcore31asp', 'ASP.NET Core Runtime 3.1.32', Dependency_String('https://download.visualstudio.microsoft.com/download/pr/63b482d2-04b2-4dd4-baaf-d1e78de80738/40321091c872f4e77337b68fc61a5a07/aspnetcore-runtime-3.1.32-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/98910750-2644-472c-ab2b-17f315ccb953/c2a4c223ee11e2eec7d13744e7a45547/aspnetcore-runtime-3.1.32-win-x64.exe', 'https://download.visualstudio.microsoft.com/download/pr/98910750-2644-472c-ab2b-17f315ccb953/c2a4c223ee11e2eec7d13744e7a45547/aspnetcore-runtime-3.1.32-win-x64.exe')); - end; -end; - -procedure Dependency_AddNetCore31Desktop; -begin - if not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App', 3, 1, 32) then begin - Dependency_AddNetCore('netcore31desktop', '.NET Desktop Runtime 3.1.32', Dependency_String('https://download.visualstudio.microsoft.com/download/pr/3f353d2c-0431-48c5-bdf6-fbbe8f901bb5/542a4af07c1df5136a98a1c2df6f3d62/windowsdesktop-runtime-3.1.32-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/b92958c6-ae36-4efa-aafe-569fced953a5/1654639ef3b20eb576174c1cc200f33a/windowsdesktop-runtime-3.1.32-win-x64.exe', 'https://download.visualstudio.microsoft.com/download/pr/b92958c6-ae36-4efa-aafe-569fced953a5/1654639ef3b20eb576174c1cc200f33a/windowsdesktop-runtime-3.1.32-win-x64.exe')); - end; -end; - -procedure Dependency_AddDotNet50; -begin - // https://dotnet.microsoft.com/download/dotnet/5.0 - if not Dependency_IsNetCoreInstalled('Microsoft.NETCore.App', 5, 0, 17) then begin - Dependency_AddNetCore('dotnet50', '.NET Runtime 5.0.17', Dependency_String('https://aka.ms/dotnet/5.0/dotnet-runtime-win-x86.exe', 'https://aka.ms/dotnet/5.0/dotnet-runtime-win-x64.exe', 'https://aka.ms/dotnet/5.0/dotnet-runtime-win-arm64.exe')); - end; -end; - -procedure Dependency_AddDotNet50Asp; -begin - if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App', 5, 0, 17) then begin - Dependency_AddNetCore('dotnet50asp', 'ASP.NET Core Runtime 5.0.17', Dependency_String('https://aka.ms/dotnet/5.0/aspnetcore-runtime-win-x86.exe', 'https://aka.ms/dotnet/5.0/aspnetcore-runtime-win-x64.exe', 'https://aka.ms/dotnet/5.0/aspnetcore-runtime-win-x64.exe')); - end; -end; - -procedure Dependency_AddDotNet50Desktop; -begin - if not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App', 5, 0, 17) then begin - Dependency_AddNetCore('dotnet50desktop', '.NET Desktop Runtime 5.0.17', Dependency_String('https://aka.ms/dotnet/5.0/windowsdesktop-runtime-win-x86.exe', 'https://aka.ms/dotnet/5.0/windowsdesktop-runtime-win-x64.exe', 'https://aka.ms/dotnet/5.0/windowsdesktop-runtime-win-arm64.exe')); - end; -end; - -procedure Dependency_AddDotNet60; -begin - // https://dotnet.microsoft.com/download/dotnet/6.0 - if not Dependency_IsNetCoreInstalled('Microsoft.NETCore.App', 6, 0, 36) then begin - Dependency_AddNetCore('dotnet60', '.NET Runtime 6.0.36', Dependency_String('https://aka.ms/dotnet/6.0/dotnet-runtime-win-x86.exe', 'https://aka.ms/dotnet/6.0/dotnet-runtime-win-x64.exe', 'https://aka.ms/dotnet/6.0/dotnet-runtime-win-arm64.exe')); - end; -end; - -procedure Dependency_AddDotNet60Asp; -begin - if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App', 6, 0, 36) then begin - Dependency_AddNetCore('dotnet60asp', 'ASP.NET Core Runtime 6.0.36', Dependency_String('https://aka.ms/dotnet/6.0/aspnetcore-runtime-win-x86.exe', 'https://aka.ms/dotnet/6.0/aspnetcore-runtime-win-x64.exe', 'https://aka.ms/dotnet/6.0/aspnetcore-runtime-win-x64.exe')); - end; -end; - -procedure Dependency_AddDotNet60Desktop; -begin - if not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App', 6, 0, 36) then begin - Dependency_AddNetCore('dotnet60desktop', '.NET Desktop Runtime 6.0.36', Dependency_String('https://aka.ms/dotnet/6.0/windowsdesktop-runtime-win-x86.exe', 'https://aka.ms/dotnet/6.0/windowsdesktop-runtime-win-x64.exe', 'https://aka.ms/dotnet/6.0/windowsdesktop-runtime-win-arm64.exe')); - end; -end; - -procedure Dependency_AddDotNet70; -begin - // https://dotnet.microsoft.com/download/dotnet/7.0 - if not Dependency_IsNetCoreInstalled('Microsoft.NETCore.App', 7, 0, 20) then begin - Dependency_AddNetCore('dotnet70', '.NET Runtime 7.0.20', Dependency_String('https://aka.ms/dotnet/7.0/dotnet-runtime-win-x86.exe', 'https://aka.ms/dotnet/7.0/dotnet-runtime-win-x64.exe', 'https://aka.ms/dotnet/7.0/dotnet-runtime-win-arm64.exe')); - end; -end; - -procedure Dependency_AddDotNet70Asp; -begin - if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App', 7, 0, 20) then begin - Dependency_AddNetCore('dotnet70asp', 'ASP.NET Core Runtime 7.0.20', Dependency_String('https://aka.ms/dotnet/7.0/aspnetcore-runtime-win-x86.exe', 'https://aka.ms/dotnet/7.0/aspnetcore-runtime-win-x64.exe', 'https://aka.ms/dotnet/7.0/aspnetcore-runtime-win-arm64.exe')); - end; -end; - -procedure Dependency_AddDotNet70Desktop; -begin - if not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App', 7, 0, 20) then begin - Dependency_AddNetCore('dotnet70desktop', '.NET Desktop Runtime 7.0.20', Dependency_String('https://aka.ms/dotnet/7.0/windowsdesktop-runtime-win-x86.exe', 'https://aka.ms/dotnet/7.0/windowsdesktop-runtime-win-x64.exe', 'https://aka.ms/dotnet/7.0/windowsdesktop-runtime-win-arm64.exe')); - end; -end; - -procedure Dependency_AddDotNet80; -begin - // https://dotnet.microsoft.com/download/dotnet/8.0 - if not Dependency_IsNetCoreInstalled('Microsoft.NETCore.App', 8, 0, 27) then begin - Dependency_AddNetCore('dotnet80', '.NET Runtime 8.0.27', Dependency_String('https://aka.ms/dotnet/8.0/dotnet-runtime-win-x86.exe', 'https://aka.ms/dotnet/8.0/dotnet-runtime-win-x64.exe', 'https://aka.ms/dotnet/8.0/dotnet-runtime-win-arm64.exe')); - end; -end; - -procedure Dependency_AddDotNet80Asp; -begin - if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App', 8, 0, 27) then begin - Dependency_AddNetCore('dotnet80asp', 'ASP.NET Core Runtime 8.0.27', Dependency_String('https://aka.ms/dotnet/8.0/aspnetcore-runtime-win-x86.exe', 'https://aka.ms/dotnet/8.0/aspnetcore-runtime-win-x64.exe', 'https://aka.ms/dotnet/8.0/aspnetcore-runtime-win-arm64.exe')); - end; -end; - -procedure Dependency_AddDotNet80Desktop; -begin - if not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App', 8, 0, 27) then begin - Dependency_AddNetCore('dotnet80desktop', '.NET Desktop Runtime 8.0.27', Dependency_String('https://aka.ms/dotnet/8.0/windowsdesktop-runtime-win-x86.exe', 'https://aka.ms/dotnet/8.0/windowsdesktop-runtime-win-x64.exe', 'https://aka.ms/dotnet/8.0/windowsdesktop-runtime-win-arm64.exe')); - end; -end; - -procedure Dependency_AddDotNet90; -begin - // https://dotnet.microsoft.com/download/dotnet/9.0 - if not Dependency_IsNetCoreInstalled('Microsoft.NETCore.App', 9, 0, 16) then begin - Dependency_AddNetCore('dotnet90', '.NET Runtime 9.0.16', Dependency_String('https://aka.ms/dotnet/9.0/dotnet-runtime-win-x86.exe', 'https://aka.ms/dotnet/9.0/dotnet-runtime-win-x64.exe', 'https://aka.ms/dotnet/9.0/dotnet-runtime-win-arm64.exe')); - end; -end; - -procedure Dependency_AddDotNet90Asp; -begin - if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App', 9, 0, 16) then begin - Dependency_AddNetCore('dotnet90asp', 'ASP.NET Core Runtime 9.0.16', Dependency_String('https://aka.ms/dotnet/9.0/aspnetcore-runtime-win-x86.exe', 'https://aka.ms/dotnet/9.0/aspnetcore-runtime-win-x64.exe', 'https://aka.ms/dotnet/9.0/aspnetcore-runtime-win-arm64.exe')); - end; -end; - -procedure Dependency_AddDotNet90Desktop; -begin - if not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App', 9, 0, 16) then begin - Dependency_AddNetCore('dotnet90desktop', '.NET Desktop Runtime 9.0.16', Dependency_String('https://aka.ms/dotnet/9.0/windowsdesktop-runtime-win-x86.exe', 'https://aka.ms/dotnet/9.0/windowsdesktop-runtime-win-x64.exe', 'https://aka.ms/dotnet/9.0/windowsdesktop-runtime-win-arm64.exe')); - end; -end; - -procedure Dependency_AddDotNet100; -begin - // https://dotnet.microsoft.com/download/dotnet/10.0 - if not Dependency_IsNetCoreInstalled('Microsoft.NETCore.App', 10, 0, 8) then begin - Dependency_AddNetCore('dotnet100', '.NET Runtime 10.0.8', Dependency_String('https://aka.ms/dotnet/10.0/dotnet-runtime-win-x86.exe', 'https://aka.ms/dotnet/10.0/dotnet-runtime-win-x64.exe', 'https://aka.ms/dotnet/10.0/dotnet-runtime-win-arm64.exe')); - end; -end; - -procedure Dependency_AddDotNet100Asp; -begin - if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App', 10, 0, 8) then begin - Dependency_AddNetCore('dotnet100asp', 'ASP.NET Core Runtime 10.0.8', Dependency_String('https://aka.ms/dotnet/10.0/aspnetcore-runtime-win-x86.exe', 'https://aka.ms/dotnet/10.0/aspnetcore-runtime-win-x64.exe', 'https://aka.ms/dotnet/10.0/aspnetcore-runtime-win-arm64.exe')); - end; -end; - procedure Dependency_AddDotNet100Desktop; begin + // https://dotnet.microsoft.com/download/dotnet/10.0 if not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App', 10, 0, 9) then begin Dependency_AddNetCore('dotnet100desktop', '.NET Desktop Runtime 10.0.9', Dependency_String('https://aka.ms/dotnet/10.0/windowsdesktop-runtime-win-x86.exe', 'https://aka.ms/dotnet/10.0/windowsdesktop-runtime-win-x64.exe', 'https://aka.ms/dotnet/10.0/windowsdesktop-runtime-win-arm64.exe')); end; end; - -procedure Dependency_AddDotNetHosting(const Major, Patch: Integer; const URL: String); -begin - // https://dotnet.microsoft.com/download/dotnet - if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App', Major, 0, Patch) then begin - Dependency_Add('dotnet' + IntToStr(Major) + '0hosting.exe', - '/lcid ' + IntToStr(GetUILanguage) + ' ' + Dependency_PassiveOrQuiet('/passive', '/quiet') + ' /norestart', - 'ASP.NET Core ' + IntToStr(Major) + '.0 Hosting Bundle', - URL, - '', False, False); - end; -end; - -procedure Dependency_AddDotNet80Hosting; begin Dependency_AddDotNetHosting(8, 27, 'https://aka.ms/dotnet/8.0/dotnet-hosting-win.exe'); end; -procedure Dependency_AddDotNet90Hosting; begin Dependency_AddDotNetHosting(9, 16, 'https://aka.ms/dotnet/9.0/dotnet-hosting-win.exe'); end; -procedure Dependency_AddDotNet100Hosting; begin Dependency_AddDotNetHosting(10, 8, 'https://aka.ms/dotnet/10.0/dotnet-hosting-win.exe'); end; - -procedure Dependency_AddVC2005; -begin - // https://www.microsoft.com/en-us/download/details.aspx?id=26347 - if not IsMsiProductInstalled(Dependency_String('{86C9D5AA-F00C-4921-B3F2-C60AF92E2844}', '{A8D19029-8E5C-4E22-8011-48070F9E796E}', '{A8D19029-8E5C-4E22-8011-48070F9E796E}'), PackVersionComponents(8, 0, 61000, 0)) then begin - Dependency_Add('vcredist2005' + Dependency_ArchSuffix + '.exe', - '/q', - 'Visual C++ 2005 Service Pack 1 Redistributable' + Dependency_ArchTitle, - Dependency_String('https://download.microsoft.com/download/8/B/4/8B42259F-5D70-43F4-AC2E-4B208FD8D66A/vcredist_x86.EXE', 'https://download.microsoft.com/download/8/B/4/8B42259F-5D70-43F4-AC2E-4B208FD8D66A/vcredist_x64.EXE', 'https://download.microsoft.com/download/8/B/4/8B42259F-5D70-43F4-AC2E-4B208FD8D66A/vcredist_x64.EXE'), - '', False, False); - end; -end; - -procedure Dependency_AddVC2008; -begin - // https://www.microsoft.com/en-us/download/details.aspx?id=26368 - if not IsMsiProductInstalled(Dependency_String('{DE2C306F-A067-38EF-B86C-03DE4B0312F9}', '{FDA45DDF-8E17-336F-A3ED-356B7B7C688A}', '{FDA45DDF-8E17-336F-A3ED-356B7B7C688A}'), PackVersionComponents(9, 0, 30729, 6161)) then begin - Dependency_Add('vcredist2008' + Dependency_ArchSuffix + '.exe', - '/q', - 'Visual C++ 2008 Service Pack 1 Redistributable' + Dependency_ArchTitle, - Dependency_String('https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe', 'https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x64.exe', 'https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x64.exe'), - '', False, False); - end; -end; - -procedure Dependency_AddVC2010; -begin - // https://www.microsoft.com/en-us/download/details.aspx?id=26999 - if not IsMsiProductInstalled(Dependency_String('{1F4F1D2A-D9DA-32CF-9909-48485DA06DD5}', '{5B75F761-BAC8-33BC-A381-464DDDD813A3}', '{5B75F761-BAC8-33BC-A381-464DDDD813A3}'), PackVersionComponents(10, 0, 40219, 0)) then begin - Dependency_Add('vcredist2010' + Dependency_ArchSuffix + '.exe', - Dependency_PassiveOrQuiet('/passive', '/q') + ' /norestart', - 'Visual C++ 2010 Service Pack 1 Redistributable' + Dependency_ArchTitle, - Dependency_String('https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe', 'https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x64.exe', 'https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x64.exe'), - '', False, False); - end; -end; - -procedure Dependency_AddVC2012; -begin - // https://www.microsoft.com/en-us/download/details.aspx?id=30679 - if not IsMsiProductInstalled(Dependency_String('{4121ED58-4BD9-3E7B-A8B5-9F8BAAE045B7}', '{EFA6AFA1-738E-3E00-8101-FD03B86B29D1}', '{EFA6AFA1-738E-3E00-8101-FD03B86B29D1}'), PackVersionComponents(11, 0, 61030, 0)) then begin - Dependency_Add('vcredist2012' + Dependency_ArchSuffix + '.exe', - Dependency_PassiveOrQuiet('/passive', '/quiet') + ' /norestart', - 'Visual C++ 2012 Update 4 Redistributable' + Dependency_ArchTitle, - Dependency_String('https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe', 'https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe', 'https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe'), - '', False, False); - end; -end; - -procedure Dependency_AddVC2013; -begin - // https://support.microsoft.com/en-us/help/4032938 - if not IsMsiProductInstalled(Dependency_String('{B59F5BF1-67C8-3802-8E59-2CE551A39FC5}', '{20400CF0-DE7C-327E-9AE4-F0F38D9085F8}', '{20400CF0-DE7C-327E-9AE4-F0F38D9085F8}'), PackVersionComponents(12, 0, 40664, 0)) then begin - Dependency_Add('vcredist2013' + Dependency_ArchSuffix + '.exe', - Dependency_PassiveOrQuiet('/passive', '/quiet') + ' /norestart', - 'Visual C++ 2013 Update 5 Redistributable' + Dependency_ArchTitle, - Dependency_String('https://download.visualstudio.microsoft.com/download/pr/10912113/5da66ddebb0ad32ebd4b922fd82e8e25/vcredist_x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/10912041/cee5d6bca2ddbcd039da727bf4acb48a/vcredist_x64.exe', 'https://download.visualstudio.microsoft.com/download/pr/10912041/cee5d6bca2ddbcd039da727bf4acb48a/vcredist_x64.exe'), - '', False, False); - end; -end; - -procedure Dependency_AddVC14; -var - Version: String; - PackedVersion: Int64; -begin - // https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist - if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\' + Dependency_String('x86', 'x64', 'arm64'), 'Version', Version) and (Copy(Version, 1, 1) = 'v') then begin - Delete(Version, 1, 1); - end; - if not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(14, 51, 36231, 0)) < 0) then begin - Dependency_Add('vcredist14' + Dependency_ArchSuffix + '.exe', - Dependency_PassiveOrQuiet('/passive', '/quiet') + ' /norestart', - 'Visual C++ v14 Redistributable' + Dependency_ArchTitle, - Dependency_String('https://aka.ms/vc14/vc_redist.x86.exe', 'https://aka.ms/vc14/vc_redist.x64.exe', 'https://aka.ms/vc14/vc_redist.arm64.exe'), - '', False, False); - end; -end; - -procedure Dependency_AddVC2015To2019; begin Dependency_AddVC14; end; -procedure Dependency_AddVC2015To2022; begin Dependency_AddVC14; end; - -procedure Dependency_AddDirectX; -begin - // https://www.microsoft.com/en-us/download/details.aspx?id=35 - Dependency_Add('dxwebsetup.exe', - '/q', - 'DirectX Runtime', - 'https://download.microsoft.com/download/1/7/1/1718CCC4-6315-4D8E-9543-8E28A4E18C4C/dxwebsetup.exe', - '', True, False); -end; - -procedure Dependency_AddSql2008Express; -var - Version: String; - PackedVersion: Int64; -begin - // https://www.microsoft.com/en-us/download/details.aspx?id=30438 - if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQLServer\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(10, 50, 4000, 0)) < 0) then begin - Dependency_Add('sql2008express' + Dependency_ArchSuffix + '.exe', - Dependency_PassiveOrQuiet('/QS', '/Q') + ' /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER', - 'SQL Server 2008 R2 Service Pack 2 Express', - Dependency_String('https://download.microsoft.com/download/0/4/B/04BE03CD-EAF3-4797-9D8D-2E08E316C998/SQLEXPR32_x86_ENU.exe', 'https://download.microsoft.com/download/0/4/B/04BE03CD-EAF3-4797-9D8D-2E08E316C998/SQLEXPR_x64_ENU.exe', 'https://download.microsoft.com/download/0/4/B/04BE03CD-EAF3-4797-9D8D-2E08E316C998/SQLEXPR_x64_ENU.exe'), - '', False, False); - end; -end; - -procedure Dependency_AddSql2012Express; -var - Version: String; - PackedVersion: Int64; -begin - // https://www.microsoft.com/en-us/download/details.aspx?id=56042 - if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQLServer\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(11, 0, 7001, 0)) < 0) then begin - Dependency_Add('sql2012express' + Dependency_ArchSuffix + '.exe', - Dependency_PassiveOrQuiet('/QS', '/Q') + ' /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER', - 'SQL Server 2012 Service Pack 4 Express', - Dependency_String('https://download.microsoft.com/download/B/D/E/BDE8FAD6-33E5-44F6-B714-348F73E602B6/SQLEXPR32_x86_ENU.exe', 'https://download.microsoft.com/download/B/D/E/BDE8FAD6-33E5-44F6-B714-348F73E602B6/SQLEXPR_x64_ENU.exe', 'https://download.microsoft.com/download/B/D/E/BDE8FAD6-33E5-44F6-B714-348F73E602B6/SQLEXPR_x64_ENU.exe'), - '', False, False); - end; -end; - -procedure Dependency_AddSql2014Express; -var - Version: String; - PackedVersion: Int64; -begin - // https://www.microsoft.com/en-us/download/details.aspx?id=57473 - if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(12, 0, 6024, 0)) < 0) then begin - Dependency_Add('sql2014express' + Dependency_ArchSuffix + '.exe', - Dependency_PassiveOrQuiet('/QS', '/Q') + ' /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER', - 'SQL Server 2014 Service Pack 3 Express', - Dependency_String('https://download.microsoft.com/download/3/9/F/39F968FA-DEBB-4960-8F9E-0E7BB3035959/SQLEXPR32_x86_ENU.exe', 'https://download.microsoft.com/download/3/9/F/39F968FA-DEBB-4960-8F9E-0E7BB3035959/SQLEXPR_x64_ENU.exe', 'https://download.microsoft.com/download/3/9/F/39F968FA-DEBB-4960-8F9E-0E7BB3035959/SQLEXPR_x64_ENU.exe'), - '', False, False); - end; -end; - -procedure Dependency_AddSql2016Express; -var - Version: String; - PackedVersion: Int64; -begin - // https://www.microsoft.com/en-us/download/details.aspx?id=103447 - if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQLServer\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(13, 0, 6404, 1)) < 0) then begin - Dependency_Add('sql2016express' + Dependency_ArchSuffix + '.exe', - Dependency_PassiveOrQuiet('/QS', '/Q') + ' /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER', - 'SQL Server 2016 Service Pack 3 Express', - 'https://download.microsoft.com/download/f/a/8/fa83d147-63d1-449c-b22d-5fef9bd5bb46/SQLServer2016-SSEI-Expr.exe', - '', False, False); - end; -end; - -procedure Dependency_AddSql2017Express; -var - Version: String; - PackedVersion: Int64; -begin - // https://www.microsoft.com/en-us/download/details.aspx?id=55994 - if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQLServer\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(14, 0, 0, 0)) < 0) then begin - Dependency_Add('sql2017express' + Dependency_ArchSuffix + '.exe', - Dependency_PassiveOrQuiet('/QS', '/Q') + ' /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER', - 'SQL Server 2017 Express', - 'https://download.microsoft.com/download/5/E/9/5E9B18CC-8FD5-467E-B5BF-BADE39C51F73/SQLServer2017-SSEI-Expr.exe', - '', False, False); - end; -end; - -procedure Dependency_AddSql2019Express; -var - Version: String; - PackedVersion: Int64; -begin - // https://www.microsoft.com/en-us/download/details.aspx?id=101064 - if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQLServer\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(15, 0, 0, 0)) < 0) then begin - Dependency_Add('sql2019express' + Dependency_ArchSuffix + '.exe', - Dependency_PassiveOrQuiet('/QS', '/Q') + ' /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER', - 'SQL Server 2019 Express', - 'https://download.microsoft.com/download/7/f/8/7f8a9c43-8c8a-4f7c-9f92-83c18d96b681/SQL2019-SSEI-Expr.exe', - '', False, False); - end; -end; - -procedure Dependency_AddSql2022Express; -var - Version: String; - PackedVersion: Int64; -begin - // https://www.microsoft.com/en-us/download/details.aspx?id=104781 - if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(16, 0, 1000, 6)) < 0) then begin - Dependency_Add('sql2022express' + Dependency_ArchSuffix + '.exe', - Dependency_PassiveOrQuiet('/QS', '/Q') + ' /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER', - 'SQL Server 2022 Express', - 'https://go.microsoft.com/fwlink/p/?linkid=2216019', - '', False, False); - end; -end; - -procedure Dependency_AddSql2025Express; -var - Version: String; - PackedVersion: Int64; -begin - // https://www.microsoft.com/en-us/sql-server/sql-server-downloads - if not RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQLServer\CurrentVersion', 'CurrentVersion', Version) or not StrToVersion(Version, PackedVersion) or (ComparePackedVersion(PackedVersion, PackVersionComponents(17, 0, 1000, 7)) < 0) then begin - Dependency_Add('sql2025express' + Dependency_ArchSuffix + '.exe', - Dependency_PassiveOrQuiet('/QS', '/Q') + ' /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER', - 'SQL Server 2025 Express', - 'https://download.microsoft.com/download/7ab8f535-7eb8-4b16-82eb-eca0fa2d38f3/SQL2025-SSEI-Expr.exe', - '', False, False); - end; -end; - -procedure Dependency_AddSqlOleDb19; -begin - // https://learn.microsoft.com/en-us/sql/connect/oledb/download-oledb-driver-for-sql-server - if not RegValueExists(HKLM, 'SOFTWARE\Microsoft\MSOLEDBSQL19', 'InstalledVersion') then begin - Dependency_Add('msoledbsql' + Dependency_ArchSuffix + '.msi', - '/qn /norestart IACCEPTMSOLEDBSQLLICENSETERMS=YES', - 'Microsoft OLE DB Driver 19 for SQL Server' + Dependency_ArchTitle, - Dependency_String('https://go.microsoft.com/fwlink/?linkid=2364026', 'https://go.microsoft.com/fwlink/?linkid=2364027', 'https://go.microsoft.com/fwlink/?linkid=2364027'), - '', False, False); - end; -end; - -procedure Dependency_AddSqlOdbc18; -begin - // https://learn.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server - if not RegKeyExists(HKLM, 'SOFTWARE\ODBC\ODBCINST.INI\ODBC Driver 18 for SQL Server') then begin - Dependency_Add('msodbcsql' + Dependency_ArchSuffix + '.msi', - '/qn /norestart IACCEPTMSODBCSQLLICENSETERMS=YES', - 'Microsoft ODBC Driver 18 for SQL Server' + Dependency_ArchTitle, - Dependency_String('https://go.microsoft.com/fwlink/?linkid=2358335', 'https://go.microsoft.com/fwlink/?linkid=2358430', 'https://go.microsoft.com/fwlink/?linkid=2358431'), - '', False, False); - end; -end; - -procedure Dependency_AddWebView2; -begin - // https://developer.microsoft.com/en-us/microsoft-edge/webview2 - if not (RegValueExists(HKLM, Dependency_String('SOFTWARE', 'SOFTWARE\WOW6432Node', 'SOFTWARE\WOW6432Node') + '\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}', 'pv') - or RegValueExists(HKCU, 'SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}', 'pv')) then begin - Dependency_Add('MicrosoftEdgeWebview2Setup.exe', - '/silent /install', - 'WebView2 Runtime', - 'https://go.microsoft.com/fwlink/p/?LinkId=2124703', - '', False, False); - end; -end; - -procedure Dependency_AddAccessDatabaseEngine2016; -begin - // https://www.microsoft.com/en-us/download/details.aspx?id=54920 - if not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Office\16.0\Access Connectivity Engine\Engines\ACE') then begin - Dependency_Add('AccessDatabaseEngine2016' + Dependency_ArchSuffix + '.exe', - '/quiet', - 'Microsoft Access Database Engine 2016' + Dependency_ArchTitle, - Dependency_String('https://download.microsoft.com/download/3/5/C/35C84C36-661A-44E6-9324-8786B8DBE231/accessdatabaseengine.exe', 'https://download.microsoft.com/download/3/5/C/35C84C36-661A-44E6-9324-8786B8DBE231/accessdatabaseengine_X64.exe', 'https://download.microsoft.com/download/3/5/C/35C84C36-661A-44E6-9324-8786B8DBE231/accessdatabaseengine_X64.exe'), - '', False, False); - end; -end; - -procedure Dependency_AddVSTORuntime; -begin - // https://learn.microsoft.com/en-us/visualstudio/vsto/how-to-install-the-visual-studio-tools-for-office-runtime-redistributable - if not RegKeyExists(HKLM, Dependency_String('SOFTWARE', 'SOFTWARE\WOW6432Node', 'SOFTWARE\WOW6432Node') + '\Microsoft\VSTO Runtime Setup\v4R') then begin - Dependency_Add('vstor_redist.exe', - '/q /norestart', - 'Visual Studio 2010 Tools for Office Runtime', - 'https://download.microsoft.com/download/5/d/2/5d24f8f8-efbb-4b63-aa33-3785e3104713/vstor_redist.exe', - '', False, False); - end; -end; - -var - Dependency_WinAppRuntimePackages: TArrayOfString; - Dependency_WinAppRuntimePackagesListed: Boolean; - -// the Windows App Runtime ships per channel side-by-side; apps need the channel they were built against -function Dependency_IsWinAppRuntimeInstalled(const Channel: String): Boolean; -var - ResultCode, LineIndex: Integer; - Output: TExecOutput; -begin - if not Dependency_WinAppRuntimePackagesListed then begin - Dependency_WinAppRuntimePackagesListed := True; - if ExecAndCaptureOutput('powershell.exe', '-NoProfile -ExecutionPolicy Bypass -Command "(Get-AppxPackage -AllUsers Microsoft.WindowsAppRuntime.*).Name"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode, Output) and (ResultCode = 0) then begin - Dependency_WinAppRuntimePackages := Output.StdOut; - end; - end; - - for LineIndex := 0 to Length(Dependency_WinAppRuntimePackages) - 1 do begin - if Trim(Dependency_WinAppRuntimePackages[LineIndex]) = 'Microsoft.WindowsAppRuntime.' + Channel then begin - Result := True; - exit; - end; - end; - Result := False; -end; - -procedure Dependency_AddWinAppRuntime(const Channel, URL: String); -begin - // https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads - if not Dependency_IsWinAppRuntimeInstalled(Channel) then begin - Dependency_Add('windowsappruntime' + Channel + Dependency_ArchSuffix + '.exe', - '--quiet', - 'Windows App Runtime ' + Channel + Dependency_ArchTitle, - URL, - '', False, False); - end; -end; - -procedure Dependency_AddWinAppRuntime20; begin Dependency_AddWinAppRuntime('2.0', Dependency_String('https://aka.ms/windowsappsdk/2.0/2.0.1/windowsappruntimeinstall-x86.exe', 'https://aka.ms/windowsappsdk/2.0/2.0.1/windowsappruntimeinstall-x64.exe', 'https://aka.ms/windowsappsdk/2.0/2.0.1/windowsappruntimeinstall-arm64.exe')); end; -procedure Dependency_AddWinAppRuntime21; begin Dependency_AddWinAppRuntime('2.1', Dependency_String('https://aka.ms/windowsappsdk/2.1/2.1.3/windowsappruntimeinstall-x86.exe', 'https://aka.ms/windowsappsdk/2.1/2.1.3/windowsappruntimeinstall-x64.exe', 'https://aka.ms/windowsappsdk/2.1/2.1.3/windowsappruntimeinstall-arm64.exe')); end; - -var - Dependency_JavaMajor: Integer; - Dependency_JavaMajorDetected: Boolean; - -function Dependency_GetJavaMajor: Integer; -var - JavaExe, Line: String; - ResultCode, LineIndex, QuotePos: Integer; - Output: TExecOutput; - Parts: TArrayOfString; -begin - if not Dependency_JavaMajorDetected then begin - Dependency_JavaMajorDetected := True; - Dependency_JavaMajor := 0; - - // detect whichever java.exe an app would actually use: JAVA_HOME, else PATH - JavaExe := GetEnv('JAVA_HOME'); - if (JavaExe <> '') and FileExists(JavaExe + '\bin\java.exe') then begin - JavaExe := JavaExe + '\bin\java.exe'; - end else begin - JavaExe := 'java.exe'; - end; - - // `java -version` prints to stderr - if ExecAndCaptureOutput(JavaExe, '-version', '', SW_HIDE, ewWaitUntilTerminated, ResultCode, Output) and (ResultCode = 0) then begin - for LineIndex := 0 to Length(Output.StdErr) - 1 do begin - Line := Output.StdErr[LineIndex]; - QuotePos := Pos('version "', Line); - if QuotePos > 0 then begin - Parts := StringSplit(Copy(Line, QuotePos + 9, Length(Line)), ['.'], stExcludeEmpty); - if Length(Parts) > 0 then begin - Dependency_JavaMajor := StrToIntDef(Parts[0], 0); - if (Dependency_JavaMajor = 1) and (Length(Parts) > 1) then begin - Dependency_JavaMajor := StrToIntDef(Parts[1], 0); // legacy "1.8.0_x" -> 8 - end; - end; - break; - end; - end; - end; - end; - - Result := Dependency_JavaMajor; -end; - -procedure Dependency_AddJava(const Major: Integer; const URL: String); -begin - // https://learn.microsoft.com/en-us/java/openjdk/download - if (URL <> '') and (Dependency_GetJavaMajor < Major) then begin - Dependency_Add('openjdk-' + IntToStr(Major) + Dependency_ArchSuffix + '.msi', - '/quiet /norestart ADDLOCAL=FeatureMain,FeatureEnvironment,FeatureJavaHome', - 'OpenJDK ' + IntToStr(Major) + Dependency_ArchTitle, - URL, - '', False, False); - end; -end; - -// Java 8 has no Microsoft build (and is still shipped 32-bit), so it comes from Eclipse Temurin -procedure Dependency_AddJava8; begin Dependency_AddJava(8, Dependency_String('https://api.adoptium.net/v3/installer/latest/8/ga/windows/x86/jdk/hotspot/normal/eclipse', 'https://api.adoptium.net/v3/installer/latest/8/ga/windows/x64/jdk/hotspot/normal/eclipse', 'https://api.adoptium.net/v3/installer/latest/8/ga/windows/x64/jdk/hotspot/normal/eclipse')); end; -procedure Dependency_AddJava11; begin Dependency_AddJava(11, Dependency_String('', 'https://aka.ms/download-jdk/microsoft-jdk-11-windows-x64.msi', 'https://aka.ms/download-jdk/microsoft-jdk-11-windows-aarch64.msi')); end; -procedure Dependency_AddJava17; begin Dependency_AddJava(17, Dependency_String('', 'https://aka.ms/download-jdk/microsoft-jdk-17-windows-x64.msi', 'https://aka.ms/download-jdk/microsoft-jdk-17-windows-aarch64.msi')); end; -procedure Dependency_AddJava21; begin Dependency_AddJava(21, Dependency_String('', 'https://aka.ms/download-jdk/microsoft-jdk-21-windows-x64.msi', 'https://aka.ms/download-jdk/microsoft-jdk-21-windows-aarch64.msi')); end; -procedure Dependency_AddJava25; begin Dependency_AddJava(25, Dependency_String('', 'https://aka.ms/download-jdk/microsoft-jdk-25-windows-x64.msi', 'https://aka.ms/download-jdk/microsoft-jdk-25-windows-aarch64.msi')); end; - -function Dependency_IsPythonInstalled(const Tag: String): Boolean; -begin - Result := RegKeyExists(HKLM, 'Software\Python\PythonCore\' + Tag + '\InstallPath') - or RegKeyExists(HKLM, 'Software\Wow6432Node\Python\PythonCore\' + Tag + '\InstallPath') - or RegKeyExists(HKCU, 'Software\Python\PythonCore\' + Tag + '\InstallPath'); -end; - -procedure Dependency_AddPython(const Minor, URL: String); -begin - // https://www.python.org/downloads/windows/ - if not Dependency_IsPythonInstalled(Minor + Dependency_String('-32', '', '-arm64')) then begin - Dependency_Add('python' + Minor + Dependency_ArchSuffix + '.exe', - Dependency_PassiveOrQuiet('/passive', '/quiet') + ' InstallAllUsers=1 PrependPath=1', - 'Python ' + Minor + Dependency_ArchTitle, - URL, - '', False, False); - end; -end; - -procedure Dependency_AddPython313; begin Dependency_AddPython('3.13', Dependency_String('https://www.python.org/ftp/python/3.13.13/python-3.13.13.exe', 'https://www.python.org/ftp/python/3.13.13/python-3.13.13-amd64.exe', 'https://www.python.org/ftp/python/3.13.13/python-3.13.13-arm64.exe')); end; - -procedure Dependency_AddPowerShell7; -begin - // https://github.com/PowerShell/PowerShell/releases - if not FileExists(ExpandConstant(Dependency_String('{commonpf32}', '{commonpf64}', '{commonpf64}')) + '\PowerShell\7\pwsh.exe') then begin - Dependency_Add('powershell7' + Dependency_ArchSuffix + '.msi', - Dependency_PassiveOrQuiet('/passive', '/quiet') + ' /norestart', - 'PowerShell 7.6.2' + Dependency_ArchTitle, - Dependency_String('https://github.com/PowerShell/PowerShell/releases/download/v7.6.2/PowerShell-7.6.2-win-x86.msi', 'https://github.com/PowerShell/PowerShell/releases/download/v7.6.2/PowerShell-7.6.2-win-x64.msi', 'https://github.com/PowerShell/PowerShell/releases/download/v7.6.2/PowerShell-7.6.2-win-arm64.msi'), - '', False, False); - end; -end; diff --git a/winget/LogExperts.LogExpert.installer.yaml b/winget/LogExperts.LogExpert.installer.yaml index 9a310ee1..a8fc64ea 100644 --- a/winget/LogExperts.LogExpert.installer.yaml +++ b/winget/LogExperts.LogExpert.installer.yaml @@ -2,15 +2,15 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.10.0.schema.json PackageIdentifier: LogExperts.LogExpert -PackageVersion: 1.40.1 +PackageVersion: 1.40.3 InstallerType: inno Dependencies: PackageDependencies: - PackageIdentifier: Microsoft.DotNet.DesktopRuntime.10 Installers: - Architecture: x64 - InstallerUrl: https://github.com/LogExperts/LogExpert/releases/download/v1.40.1/LogExpert-Setup-1.40.1.exe - InstallerSha256: 685b41cf9eb2286978e6ced7797b10bd8737cd452c0050a97a056a1c75e4439b + InstallerUrl: https://github.com/LogExperts/LogExpert/releases/download/v1.40.3/LogExpert-Setup-1.40.3.exe + InstallerSha256: f32bde3703da1db0c1a963d37ee0eeab029bb18cbe3b8730ea12eda0eaafe2fa ManifestType: installer ManifestVersion: 1.10.0 ReleaseDate: 2026-06-12 \ No newline at end of file diff --git a/winget/LogExperts.LogExpert.locale.en-US.yaml b/winget/LogExperts.LogExpert.locale.en-US.yaml index c7673afd..f3dc3931 100644 --- a/winget/LogExperts.LogExpert.locale.en-US.yaml +++ b/winget/LogExperts.LogExpert.locale.en-US.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.10.0.schema.json PackageIdentifier: LogExperts.LogExpert -PackageVersion: 1.40.1 +PackageVersion: 1.40.3 PackageLocale: en-US Publisher: LogExperts PublisherUrl: https://github.com/LogExperts @@ -17,7 +17,7 @@ Tags: - logger-interface - logging - winforms -ReleaseNotesUrl: https://github.com/LogExperts/LogExpert/releases/tag/v1.40.1 +ReleaseNotesUrl: https://github.com/LogExperts/LogExpert/releases/tag/v1.40.3 Documentations: - DocumentLabel: Wiki DocumentUrl: https://github.com/LogExperts/LogExpert/wiki diff --git a/winget/LogExperts.LogExpert.yaml b/winget/LogExperts.LogExpert.yaml index 22b3fd17..17502464 100644 --- a/winget/LogExperts.LogExpert.yaml +++ b/winget/LogExperts.LogExpert.yaml @@ -2,7 +2,7 @@ # yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.10.0.schema.json PackageIdentifier: LogExperts.LogExpert -PackageVersion: 1.40.1 +PackageVersion: 1.40.3 DefaultLocale: en-US ManifestType: version ManifestVersion: 1.10.0 \ No newline at end of file From fcc059c3ac9ed76c514bf585f85f63ce3995b2c0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 17 Jun 2026 14:54:13 +0000 Subject: [PATCH 2/2] chore: update plugin hashes [skip ci] --- .../PluginHashGenerator.Generated.cs | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/PluginRegistry/PluginHashGenerator.Generated.cs b/src/PluginRegistry/PluginHashGenerator.Generated.cs index 15809db5..0e2fe5ce 100644 --- a/src/PluginRegistry/PluginHashGenerator.Generated.cs +++ b/src/PluginRegistry/PluginHashGenerator.Generated.cs @@ -10,7 +10,7 @@ public static partial class PluginValidator { /// /// Gets pre-calculated SHA256 hashes for built-in plugins. - /// Generated: 2026-06-17 13:20:19 UTC + /// Generated: 2026-06-17 14:54:11 UTC /// Configuration: Release /// Plugin count: 21 /// @@ -18,27 +18,27 @@ public static Dictionary GetBuiltInPluginHashes() { return new Dictionary(StringComparer.OrdinalIgnoreCase) { - ["AutoColumnizer.dll"] = "61E445A9F8960311A1EF0A21001B121DCAFFFDD2243ACE04BCF840560B372EA5", + ["AutoColumnizer.dll"] = "6E573CD37B523BF4943DF3277E710357D6AF66E4AD1767B8A12AE0034BA96908", ["BouncyCastle.Cryptography.dll"] = "E5EEAF6D263C493619982FD3638E6135077311D08C961E1FE128F9107D29EBC6", ["BouncyCastle.Cryptography.dll (x86)"] = "E5EEAF6D263C493619982FD3638E6135077311D08C961E1FE128F9107D29EBC6", - ["CsvColumnizer.dll"] = "9DE6D6CA21188746BAE404F5EB5D4B3B0897A50ACD596994FE730033DE18DEBA", - ["CsvColumnizer.dll (x86)"] = "9DE6D6CA21188746BAE404F5EB5D4B3B0897A50ACD596994FE730033DE18DEBA", - ["DefaultPlugins.dll"] = "24DFE5E3B38360ADE7EB0C23DEB15AC98F2649CDC517C1E5A8E3D5666DDC1AB1", - ["FlashIconHighlighter.dll"] = "2F196A6B52D1ED5FAC921BC487E27A1DBA444667A76E55C912C145D49CA9CE85", - ["GlassfishColumnizer.dll"] = "EFAE70B8767B0C23F0EB72495968F4BEC6E0C1CE0E55484C15DA9DAFE97A0B74", - ["JsonColumnizer.dll"] = "5C5D99331694A0543750FD78B35CA3FF082949A45AC731FB06DE8B505F6CA2F5", - ["JsonCompactColumnizer.dll"] = "05386F718D6ECBAD1C788B55E70DC8888B8F8C7069702841B081B6CA9D7A54AC", - ["Log4jXmlColumnizer.dll"] = "24D85F8884DED3345E25A6592B4808771A6A77B005EF2EAAA05FB76756C36D8B", - ["LogExpert.Resources.dll"] = "F94CC3F814A338588EE3E92E4B4D559EDF7E2CF7554A6CDD95C1E0BA6FBCA613", + ["CsvColumnizer.dll"] = "7A0A03CD78B58C29B7223640E9DA047234906114654C269030C56DD7CD7D2F1B", + ["CsvColumnizer.dll (x86)"] = "7A0A03CD78B58C29B7223640E9DA047234906114654C269030C56DD7CD7D2F1B", + ["DefaultPlugins.dll"] = "9F9B3FB77E73D19B69344347A38C3C24305CD4EB964336A45C5EFEB38C293016", + ["FlashIconHighlighter.dll"] = "D71E786D67FBC6F2DA1ECC71B7457E6930D108AAC7EEB3D320766BF9BB2F5697", + ["GlassfishColumnizer.dll"] = "5DEAEDD62DECA525C315762DBD6A1BD989F9E6A21C2330CC59773FA0CC6C2119", + ["JsonColumnizer.dll"] = "CBFF4F8B9A9BF683504366B82A14FECD1987285A41B371A7F30306FF151F4F7B", + ["JsonCompactColumnizer.dll"] = "668CA94D93A1DFC0E73DBC899DAA00EC06CB000EE674E5C768A6131F76C1D08A", + ["Log4jXmlColumnizer.dll"] = "D49339371569A087824F8197FBC0171DFB5ED67DDE446F02CC68212438C3AC16", + ["LogExpert.Resources.dll"] = "BF473D6E8FDD030A1579F328D8D187AD2D5B886E61DD450CB4AFA8FDF7252A58", ["Microsoft.Extensions.DependencyInjection.Abstractions.dll"] = "67FA4325000DB017DC0C35829B416F024F042D24EFB868BCF17A895EE6500A93", ["Microsoft.Extensions.DependencyInjection.Abstractions.dll (x86)"] = "67FA4325000DB017DC0C35829B416F024F042D24EFB868BCF17A895EE6500A93", ["Microsoft.Extensions.Logging.Abstractions.dll"] = "BB853130F5AFAF335BE7858D661F8212EC653835100F5A4E3AA2C66A4D4F685D", ["Microsoft.Extensions.Logging.Abstractions.dll (x86)"] = "BB853130F5AFAF335BE7858D661F8212EC653835100F5A4E3AA2C66A4D4F685D", - ["RegexColumnizer.dll"] = "1FD933319BA6978B1E78444472BE7540EC76576327BB09C7900BE66320CAC2EF", - ["SftpFileSystem.dll"] = "49D9DB34840774486F3944B49B165279E68A8F8A43C0E93E5DE6D41F9317C1D2", - ["SftpFileSystem.dll (x86)"] = "EEAA1B42AE124ECDF0FF63A80C00455FB63778588B656822D366B4D4F5180CC7", - ["SftpFileSystem.Resources.dll"] = "6FFC5A1EECA8363E97F7235DD70EE2E9F91870C0BD45E9A3A17669D7BD38423D", - ["SftpFileSystem.Resources.dll (x86)"] = "6FFC5A1EECA8363E97F7235DD70EE2E9F91870C0BD45E9A3A17669D7BD38423D", + ["RegexColumnizer.dll"] = "47E64BC2B9EDF0A207ED6FD6602A96595C34F0FAA0FCBF7880B2D8280EBC6318", + ["SftpFileSystem.dll"] = "6308689E1FC90D4BB7A2AAEE52697BC1ED18CDE5DF2031A7AF3EFC974B2DD5AB", + ["SftpFileSystem.dll (x86)"] = "3F05111EA46037BD815FBFDF9724369D6A5B4FF223158DE5E9FE5DFEE36F93D0", + ["SftpFileSystem.Resources.dll"] = "B092D10233C84708C65D03B96ED993FDA4E4DEF944FA1D2C9999774C6D606F24", + ["SftpFileSystem.Resources.dll (x86)"] = "B092D10233C84708C65D03B96ED993FDA4E4DEF944FA1D2C9999774C6D606F24", }; }