diff --git a/Installer/CodeDependencies.iss b/Installer/CodeDependencies.iss index 43d51e5..d67a580 100644 --- a/Installer/CodeDependencies.iss +++ b/Installer/CodeDependencies.iss @@ -1,14 +1,6 @@ -; -- CodeDependencies.iss -- -; -; This script shows how to download and install any dependency such as .NET, -; Visual C++ or SQL Server during your application's installation process. -; -; contribute: https://github.com/DomGries/InnoDependencyInstaller +; https://github.com/DomGries/InnoDependencyInstaller -; ----------- -; SHARED CODE -; ----------- [Code] // types and variables type @@ -225,7 +217,7 @@ function Dependency_IsNetCoreInstalled(const Version: String): Boolean; var ResultCode: Integer; begin - // source code: https://github.com/dotnet/deployment-tools/tree/master/src/clickonce/native/projects/NetCoreCheck + // source code: https://github.com/dotnet/deployment-tools/tree/main/src/clickonce/native/projects/NetCoreCheck if not FileExists(ExpandConstant('{tmp}{\}') + 'netcorecheck' + Dependency_ArchSuffix + '.exe') then begin ExtractTemporaryFile('netcorecheck' + Dependency_ArchSuffix + '.exe'); end; @@ -293,13 +285,15 @@ begin end; procedure Dependency_AddDotNet48; +var + Version: Cardinal; begin - // https://dotnet.microsoft.com/download/dotnet-framework/net48 - if not IsDotNetInstalled(net48, 0) then begin + // https://dotnet.microsoft.com/download/dotnet-framework/net481 + if not RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full', 'Release', Version) or (Version < 533320) then begin Dependency_Add('dotnetfx48.exe', '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart', - '.NET Framework 4.8', - 'https://go.microsoft.com/fwlink/?LinkId=2085155', + '.NET Framework 4.8.1', + 'https://go.microsoft.com/fwlink/?LinkId=2203304', '', False, False); end; end; @@ -307,11 +301,11 @@ end; procedure Dependency_AddNetCore31; begin // https://dotnet.microsoft.com/download/dotnet-core/3.1 - if not Dependency_IsNetCoreInstalled('Microsoft.NETCore.App 3.1.22') then begin + if not Dependency_IsNetCoreInstalled('-n Microsoft.NETCore.App -v 3.1.32') then begin Dependency_Add('netcore31' + Dependency_ArchSuffix + '.exe', '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart', - '.NET Core Runtime 3.1.22' + Dependency_ArchTitle, - Dependency_String('https://download.visualstudio.microsoft.com/download/pr/c2437aed-8cc4-41d0-a239-d6c7cf7bddae/062c37e8b06df740301c0bca1b0b7b9a/dotnet-runtime-3.1.22-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/4e95705e-1bb6-4764-b899-1b97eb70ea1d/dd311e073bd3e25b2efe2dcf02727e81/dotnet-runtime-3.1.22-win-x64.exe'), + '.NET Core Runtime 3.1.32' + Dependency_ArchTitle, + 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'), '', False, False); end; end; @@ -319,11 +313,11 @@ end; procedure Dependency_AddNetCore31Asp; begin // https://dotnet.microsoft.com/download/dotnet-core/3.1 - if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App 3.1.22') then begin + if not Dependency_IsNetCoreInstalled('-n Microsoft.AspNetCore.App -v 3.1.32') then begin Dependency_Add('netcore31asp' + Dependency_ArchSuffix + '.exe', '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart', - 'ASP.NET Core Runtime 3.1.22' + Dependency_ArchTitle, - Dependency_String('https://download.visualstudio.microsoft.com/download/pr/0a1a2ee5-b8ed-4f0d-a4af-a7bce9a9ac2b/d452039b49d79e8897f272c3ab34b875/aspnetcore-runtime-3.1.22-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/80e52143-31e8-450e-aa94-b3f8484aaba9/4b69e5c77d50e7b367960a0079c90a99/aspnetcore-runtime-3.1.22-win-x64.exe'), + 'ASP.NET Core Runtime 3.1.32' + Dependency_ArchTitle, + 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'), '', False, False); end; end; @@ -331,11 +325,11 @@ end; procedure Dependency_AddNetCore31Desktop; begin // https://dotnet.microsoft.com/download/dotnet-core/3.1 - if not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App 3.1.22') then begin + if not Dependency_IsNetCoreInstalled('-n Microsoft.WindowsDesktop.App -v 3.1.32') then begin Dependency_Add('netcore31desktop' + Dependency_ArchSuffix + '.exe', '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart', - '.NET Desktop Runtime 3.1.22' + Dependency_ArchTitle, - Dependency_String('https://download.visualstudio.microsoft.com/download/pr/e4fcd574-4487-4b4b-8ca8-c23177c6f59f/c6d67a04956169dc21895cdcb42bf344/windowsdesktop-runtime-3.1.22-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/1c14e24b-7f31-42dc-ba3c-83295a2d6f7e/41b93591162dfe556cc160ae44fbe75e/windowsdesktop-runtime-3.1.22-win-x64.exe'), + '.NET Desktop Runtime 3.1.32' + Dependency_ArchTitle, + 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'), '', False, False); end; end; @@ -343,11 +337,11 @@ end; procedure Dependency_AddDotNet50; begin // https://dotnet.microsoft.com/download/dotnet/5.0 - if not Dependency_IsNetCoreInstalled('Microsoft.NETCore.App 5.0.13') then begin + if not Dependency_IsNetCoreInstalled('-n Microsoft.NETCore.App -v 5.0.17') then begin Dependency_Add('dotnet50' + Dependency_ArchSuffix + '.exe', '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart', - '.NET Runtime 5.0.13' + Dependency_ArchTitle, - Dependency_String('https://download.visualstudio.microsoft.com/download/pr/4a79fcd5-d61b-4606-8496-68071c8099c6/2bf770ca40521e8c4563072592eadd06/dotnet-runtime-5.0.13-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/fccf43d2-3e62-4ede-b5a5-592a7ccded7b/6339f1fdfe3317df5b09adf65f0261ab/dotnet-runtime-5.0.13-win-x64.exe'), + '.NET Runtime 5.0.17' + Dependency_ArchTitle, + Dependency_String('https://download.visualstudio.microsoft.com/download/pr/54683c13-6b04-4d7d-b4d4-1f055b50ea43/e99048e2840d57040e8312058853a5b9/dotnet-runtime-5.0.17-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/a0832b5a-6900-442b-af79-6ffddddd6ba4/e2df0b25dd851ee0b38a86947dd0e42e/dotnet-runtime-5.0.17-win-x64.exe'), '', False, False); end; end; @@ -355,11 +349,11 @@ end; procedure Dependency_AddDotNet50Asp; begin // https://dotnet.microsoft.com/download/dotnet/5.0 - if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App 5.0.13') then begin + if not Dependency_IsNetCoreInstalled('-n Microsoft.AspNetCore.App -v 5.0.17') then begin Dependency_Add('dotnet50asp' + Dependency_ArchSuffix + '.exe', '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart', - 'ASP.NET Core Runtime 5.0.13' + Dependency_ArchTitle, - Dependency_String('https://download.visualstudio.microsoft.com/download/pr/340f9482-fc43-4ef7-b434-e2ed57f55cb3/c641b805cef3823769409a6dbac5746b/aspnetcore-runtime-5.0.13-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/aac560f3-eac8-437e-aebd-9830119deb10/6a3880161cf527e4ec71f67efe4d91ad/aspnetcore-runtime-5.0.13-win-x64.exe'), + 'ASP.NET Core Runtime 5.0.17' + Dependency_ArchTitle, + Dependency_String('https://download.visualstudio.microsoft.com/download/pr/4bfa247d-321d-4b29-a34b-62320849059b/8df7a17d9aad4044efe9b5b1c423e82c/aspnetcore-runtime-5.0.17-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/3789ec90-2717-424f-8b9c-3adbbcea6c16/2085cc5ff077b8789ff938015392e406/aspnetcore-runtime-5.0.17-win-x64.exe'), '', False, False); end; end; @@ -367,11 +361,11 @@ end; procedure Dependency_AddDotNet50Desktop; begin // https://dotnet.microsoft.com/download/dotnet/5.0 - if not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App 5.0.13') then begin + if not Dependency_IsNetCoreInstalled('-n Microsoft.WindowsDesktop.App -v 5.0.17') then begin Dependency_Add('dotnet50desktop' + Dependency_ArchSuffix + '.exe', '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart', - '.NET Desktop Runtime 5.0.13' + Dependency_ArchTitle, - Dependency_String('https://download.visualstudio.microsoft.com/download/pr/c8125c6b-d399-4be3-b201-8f1394fc3b25/724758f754fc7b67daba74db8d6d91d9/windowsdesktop-runtime-5.0.13-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/2bfb80f2-b8f2-44b0-90c1-d3c8c1c8eac8/409dd3d3367feeeda048f4ff34b32e82/windowsdesktop-runtime-5.0.13-win-x64.exe'), + '.NET Desktop Runtime 5.0.17' + Dependency_ArchTitle, + Dependency_String('https://download.visualstudio.microsoft.com/download/pr/b6fe5f2a-95f4-46f1-9824-f5994f10bc69/db5ec9b47ec877b5276f83a185fdb6a0/windowsdesktop-runtime-5.0.17-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/3aa4e942-42cd-4bf5-afe7-fc23bd9c69c5/64da54c8864e473c19a7d3de15790418/windowsdesktop-runtime-5.0.17-win-x64.exe'), '', False, False); end; end; @@ -379,11 +373,11 @@ end; procedure Dependency_AddDotNet60; begin // https://dotnet.microsoft.com/download/dotnet/6.0 - if not Dependency_IsNetCoreInstalled('Microsoft.NETCore.App 6.0.14') then begin + if not Dependency_IsNetCoreInstalled('-n Microsoft.NETCore.App -v 6.0.20') then begin Dependency_Add('dotnet60' + Dependency_ArchSuffix + '.exe', '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart', - '.NET Runtime 6.0.14' + Dependency_ArchTitle, - Dependency_String('https://download.visualstudio.microsoft.com/download/pr/36ba8cdf-e5c2-4ab8-96e7-e7133f0517dd/e63c28b38f8896298544263469e9f285/dotnet-runtime-6.0.14-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/cdd7a605-be77-47fe-a8ac-d982c8e5d692/c8abed93d34b110b4f3d3254e56de254/dotnet-runtime-6.0.14-win-x64.exe'), + '.NET Runtime 6.0.20' + Dependency_ArchTitle, + Dependency_String('https://download.visualstudio.microsoft.com/download/pr/3be5ee3a-c171-4cd2-ab98-00ca5c11eb8c/6fd31294b0c6c670ab5c060592935203/dotnet-runtime-6.0.20-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/3cfb6d2a-afbe-4ae7-8e5b-776f350654cc/6e8d858a60fe15381f3c84d8ca66c4a7/dotnet-runtime-6.0.20-win-x64.exe'), '', False, False); end; end; @@ -391,11 +385,11 @@ end; procedure Dependency_AddDotNet60Asp; begin // https://dotnet.microsoft.com/download/dotnet/6.0 - if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App 6.0.14') then begin + if not Dependency_IsNetCoreInstalled('-n Microsoft.AspNetCore.App -v 6.0.20') then begin Dependency_Add('dotnet60asp' + Dependency_ArchSuffix + '.exe', '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart', - 'ASP.NET Core Runtime 6.0.14' + Dependency_ArchTitle, - Dependency_String('https://download.visualstudio.microsoft.com/download/pr/f7e263ac-64e0-41a6-b6b3-eca6a8ff193b/e8ca4e4568fccaf82d8081ddb9a3e18f/aspnetcore-runtime-6.0.14-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/95355fd2-12e2-4a03-b7ef-deff884e040b/a1070d778070557ef3a49eeaac524670/aspnetcore-runtime-6.0.14-win-x64.exe'), + 'ASP.NET Core Runtime 6.0.20' + Dependency_ArchTitle, + Dependency_String('https://download.visualstudio.microsoft.com/download/pr/0e37c76c-53b4-4eea-8f5c-6ad2f8d5fe3c/88a8620329ced1aee271992a5b56d236/aspnetcore-runtime-6.0.20-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/be9f67fd-60af-45b1-9bca-a7bcc0e86e7e/6a750f7d7432937b3999bb4c5325062a/aspnetcore-runtime-6.0.20-win-x64.exe'), '', False, False); end; end; @@ -403,11 +397,11 @@ end; procedure Dependency_AddDotNet60Desktop; begin // https://dotnet.microsoft.com/download/dotnet/6.0 - if not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App 6.0.14') then begin + if not Dependency_IsNetCoreInstalled('-n Microsoft.WindowsDesktop.App -v 6.0.20') then begin Dependency_Add('dotnet60desktop' + Dependency_ArchSuffix + '.exe', '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart', - '.NET Desktop Runtime 6.0.14' + Dependency_ArchTitle, - Dependency_String('https://download.visualstudio.microsoft.com/download/pr/e66c97f8-3ca5-4cbc-aaf8-77079b21f41f/3ce8574df28f49d85091b1af758eccb7/windowsdesktop-runtime-6.0.14-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/035efed3-6386-4e1d-bcbc-384a20ebf47e/abfbea2303e0ce9cb15d430314e5858f/windowsdesktop-runtime-6.0.14-win-x64.exe'), + '.NET Desktop Runtime 6.0.20' + Dependency_ArchTitle, + Dependency_String('https://download.visualstudio.microsoft.com/download/pr/0413b619-3eb2-4178-a78e-8d1aafab1a01/5247f08ea3c13849b68074a2142fbf31/windowsdesktop-runtime-6.0.20-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/1146f414-17c7-4184-8b10-1addfa5315e4/39db5573efb029130add485566320d74/windowsdesktop-runtime-6.0.20-win-x64.exe'), '', False, False); end; end; @@ -415,11 +409,11 @@ end; procedure Dependency_AddDotNet70; begin // https://dotnet.microsoft.com/download/dotnet/7.0 - if not Dependency_IsNetCoreInstalled('Microsoft.NETCore.App 7.0.5') then begin + if not Dependency_IsNetCoreInstalled('-n Microsoft.NETCore.App -v 7.0.9') then begin Dependency_Add('dotnet70' + Dependency_ArchSuffix + '.exe', '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart', - '.NET Runtime 7.0.5' + Dependency_ArchTitle, - Dependency_String('https://download.visualstudio.microsoft.com/download/pr/9dd2da29-ca47-40fb-81a0-96fe26ea8ea2/e8f7e09a6d4848b8c4a13282d964b9e1/dotnet-runtime-7.0.3-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/c69813b7-2ece-4c2e-8c45-e33006985e18/61cc8fe4693a662b2da55ad932a46446/dotnet-runtime-7.0.3-win-x64.exe'), + '.NET Runtime 7.0.9' + Dependency_ArchTitle, + Dependency_String('https://download.visualstudio.microsoft.com/download/pr/305a85f5-2b0d-459b-b2ea-caf71b98d25d/805edc610efa49432e5e268bbba4eacb/dotnet-runtime-7.0.9-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/73058888-02a4-4f6d-b3cd-845531c2d7d0/a785e54b7f12046c00714b2ba759e173/dotnet-runtime-7.0.9-win-x64.exe'), '', False, False); end; end; @@ -427,11 +421,11 @@ end; procedure Dependency_AddDotNet70Asp; begin // https://dotnet.microsoft.com/download/dotnet/7.0 - if not Dependency_IsNetCoreInstalled('Microsoft.AspNetCore.App 7.0.3') then begin + if not Dependency_IsNetCoreInstalled('-n Microsoft.AspNetCore.App -v 7.0.9') then begin Dependency_Add('dotnet70asp' + Dependency_ArchSuffix + '.exe', '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart', - 'ASP.NET Core Runtime 7.0.3' + Dependency_ArchTitle, - Dependency_String('https://download.visualstudio.microsoft.com/download/pr/4bf0f350-f947-408b-9ee4-539313b85634/b17087052d6192b5d59735ae6f208c19/aspnetcore-runtime-7.0.3-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/d37efccc-2ba1-4fc9-a1ef-a8e1e77fb681/b9a20fc29ff05f18d81620ec88ade699/aspnetcore-runtime-7.0.3-win-x64.exe'), + 'ASP.NET Core Runtime 7.0.9' + Dependency_ArchTitle, + Dependency_String('https://download.visualstudio.microsoft.com/download/pr/6ec3b357-31df-4b18-948f-4979a5b4b99f/fdeec71fc7f0f34ecfa0cb8b2b897da0/aspnetcore-runtime-7.0.9-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/edd9c9b1-0c49-4297-9197-9392b2462318/d06fedaefb256d801ce94ade76af3ad9/aspnetcore-runtime-7.0.9-win-x64.exe'), '', False, False); end; end; @@ -439,7 +433,7 @@ end; procedure Dependency_AddDotNet70Desktop; begin // https://dotnet.microsoft.com/download/dotnet/7.0 - if not Dependency_IsNetCoreInstalled('Microsoft.WindowsDesktop.App 7.0.9') then begin + if not Dependency_IsNetCoreInstalled('-n Microsoft.WindowsDesktop.App -v 7.0.9') then begin Dependency_Add('dotnet70desktop' + Dependency_ArchSuffix + '.exe', '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart', '.NET Desktop Runtime 7.0.9' + Dependency_ArchTitle, @@ -448,6 +442,43 @@ begin end; end; + +procedure Dependency_AddDotNet80; +begin + // https://dotnet.microsoft.com/download/dotnet/8.0 + if not Dependency_IsNetCoreInstalled('-n Microsoft.NETCore.App -v 8.0.0') then begin + Dependency_Add('dotnet80' + Dependency_ArchSuffix + '.exe', + '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart', + '.NET Runtime 8.0.0' + Dependency_ArchTitle, + Dependency_String('https://download.visualstudio.microsoft.com/download/pr/593685c9-7e98-455a-8e34-4b8ad1be9489/6ccf85c6fc244428d61f74ca3aee0645/dotnet-runtime-8.0.0-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/7f4d5cbc-4449-4ea5-9578-c467821f251f/b9b19f89d0642bf78f4b612c6a741637/dotnet-runtime-8.0.0-win-x64.exe'), + '', False, False); + end; +end; + +procedure Dependency_AddDotNet80Asp; +begin + // https://dotnet.microsoft.com/download/dotnet/8.0 + if not Dependency_IsNetCoreInstalled('-n Microsoft.AspNetCore.App -v 8.0.0') then begin + Dependency_Add('dotnet80asp' + Dependency_ArchSuffix + '.exe', + '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart', + 'ASP.NET Core Runtime 8.0.0' + Dependency_ArchTitle, + Dependency_String('https://download.visualstudio.microsoft.com/download/pr/66ae7d00-596a-4e36-be73-2ebc0c332329/e2f6e37933e204fef5687e338a95b749/aspnetcore-runtime-8.0.0-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/89d3660b-d344-47c5-a1cd-d8343a3f3779/9f55af82923dab7e3dce912f5c5b9d60/aspnetcore-runtime-8.0.0-win-x64.exe'), + '', False, False); + end; +end; + +procedure Dependency_AddDotNet80Desktop; +begin + // https://dotnet.microsoft.com/download/dotnet/8.0 + if not Dependency_IsNetCoreInstalled('-n Microsoft.WindowsDesktop.App -v 8.0.2') then begin + Dependency_Add('dotnet80desktop' + Dependency_ArchSuffix + '.exe', + '/lcid ' + IntToStr(GetUILanguage) + ' /passive /norestart', + '.NET Desktop Runtime 8.0.2' + Dependency_ArchTitle, + Dependency_String('https://download.visualstudio.microsoft.com/download/pr/9b77b480-7e32-4321-b417-a41e0f8ea952/3922bbf5538277b1d41e9b49ee443673/windowsdesktop-runtime-8.0.2-win-x86.exe', 'https://download.visualstudio.microsoft.com/download/pr/84ba33d4-4407-4572-9bfa-414d26e7c67c/bb81f8c9e6c9ee1ca547396f6e71b65f/windowsdesktop-runtime-8.0.2-win-x64.exe'), + '', False, False); + end; +end; + procedure Dependency_AddVC2005; begin // https://www.microsoft.com/en-us/download/details.aspx?id=26347 @@ -522,6 +553,9 @@ end; procedure Dependency_AddDirectX; begin +#ifdef Dependency_Files_DirectX + ExtractTemporaryFile('dxwebsetup.exe'); +#endif // https://www.microsoft.com/en-us/download/details.aspx?id=35 Dependency_Add('dxwebsetup.exe', '/q', @@ -580,12 +614,12 @@ var Version: String; PackedVersion: Int64; begin - // https://www.microsoft.com/en-us/download/details.aspx?id=56840 - 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, 5026, 0)) < 0) then 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', '/QS /IACCEPTSQLSERVERLICENSETERMS /ACTION=INSTALL /FEATURES=SQL /INSTANCENAME=MSSQLSERVER', - 'SQL Server 2016 Service Pack 2 Express', - 'https://download.microsoft.com/download/3/7/6/3767D272-76A1-4F31-8849-260BD37924E4/SQLServer2016-SSEI-Expr.exe', + '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; @@ -620,8 +654,24 @@ begin 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', + '/QS /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_AddWebView2; begin + // https://developer.microsoft.com/en-us/microsoft-edge/webview2 if not RegValueExists(HKLM, Dependency_String('SOFTWARE', 'SOFTWARE\WOW6432Node') + '\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}', 'pv') then begin Dependency_Add('MicrosoftEdgeWebview2Setup.exe', '/silent /install', @@ -631,225 +681,38 @@ begin end; end; - -[Setup] -; ------------- -; EXAMPLE SETUP -; ------------- -#ifndef Dependency_NoExampleSetup - -; comment out dependency defines to disable installing them -#define UseDotNet35 -#define UseDotNet40 -#define UseDotNet45 -#define UseDotNet46 -#define UseDotNet47 -#define UseDotNet48 - -; requires netcorecheck.exe and netcorecheck_x64.exe (see download link below) -#define UseNetCoreCheck -#ifdef UseNetCoreCheck - #define UseNetCore31 - #define UseNetCore31Asp - #define UseNetCore31Desktop - #define UseDotNet50 - #define UseDotNet50Asp - #define UseDotNet50Desktop - #define UseDotNet60 - #define UseDotNet60Asp - #define UseDotNet60Desktop - #define UseDotNet70 - #define UseDotNet70Asp - #define UseDotNet70Desktop -#endif - -#define UseVC2005 -#define UseVC2008 -#define UseVC2010 -#define UseVC2012 -#define UseVC2013 -#define UseVC2015To2022 - -; requires dxwebsetup.exe (see download link below) -;#define UseDirectX - -#define UseSql2008Express -#define UseSql2012Express -#define UseSql2014Express -#define UseSql2016Express -#define UseSql2017Express -#define UseSql2019Express - -#define UseWebView2 - -#define MyAppSetupName 'MyProgram' -#define MyAppVersion '1.0' -#define MyAppPublisher 'Inno Setup' -#define MyAppCopyright 'Copyright © Inno Setup' -#define MyAppURL 'https://jrsoftware.org/isinfo.php' - -AppName={#MyAppSetupName} -AppVersion={#MyAppVersion} -AppVerName={#MyAppSetupName} {#MyAppVersion} -AppCopyright={#MyAppCopyright} -VersionInfoVersion={#MyAppVersion} -VersionInfoCompany={#MyAppPublisher} -AppPublisher={#MyAppPublisher} -AppPublisherURL={#MyAppURL} -AppSupportURL={#MyAppURL} -AppUpdatesURL={#MyAppURL} -OutputBaseFilename={#MyAppSetupName}-{#MyAppVersion} -DefaultGroupName={#MyAppSetupName} -DefaultDirName={autopf}\{#MyAppSetupName} -UninstallDisplayIcon={app}\MyProgram.exe -SourceDir=src -OutputDir={#SourcePath}\bin -AllowNoIcons=yes -PrivilegesRequired=admin - -; remove next line if you only deploy 32-bit binaries and dependencies -ArchitecturesInstallIn64BitMode=x64 - -[Languages] -Name: en; MessagesFile: "compiler:Default.isl" -Name: nl; MessagesFile: "compiler:Languages\Dutch.isl" -Name: de; MessagesFile: "compiler:Languages\German.isl" - -[Files] -#ifdef UseNetCoreCheck -; download netcorecheck.exe: https://go.microsoft.com/fwlink/?linkid=2135256 -; download netcorecheck_x64.exe: https://go.microsoft.com/fwlink/?linkid=2135504 -Source: "netcorecheck.exe"; Flags: dontcopy noencryption -Source: "netcorecheck_x64.exe"; Flags: dontcopy noencryption -#endif - -#ifdef UseDirectX -Source: "dxwebsetup.exe"; Flags: dontcopy noencryption -#endif - -Source: "MyProg-x64.exe"; DestDir: "{app}"; DestName: "MyProg.exe"; Check: Dependency_IsX64; Flags: ignoreversion -Source: "MyProg.exe"; DestDir: "{app}"; Check: not Dependency_IsX64; Flags: ignoreversion - -[Icons] -Name: "{group}\{#MyAppSetupName}"; Filename: "{app}\MyProg.exe" -Name: "{group}\{cm:UninstallProgram,{#MyAppSetupName}}"; Filename: "{uninstallexe}" -Name: "{commondesktop}\{#MyAppSetupName}"; Filename: "{app}\MyProg.exe"; Tasks: desktopicon - -[Tasks] -Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}" - -[Run] -Filename: "{app}\MyProg.exe"; Description: "{cm:LaunchProgram,{#MyAppSetupName}}"; Flags: nowait postinstall skipifsilent - -[Code] -function InitializeSetup: Boolean; +procedure Dependency_AddAccessDatabaseEngine2010; begin -#ifdef UseDotNet35 - Dependency_AddDotNet35; -#endif -#ifdef UseDotNet40 - Dependency_AddDotNet40; -#endif -#ifdef UseDotNet45 - Dependency_AddDotNet45; -#endif -#ifdef UseDotNet46 - Dependency_AddDotNet46; -#endif -#ifdef UseDotNet47 - Dependency_AddDotNet47; -#endif -#ifdef UseDotNet48 - Dependency_AddDotNet48; -#endif - -#ifdef UseNetCore31 - Dependency_AddNetCore31; -#endif -#ifdef UseNetCore31Asp - Dependency_AddNetCore31Asp; -#endif -#ifdef UseNetCore31Desktop - Dependency_AddNetCore31Desktop; -#endif -#ifdef UseDotNet50 - Dependency_AddDotNet50; -#endif -#ifdef UseDotNet50Asp - Dependency_AddDotNet50Asp; -#endif -#ifdef UseDotNet50Desktop - Dependency_AddDotNet50Desktop; -#endif -#ifdef UseDotNet60 - Dependency_AddDotNet60; -#endif -#ifdef UseDotNet60Asp - Dependency_AddDotNet60Asp; -#endif -#ifdef UseDotNet60Desktop - Dependency_AddDotNet60Desktop; -#endif -#ifdef UseDotNet70 - Dependency_AddDotNet70; -#endif -#ifdef UseDotNet70Asp - Dependency_AddDotNet70Asp; -#endif -#ifdef UseDotNet70Desktop - Dependency_AddDotNet70Desktop; -#endif - -#ifdef UseVC2005 - Dependency_AddVC2005; -#endif -#ifdef UseVC2008 - Dependency_AddVC2008; -#endif -#ifdef UseVC2010 - Dependency_AddVC2010; -#endif -#ifdef UseVC2012 - Dependency_AddVC2012; -#endif -#ifdef UseVC2013 - //Dependency_ForceX86 := True; // force 32-bit install of next dependencies - Dependency_AddVC2013; - //Dependency_ForceX86 := False; // disable forced 32-bit install again -#endif -#ifdef UseVC2015To2022 - Dependency_AddVC2015To2022; -#endif - -#ifdef UseDirectX - ExtractTemporaryFile('dxwebsetup.exe'); - Dependency_AddDirectX; -#endif - -#ifdef UseSql2008Express - Dependency_AddSql2008Express; -#endif -#ifdef UseSql2012Express - Dependency_AddSql2012Express; -#endif -#ifdef UseSql2014Express - Dependency_AddSql2014Express; -#endif -#ifdef UseSql2016Express - Dependency_AddSql2016Express; -#endif -#ifdef UseSql2017Express - Dependency_AddSql2017Express; -#endif -#ifdef UseSql2019Express - Dependency_AddSql2019Express; -#endif - -#ifdef UseWebView2 - Dependency_AddWebView2; -#endif + // https://www.microsoft.com/en-us/download/details.aspx?id=13255 + if not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\Engines\ACE') then begin + Dependency_Add('AccessDatabaseEngine2010' + Dependency_ArchSuffix + '.exe', + '/quiet', + 'Microsoft Access Database Engine 2010' + Dependency_ArchTitle, + Dependency_String('https://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine.exe', 'https://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine_X64.exe'), + '', False, False); + end; +end; - Result := True; +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'), + '', False, False); + end; end; +[Files] +#ifdef Dependency_Path_NetCoreCheck +; download netcorecheck.exe: https://www.nuget.org/packages/Microsoft.NET.Tools.NETCoreCheck.x86 +; download netcorecheck_x64.exe: https://www.nuget.org/packages/Microsoft.NET.Tools.NETCoreCheck.x64 +Source: "{#Dependency_Path_NetCoreCheck}netcorecheck.exe"; Flags: dontcopy noencryption +Source: "{#Dependency_Path_NetCoreCheck}netcorecheck_x64.exe"; Flags: dontcopy noencryption #endif + +#ifdef Dependency_Path_DirectX +Source: "{#Dependency_Path_DirectX}dxwebsetup.exe"; Flags: dontcopy noencryption +#endif \ No newline at end of file diff --git a/Installer/installer_arm64.iss b/Installer/installer_arm64.iss index 43f4960..10271fe 100644 --- a/Installer/installer_arm64.iss +++ b/Installer/installer_arm64.iss @@ -2,7 +2,7 @@ ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "WSA System Control" -#define MyAppVersion "1.0.8" +#define MyAppVersion "1.0.9" #define MyAppPublisher "infinitepower18" #define MyAppURL "https://github.com/infinitepower18/WSA-SystemControl" #define MyAppUpdateURL "https://github.com/infinitepower18/WSA-SystemControl/releases/latest" @@ -44,6 +44,7 @@ Name: "en"; MessagesFile: "compiler:Default.isl" Name: "ja"; MessagesFile: "compiler:Languages\Japanese.isl" Name: "zh"; MessagesFile: "compiler:Languages\Chinese.isl" Name: "hu"; MessagesFile: "compiler:Languages\Hungarian.isl" +Name: "ar"; MessagesFile: "compiler:Languages\Arabic.isl" [Tasks] Name: startup; Description: "Run WSA System Control on Windows login"; GroupDescription: "Additional options:"; diff --git a/Installer/installer_x64.iss b/Installer/installer_x64.iss index d403b26..c5b0d58 100644 --- a/Installer/installer_x64.iss +++ b/Installer/installer_x64.iss @@ -1,8 +1,11 @@ ; Script generated by the Inno Setup Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! +#define public Dependency_NoExampleSetup +#include "CodeDependencies.iss" + #define MyAppName "WSA System Control" -#define MyAppVersion "1.0.8" +#define MyAppVersion "1.0.9" #define MyAppPublisher "infinitepower18" #define MyAppURL "https://github.com/infinitepower18/WSA-SystemControl" #define MyAppUpdateURL "https://github.com/infinitepower18/WSA-SystemControl/releases/latest" @@ -39,16 +42,25 @@ ArchitecturesInstallIn64BitMode=x64 arm64 LanguageDetectionMethod=uilanguage ShowLanguageDialog=no +[Code] +function InitializeSetup: Boolean; +begin + Dependency_AddDotNet80Desktop; + Result := True; +end; + [Languages] Name: "en"; MessagesFile: "compiler:Default.isl" Name: "ja"; MessagesFile: "compiler:Languages\Japanese.isl" Name: "zh"; MessagesFile: "compiler:Languages\Chinese.isl" Name: "hu"; MessagesFile: "compiler:Languages\Hungarian.isl" +Name: "ar"; MessagesFile: "compiler:Languages\Arabic.isl" [Tasks] Name: startup; Description: "Run WSA System Control on Windows login"; GroupDescription: "Additional options:"; [Files] +Source: "C:\Program Files (x86)\Inno Setup 6\netcorecheck_x64.exe"; Flags: dontcopy noencryption Source: "C:\Users\Ahnaf\source\repos\WSA-SystemControl\WSA System Control\bin\Release\net8.0-windows10.0.22000.0\publish\win-x64\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion Source: "C:\Users\Ahnaf\source\repos\WSA-SystemControl\WSA System Control\bin\Release\net8.0-windows10.0.22000.0\publish\win-x64\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs ; NOTE: Don't use "Flags: ignoreversion" on any shared system files diff --git a/README.md b/README.md index e010fc6..d4b2ac9 100644 --- a/README.md +++ b/README.md @@ -25,5 +25,22 @@ Requires WSA running Android 13 or higher. [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/F1F1K06VY) +## Translations + +Locale files are located in `WSA System Control/Resources`. The language that is used by WSA System Control is dependent on your Windows display language. If your language isn't yet supported by WSA System Control, it will fallback to English. + +I am looking to integrate localization solutions such as Crowdin, but in the meantime you can make a PR with your contribution. + +If you want to translate WSA System Control to a language which is not yet supported, use the `WSA System Control/Resources/Strings.resx` file as a base for the translation. Make sure that the file is named in the `Strings.langCode.resx` format e.g. `Strings.ja-JP.resx`. + +Future updates to strings will involve updating all translated language files using Google Translate or some other machine translation service. As you may know, these services are not always accurate, so if you see any inaccuracies, please make a pull request! + +During translation, it is a good idea to run WSA System Control with the translated language to see the end result. As long as the translated file is properly named and placed in the `WSA System Control/Resources` folder, it should automatically display in that language. + +Text enclosed in `{}` brackets are variables which should be left the way they are and not be translated. + +### Microsoft Store page +Along with the program itself, I also aim to provide localized MS Store pages in the languages which the program is available. In your PR, include a comment with translated versions of the strings provided on [this page](https://gist.github.com/infinitepower18/cfa1df87d6b5c1c1d520c892303a8d79). + ## Disclaimer This project is not affiliated with Microsoft or Google in any way. diff --git a/WSA System Control/Resources/README.md b/WSA System Control/Resources/README.md deleted file mode 100644 index 94a9ad7..0000000 --- a/WSA System Control/Resources/README.md +++ /dev/null @@ -1,14 +0,0 @@ -Locale files are located in `WSA System Control/Resources`. The language that is used by WSA System Control is dependent on your Windows display language. If your language isn't yet supported by WSA System Control, it will fallback to English. - -I am looking to integrate localization solutions such as Crowdin, but in the meantime you can make a PR with your contribution. - -If you want to translate WSA System Control to a language which is not yet supported, use the `WSA System Control/Resources/Strings.resx` file as a base for the translation. Make sure that the file is named in the `Strings.langCode.resx` format e.g. `Strings.ja-JP.resx`. - -Future updates to strings will involve updating all translated language files using Google Translate or some other machine translation service. As you may know, these services are not always accurate, so if you see any inaccuracies, please make a pull request! - -During translation, it is a good idea to run WSA System Control with the translated language to see the end result. As long as the translated file is properly named and placed in the `WSA System Control/Resources` folder, it should automatically display in that language. - -Text enclosed in `{}` brackets are variables which should be left the way they are and not be translated. - -## Microsoft Store page -Along with the program itself, I also aim to provide localized MS Store pages in the languages which the program is available. In your PR, include a comment with translated versions of the strings provided on [this page](https://gist.github.com/infinitepower18/cfa1df87d6b5c1c1d520c892303a8d79). diff --git a/WSA System Control/WSA System Control.csproj b/WSA System Control/WSA System Control.csproj index 35eee5c..34e9cb3 100644 --- a/WSA System Control/WSA System Control.csproj +++ b/WSA System Control/WSA System Control.csproj @@ -7,7 +7,7 @@ true enable app.ico - 1.0.8 + 1.0.9 1.0.8 win-x86;win-x64;win-arm64 AnyCPU;ARM64;x64 diff --git a/WSCPackage/Package.appxmanifest b/WSCPackage/Package.appxmanifest index f5886f1..82a031a 100644 --- a/WSCPackage/Package.appxmanifest +++ b/WSCPackage/Package.appxmanifest @@ -10,7 +10,7 @@ + Version="1.0.9.0" /> WSA System Control @@ -27,6 +27,7 @@ + diff --git a/WSCPackage/WSCPackage.wapproj b/WSCPackage/WSCPackage.wapproj index 3e34381..27cc724 100644 --- a/WSCPackage/WSCPackage.wapproj +++ b/WSCPackage/WSCPackage.wapproj @@ -65,7 +65,7 @@ x64|arm64 0 True - Language=EN;JA-JP;ZH-CN;HU + Language=EN;JA-JP;ZH-CN;HU;AR en