diff --git a/Engines/Wine/Verbs/D9VK/script.js b/Engines/Wine/Verbs/D9VK/script.js index e97c495e72..073344f30a 100644 --- a/Engines/Wine/Verbs/D9VK/script.js +++ b/Engines/Wine/Verbs/D9VK/script.js @@ -34,6 +34,7 @@ class D9VK { const wizard = this.wine.wizard(); const prefixDirectory = this.wine.prefixDirectory(); const system32directory = this.wine.system32directory(); + const architecture = this.wine.architecture(): print("NOTE: Wine version should be greater or equal to 3.10"); @@ -83,7 +84,7 @@ class D9VK { } }); - if (this.architecture() == "amd64") { + if (architecture == "amd64") { const system64directory = this.wine.system64directory(); // copy 64 bits dll to system* diff --git a/Engines/Wine/Verbs/DXVK/script.js b/Engines/Wine/Verbs/DXVK/script.js index 7dd5046980..6992625e9a 100644 --- a/Engines/Wine/Verbs/DXVK/script.js +++ b/Engines/Wine/Verbs/DXVK/script.js @@ -35,6 +35,7 @@ class DXVK { const wizard = this.wine.wizard(); const prefixDirectory = this.wine.prefixDirectory(); const sys32dir = this.wine.system32directory(); + const architecture = this.wine.architecture(); print("NOTE: wine version should be greater or equal to 3.10"); @@ -90,7 +91,7 @@ class DXVK { } }); - if (this.wine.architecture() == "amd64") { + if (architecture == "amd64") { const sys64dir = this.wine.system64directory(); //Copy 64 bits dll to system* diff --git a/Engines/Wine/Verbs/adobeair/script.js b/Engines/Wine/Verbs/adobeair/script.js index 207b405014..c5d334f5fb 100644 --- a/Engines/Wine/Verbs/adobeair/script.js +++ b/Engines/Wine/Verbs/adobeair/script.js @@ -14,6 +14,7 @@ class AdobeAir { } go() { + const wizard = this.wine.wizard(); // Using Windows XP to workaround the wine bug 43506 // See https://bugs.winehq.org/show_bug.cgi?id=43506 const currentWindowsVersion = this.wine.windowsVersion(); @@ -21,7 +22,7 @@ class AdobeAir { this.wine.windowsVersion("winxp"); const adobeair = new Resource() - .wizard(this.wizard()) + .wizard(wizard) .url("https://airdownload.adobe.com/air/win/download/latest/AdobeAIRInstaller.exe") .name("AdobeAIRInstaller.exe") .get(); diff --git a/Engines/Wine/Verbs/amstream/script.js b/Engines/Wine/Verbs/amstream/script.js index 4ed2cf4e92..91b430bbe3 100644 --- a/Engines/Wine/Verbs/amstream/script.js +++ b/Engines/Wine/Verbs/amstream/script.js @@ -19,6 +19,7 @@ class Amstream { go() { const wizard = this.wine.wizard(); const system32directory = this.wine.system32directory(); + const architecture = this.wine.architecture(); const setupFile = new Resource() .wizard(wizard) @@ -50,7 +51,7 @@ class Amstream { this.wine.regsvr32().install("amstream.dll"); - if (this.architecture() == "amd64") { + if (architecture == "amd64") { const system64directory = this.wine.system64directory(); const setupFilex64 = new Resource() diff --git a/Engines/Wine/Verbs/d3dx10/script.js b/Engines/Wine/Verbs/d3dx10/script.js index d66a5e908c..c17812b978 100644 --- a/Engines/Wine/Verbs/d3dx10/script.js +++ b/Engines/Wine/Verbs/d3dx10/script.js @@ -47,6 +47,7 @@ class D3DX10 { const wizard = this.wine.wizard(); const prefixDirectory = this.wine.prefixDirectory(); const system32directory = this.wine.system32directory(); + const architecture = this.wine.architecture(); const setupFile = new Resource() .wizard(wizard) @@ -84,7 +85,7 @@ class D3DX10 { this.extractDirectXToSystemDirectory(progressBar, filesToExtractx86, system32directory, "d3dx10*.dll"); - if (this.architecture() == "amd64") { + if (architecture == "amd64") { const system64directory = this.wine.system64directory(); new CabExtract() diff --git a/Engines/Wine/Verbs/d3dx11/script.js b/Engines/Wine/Verbs/d3dx11/script.js index 554bd10f72..d5b0d71961 100644 --- a/Engines/Wine/Verbs/d3dx11/script.js +++ b/Engines/Wine/Verbs/d3dx11/script.js @@ -47,6 +47,7 @@ class D3DX11 { const wizard = this.wine.wizard(); const prefixDirectory = this.wine.prefixDirectory(); const system32directory = this.wine.system32directory(); + const architecture = this.wine.architecture(); const setupFile = new Resource() .wizard(wizard) @@ -72,7 +73,7 @@ class D3DX11 { this.extractDirectXToSystemDirectory(progressBar, filesToExtractx86, system32directory, "*.dll"); - if (this.architecture() == "amd64") { + if (architecture == "amd64") { const system64directory = this.wine.system64directory(); new CabExtract() diff --git a/Engines/Wine/Verbs/d3dx9/script.js b/Engines/Wine/Verbs/d3dx9/script.js index ed45bfe376..ea3e497247 100644 --- a/Engines/Wine/Verbs/d3dx9/script.js +++ b/Engines/Wine/Verbs/d3dx9/script.js @@ -47,6 +47,7 @@ class D3DX9 { const wizard = this.wine.wizard(); const prefixDirectory = this.wine.prefixDirectory(); const system32directory = this.wine.system32directory(); + const architecture = this.wine.architecture(); const setupFile = new Resource() .wizard(wizard) @@ -92,7 +93,7 @@ class D3DX9 { this.extractDirectXToSystemDirectory(progressBar, filesToExtractx86, system32directory, "d3dx9*.dll"); - if (this.architecture() == "amd64") { + if (architecture == "amd64") { const system64directory = this.wine.system64directory(); new CabExtract() diff --git a/Engines/Wine/Verbs/dotnet45/script.js b/Engines/Wine/Verbs/dotnet45/script.js index f7540feb3b..677af49130 100755 --- a/Engines/Wine/Verbs/dotnet45/script.js +++ b/Engines/Wine/Verbs/dotnet45/script.js @@ -20,8 +20,9 @@ class DotNET45 { go() { const wizard = this.wine.wizard(); const windowsVersion = this.wine.windowsVersion(); + const architecture = this.wine.architecture(); - if (this.architecture() == "amd64") { + if (architecture == "amd64") { print( tr( "This package ({0}) may not fully work on a 64-bit installation. 32-bit prefixes may work better.", diff --git a/Engines/Wine/Verbs/gallium9/script.js b/Engines/Wine/Verbs/gallium9/script.js index 0db50e40fb..efb30e5a25 100644 --- a/Engines/Wine/Verbs/gallium9/script.js +++ b/Engines/Wine/Verbs/gallium9/script.js @@ -37,7 +37,7 @@ class Gallium9 { this.gallium9Version = "0.4"; } - this.wizard().message( + wizard.message( tr( "Using Gallium 9 requires to have a driver supporting the Gallium 9 state tracker, as well as d3dapater9.so installed (ex: libd3d9adapter-mesa package). Please be sure it is installed (both 32 and 64 bits)." ) diff --git a/Engines/Wine/Verbs/gdiplus/script.js b/Engines/Wine/Verbs/gdiplus/script.js index 54ca7ab51b..73832d13dc 100644 --- a/Engines/Wine/Verbs/gdiplus/script.js +++ b/Engines/Wine/Verbs/gdiplus/script.js @@ -1,6 +1,7 @@ const Wine = include("engines.wine.engine.object"); const Resource = include("utils.functions.net.resource"); -const { cp } = include("utils.functions.filesystem.files"); +const { CabExtract } = include("utils.functions.filesystem.extract"); +const { cp, remove } = include("utils.functions.filesystem.files"); const Optional = Java.type("java.util.Optional"); @@ -18,19 +19,43 @@ class GDIPlus { const wizard = this.wine.wizard(); const prefixDirectory = this.wine.prefixDirectory(); const system32directory = this.wine.system32directory(); + const architecture = this.wine.architecture(); const setupFile = new Resource() .wizard(wizard) - .url( - "http://download.microsoft.com/download/a/b/c/abc45517-97a0-4cee-a362-1957be2f24e1/WindowsXP-KB975337-x86-ENU.exe" - ) - .checksum("b9a84bc3de92863bba1f5eb1d598446567fbc646") - .name("WindowsXP-KB975337-x86-ENU.exe") + .url("https://download.microsoft.com/download/0/A/F/0AFB5316-3062-494A-AB78-7FB0D4461357/windows6.1-KB976932-X86.exe") + .checksum("c3516bc5c9e69fee6d9ac4f981f5b95977a8a2fa") + .name("windows6.1-KB976932-X86.exe") .get(); + + new CabExtract() + .archive(setupFile) + .wizard(wizard) + .to(`${prefixDirectory}/drive_c/gdiplus/`) + .extract(["-L", "-F", "x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17514_none_72d18a4386696c80/gdiplus.dll"]); + + cp(`${prefixDirectory}/drive_c/gdiplus/x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17514_none_72d18a4386696c80/gdiplus.dll`, system32directory); + + if (architecture == "amd64") { + const system64directory = this.wine.system64directory(); - wizard.wait(tr("Please wait while {0} is installed...", "GDI+")); + const setupFile64 = new Resource() + .wizard(wizard) + .url("https://download.microsoft.com/download/0/A/F/0AFB5316-3062-494A-AB78-7FB0D4461357/windows6.1-KB976932-X64.exe") + .checksum("74865ef2562006e51d7f9333b4a8d45b7a749dab") + .name("windows6.1-KB976932-X64.exe") + .get(); + + new CabExtract() + .archive(setupFile64) + .wizard(wizard) + .to(`${prefixDirectory}/drive_c/gdiplus/`) + .extract(["-L", "-F", "amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17514_none_2b24536c71ed437a/gdiplus.dll"]); + + cp(`${prefixDirectory}/drive_c/gdiplus/amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17514_none_2b24536c71ed437a/gdiplus.dll`, system64directory); + } - this.wine.run(setupFile, ["/extract:C:\\Tmp", "/q"], null, true, true); + remove(`${prefixDirectory}/drive_c/gdiplus/`); this.wine .overrideDLL() diff --git a/Engines/Wine/Verbs/gdiplus_winxp/script.js b/Engines/Wine/Verbs/gdiplus_winxp/script.js new file mode 100644 index 0000000000..e1c16a787b --- /dev/null +++ b/Engines/Wine/Verbs/gdiplus_winxp/script.js @@ -0,0 +1,68 @@ +const Wine = include("engines.wine.engine.object"); +const Resource = include("utils.functions.net.resource"); +const { CabExtract } = include("utils.functions.filesystem.extract"); +const { remove, cat, writeToFile } = include("utils.functions.filesystem.files"); + +const Optional = Java.type("java.util.Optional"); + +include("engines.wine.plugins.override_dll"); + +/** + * Verb to install gdiplus (windows xp) + * + * @returns {Wine} Wine object + */ +class GDIPlusWinXP { + constructor(wine) { + this.wine = wine; + } + + go() { + const wizard = this.wine.wizard(); + const prefixDirectory = this.wine.prefixDirectory(); + const system32directory = this.wine.system32directory(); + + const setupFile = new Resource() + .wizard(wizard) + .url("https://download.microsoft.com/download/1/4/6/1467c2ba-4d1f-43ad-8d9b-3e8bc1c6ac3d/NDP1.0sp2-KB830348-X86-Enu.exe") + .checksum("6113cd89d77525958295ccbd73b5fb8b89abd0aa") + .name("NDP1.0sp2-KB830348-X86-Enu.exe") + .get(); + + new CabExtract() + .archive(setupFile) + .wizard(wizard) + .to(`${prefixDirectory}/drive_c/gdiplus/`) + .extract(["-F", "FL_gdiplus_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8"]); + + new CabExtract() + .archive(setupFile) + .wizard(wizard) + .to(`${prefixDirectory}/drive_c/gdiplus/`) + .extract(["-L", "-F", "x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17514_none_72d18a4386696c80/gdiplus.dll"]); + + const content = cat(`${prefixDirectory}/drive_c/gdiplus/drive_c/gdiplus/FL_gdiplus_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8`); + writeToFile(`${system32directory}/gdiplus.dll`, content); + + remove(`${prefixDirectory}/drive_c/gdiplus/`); + + this.wine + .overrideDLL() + .set("native", ["gdiplus"]) + .do(); + } + + static install(container) { + const wine = new Wine(); + const wizard = SetupWizard(InstallationType.VERBS, "gdiplus (windows xp)", Optional.empty()); + + wine.prefix(container); + wine.wizard(wizard); + + new GDIPlusWinXP(wine).go(); + + wizard.close(); + } +} + +module.default = GDIPlusWindowsXP; diff --git a/Engines/Wine/Verbs/gdiplus_winxp/script.json b/Engines/Wine/Verbs/gdiplus_winxp/script.json new file mode 100644 index 0000000000..5abc77a611 --- /dev/null +++ b/Engines/Wine/Verbs/gdiplus_winxp/script.json @@ -0,0 +1,11 @@ +{ + "scriptName" : "gdiplus_winxp", + "id" : "engines.wine.verbs.gdiplus_winxp", + "compatibleOperatingSystems" : [ + "MACOSX", + "LINUX" + ], + "testingOperatingSystems" : [], + "free" : true, + "requiresPatch" : false +} diff --git a/Engines/Wine/Verbs/secur32/script.js b/Engines/Wine/Verbs/secur32/script.js index ff48fd0017..cf4f58ce02 100644 --- a/Engines/Wine/Verbs/secur32/script.js +++ b/Engines/Wine/Verbs/secur32/script.js @@ -19,7 +19,7 @@ class Secur32 { const wizard = this.wine.wizard(); const prefixDirectory = this.wine.prefixDirectory(); const system32directory = this.wine.system32directory(); - const system64directory = this.wine.system64directory(); + const architecture = this.wine.architecture(); const setupFilex86 = new Resource() .wizard(wizard) @@ -47,7 +47,9 @@ class Secur32 { remove(`${prefixDirectory}/TMP/`); - if (this.architecture() == "amd64") { + if (architecture == "amd64") { + const system64directory = this.wine.system64directory(); + const setupFilex64 = new Resource() .wizard(wizard) .url( diff --git a/Engines/Wine/Verbs/xact/script.js b/Engines/Wine/Verbs/xact/script.js index be383594c6..61c9bf7dec 100644 --- a/Engines/Wine/Verbs/xact/script.js +++ b/Engines/Wine/Verbs/xact/script.js @@ -70,7 +70,7 @@ class Xact { const wizard = this.wine.wizard(); const prefixDirectory = this.wine.prefixDirectory(); const system32directory = this.wine.system32directory(); - const system64directory = this.wine.system64directory(); + const architecture = this.wine.architecture(); const setupFile = new Resource() .wizard(wizard) @@ -195,7 +195,9 @@ class Xact { remove(`${prefixDirectory}/drive_c/x3daudio_x86/`); remove(`${prefixDirectory}/drive_c/xaudio_x86/`); - if (this.architecture() == "amd64") { + if (architecture == "amd64") { + const system64directory = this.wine.system64directory(); + //---------------------------------------------------------Extract xactengine*.dll (x64)-------------------------------------------- new CabExtract() .wizard(wizard)