From 42375f9b24a599c2ad2be8b36aec08fe8d9248654cfbf306e8da6f1b74a0fb10 Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Mon, 24 Aug 2015 09:47:58 +0000 Subject: [PATCH] - Updated to 1.7.50 development snapshot - New version of the Gecko engine based on Firefox 40. - First steps of the Direct3D 11 implementation. - Better font matching in DirectWrite. - Support for OpenMP on ARM platforms. - Various bug fixes. - updated winetricks - removed susepatches.patch (upstreamed) OBS-URL: https://build.opensuse.org/package/show/Emulators/wine?expand=0&rev=301 --- susepatches.patch | 169 --------------------------------------- wine-1.7.49.tar.bz2 | 3 - wine-1.7.49.tar.bz2.sign | 7 -- wine-1.7.50.tar.bz2 | 3 + wine-1.7.50.tar.bz2.sign | 7 ++ wine.changes | 12 +++ wine.spec | 6 +- winetricks | 133 +++++++++++++++++++++++++----- 8 files changed, 139 insertions(+), 201 deletions(-) delete mode 100644 susepatches.patch delete mode 100644 wine-1.7.49.tar.bz2 delete mode 100644 wine-1.7.49.tar.bz2.sign create mode 100644 wine-1.7.50.tar.bz2 create mode 100644 wine-1.7.50.tar.bz2.sign diff --git a/susepatches.patch b/susepatches.patch deleted file mode 100644 index 4bda76d..0000000 --- a/susepatches.patch +++ /dev/null @@ -1,169 +0,0 @@ -commit 38076fa63308417429617f959ce44315b604424c -Author: Sebastian Lackner -Date: Mon Aug 10 18:31:56 2015 +0200 - - ntdll: Move cookie initialization code from memory management to loader. - -diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c -index 0e91af4..d15b140 100644 ---- a/dlls/ntdll/loader.c -+++ b/dlls/ntdll/loader.c -@@ -50,6 +50,12 @@ WINE_DECLARE_DEBUG_CHANNEL(snoop); - WINE_DECLARE_DEBUG_CHANNEL(loaddll); - WINE_DECLARE_DEBUG_CHANNEL(imports); - -+#ifdef _WIN64 -+#define DEFAULT_SECURITY_COOKIE_64 (((ULONGLONG)0x00002b99 << 32) | 0x2ddfa232) -+#endif -+#define DEFAULT_SECURITY_COOKIE_32 0xbb40e64e -+#define DEFAULT_SECURITY_COOKIE_16 (DEFAULT_SECURITY_COOKIE_32 >> 16) -+ - /* we don't want to include winuser.h */ - #define RT_MANIFEST ((ULONG_PTR)24) - #define ISOLATIONAWARE_MANIFEST_RESOURCE_ID ((ULONG_PTR)2) -@@ -1602,6 +1608,55 @@ static void load_builtin_callback( void *module, const char *filename ) - } - - -+/*********************************************************************** -+ * set_security_cookie -+ * -+ * Create a random security cookie for buffer overflow protection. Make -+ * sure it does not accidentally match the default cookie value. -+ */ -+static void set_security_cookie( void *module, SIZE_T len ) -+{ -+ static ULONG seed; -+ IMAGE_LOAD_CONFIG_DIRECTORY *loadcfg; -+ ULONG loadcfg_size; -+ ULONG_PTR *cookie; -+ -+ loadcfg = RtlImageDirectoryEntryToData( module, TRUE, IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG, &loadcfg_size ); -+ if (!loadcfg) return; -+ if (loadcfg_size < offsetof(IMAGE_LOAD_CONFIG_DIRECTORY, SecurityCookie) + sizeof(loadcfg->SecurityCookie)) return; -+ if (!loadcfg->SecurityCookie) return; -+ if (loadcfg->SecurityCookie < (ULONG_PTR)module || -+ loadcfg->SecurityCookie > (ULONG_PTR)module + len - sizeof(ULONG_PTR)) -+ { -+ WARN( "security cookie %p outside of image %p-%p\n", -+ (void *)loadcfg->SecurityCookie, module, (char *)module + len ); -+ return; -+ } -+ -+ cookie = (ULONG_PTR *)loadcfg->SecurityCookie; -+ TRACE( "initializing security cookie %p\n", cookie ); -+ -+ if (!seed) seed = NtGetTickCount() ^ GetCurrentProcessId(); -+ for (;;) -+ { -+ if (*cookie == DEFAULT_SECURITY_COOKIE_16) -+ *cookie = RtlRandom( &seed ) >> 16; /* leave the high word clear */ -+ else if (*cookie == DEFAULT_SECURITY_COOKIE_32) -+ *cookie = RtlRandom( &seed ); -+#ifdef DEFAULT_SECURITY_COOKIE_64 -+ else if (*cookie == DEFAULT_SECURITY_COOKIE_64) -+ { -+ *cookie = RtlRandom( &seed ); -+ /* fill up, but keep the highest word clear */ -+ *cookie ^= (ULONG_PTR)RtlRandom( &seed ) << 16; -+ } -+#endif -+ else -+ break; -+ } -+} -+ -+ - /****************************************************************************** - * load_native_dll (internal) - */ -@@ -1636,6 +1691,8 @@ static NTSTATUS load_native_dll( LPCWSTR load_path, LPCWSTR name, HANDLE file, - goto done; - } - -+ set_security_cookie( module, len ); -+ - /* fixup imports */ - - nt = RtlImageNtHeader( module ); -diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c -index 676675f..fe17518 100644 ---- a/dlls/ntdll/virtual.c -+++ b/dlls/ntdll/virtual.c -@@ -61,12 +61,6 @@ WINE_DECLARE_DEBUG_CHANNEL(module); - #define MAP_NORESERVE 0 - #endif - --#ifdef _WIN64 --#define DEFAULT_SECURITY_COOKIE_64 (((ULONGLONG)0x00002b99 << 32) | 0x2ddfa232) --#endif --#define DEFAULT_SECURITY_COOKIE_32 0xbb40e64e --#define DEFAULT_SECURITY_COOKIE_16 (DEFAULT_SECURITY_COOKIE_32 >> 16) -- - /* File view */ - struct file_view - { -@@ -1060,37 +1054,6 @@ static NTSTATUS stat_mapping_file( struct file_view *view, struct stat *st ) - } - - /*********************************************************************** -- * set_security_cookie -- * -- * Create a random security cookie for buffer overflow protection. Make -- * sure it does not accidentally match the default cookie value. -- */ --static void set_security_cookie(ULONG_PTR *cookie) --{ -- static ULONG seed; -- -- if (!cookie) return; -- if (!seed) seed = NtGetTickCount() ^ GetCurrentProcessId(); -- while (1) -- { -- if (*cookie == DEFAULT_SECURITY_COOKIE_16) -- *cookie = RtlRandom( &seed ) >> 16; /* leave the high word clear */ -- else if (*cookie == DEFAULT_SECURITY_COOKIE_32) -- *cookie = RtlRandom( &seed ); --#ifdef DEFAULT_SECURITY_COOKIE_64 -- else if (*cookie == DEFAULT_SECURITY_COOKIE_64) -- { -- *cookie = RtlRandom( &seed ); -- /* fill up, but keep the highest word clear */ -- *cookie ^= (ULONG_PTR)RtlRandom( &seed ) << 16; -- } --#endif -- else -- break; -- } --} -- --/*********************************************************************** - * map_image - * - * Map an executable (PE format) image into memory. -@@ -1103,8 +1066,6 @@ static NTSTATUS map_image( HANDLE hmapping, int fd, char *base, SIZE_T total_siz - IMAGE_SECTION_HEADER sections[96]; - IMAGE_SECTION_HEADER *sec; - IMAGE_DATA_DIRECTORY *imports; -- IMAGE_LOAD_CONFIG_DIRECTORY *loadcfg; -- ULONG loadcfg_size; - NTSTATUS status = STATUS_CONFLICTING_ADDRESSES; - int i; - off_t pos; -@@ -1316,16 +1277,6 @@ static NTSTATUS map_image( HANDLE hmapping, int fd, char *base, SIZE_T total_siz - } - } - -- /* randomize security cookie */ -- -- loadcfg = RtlImageDirectoryEntryToData( (HMODULE)ptr, TRUE, -- IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG, &loadcfg_size ); -- if (loadcfg && loadcfg_size >= offsetof(IMAGE_LOAD_CONFIG_DIRECTORY, SecurityCookie) + sizeof(loadcfg->SecurityCookie) && -- (ULONG_PTR)ptr <= loadcfg->SecurityCookie && loadcfg->SecurityCookie <= (ULONG_PTR)ptr + total_size - sizeof(ULONG_PTR)) -- { -- set_security_cookie((ULONG_PTR *)loadcfg->SecurityCookie); -- } -- - /* set the image protections */ - - VIRTUAL_SetProt( view, ptr, ROUND_SIZE( 0, header_size ), VPROT_COMMITTED | VPROT_READ ); diff --git a/wine-1.7.49.tar.bz2 b/wine-1.7.49.tar.bz2 deleted file mode 100644 index 8694d23..0000000 --- a/wine-1.7.49.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c8a1589753493cb6b71b3772b730cdf90059fe0f29cbfb369fc9a2339766b789 -size 22541586 diff --git a/wine-1.7.49.tar.bz2.sign b/wine-1.7.49.tar.bz2.sign deleted file mode 100644 index cb58b89..0000000 --- a/wine-1.7.49.tar.bz2.sign +++ /dev/null @@ -1,7 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1 - -iEYEABECAAYFAlXE1ToACgkQ9ebp7rlGHddS8gCgnpgZemeRznDg7CIttwBQi8MG -lWEAn2t8RhM3l0asOuVN+zDt0YPSeuTw -=zTDF ------END PGP SIGNATURE----- diff --git a/wine-1.7.50.tar.bz2 b/wine-1.7.50.tar.bz2 new file mode 100644 index 0000000..41070c5 --- /dev/null +++ b/wine-1.7.50.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c5410fab820281f337d478c18305027363c9012f30f742339ef1eb0f9dd711e +size 22586575 diff --git a/wine-1.7.50.tar.bz2.sign b/wine-1.7.50.tar.bz2.sign new file mode 100644 index 0000000..d7a8b84 --- /dev/null +++ b/wine-1.7.50.tar.bz2.sign @@ -0,0 +1,7 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1 + +iEYEABECAAYFAlXXMFEACgkQ9ebp7rlGHdfF3ACeK6OQi/n3/H+IWojhEeKzgqUo +XfEAnAxUK0XXV//7Z4vxRv5iYx3Z7uVH +=kw0s +-----END PGP SIGNATURE----- diff --git a/wine.changes b/wine.changes index d24400d..23a7be4 100644 --- a/wine.changes +++ b/wine.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Mon Aug 24 09:47:12 UTC 2015 - meissner@suse.com + +- Updated to 1.7.50 development snapshot + - New version of the Gecko engine based on Firefox 40. + - First steps of the Direct3D 11 implementation. + - Better font matching in DirectWrite. + - Support for OpenMP on ARM platforms. + - Various bug fixes. +- updated winetricks +- removed susepatches.patch (upstreamed) + ------------------------------------------------------------------- Thu Aug 13 06:21:54 UTC 2015 - meissner@suse.com diff --git a/wine.spec b/wine.spec index 99b8287..50c0467 100644 --- a/wine.spec +++ b/wine.spec @@ -57,7 +57,7 @@ BuildRequires: sane-backends-devel BuildRequires: update-desktop-files BuildRequires: valgrind-devel BuildRequires: xorg-x11-devel -Version: 1.7.49 +Version: 1.7.50 Release: 0 Summary: An MS Windows Emulator License: LGPL-2.1+ @@ -80,7 +80,7 @@ Source5: ubuntuwine.tar.bz2 Source7: baselibs.conf # SUSE specific patches # - currently none, but add them here -Patch0: susepatches.patch +#Patch0: susepatches.patch Recommends: wine-gecko >= 2.24 Recommends: wine-mp3 # not packaged in distro... @@ -125,7 +125,7 @@ libraries. %prep %setup -q -%patch0 -p1 +#%patch0 -p1 # cp %{S:3} . # diff --git a/winetricks b/winetricks index 04b96ed..8e5a7b4 100644 --- a/winetricks +++ b/winetricks @@ -154,11 +154,6 @@ else W_TMP_EARLY="/tmp" fi -# ftp.microsoft.com resolves to two different IP addresses, one of which is broken -# 2012-08-11: 64.4.17.176 -# 2015-05-13: 134.170.188.232 -ftp_microsoft_com=134.170.188.232 - #---- Public Functions ---- # Ask permission to continue @@ -6004,6 +5999,24 @@ load_dsound() #---------------------------------------------------------------- +w_metadata esent dlls \ + title="MS Extensible Storage Engine" \ + publisher="Microsoft" \ + year="2011" \ + media="download" \ + file1="../win7sp1/windows6.1-KB976932-X86.exe" \ + installed_file1="$W_SYSTEM32_DLLS_WIN/esent.dll" + +load_esent() +{ + helper_win7sp1 x86_microsoft-windows-e..estorageengine-isam_31bf3856ad364e35_6.1.7601.17514_none_f3ebb0cc8a4dd814/esent.dll + w_try cp "$W_TMP/x86_microsoft-windows-e..estorageengine-isam_31bf3856ad364e35_6.1.7601.17514_none_f3ebb0cc8a4dd814/esent.dll" "$W_SYSTEM32_DLLS/esent.dll" + + w_override_dlls native,builtin esent +} + +#---------------------------------------------------------------- + # FIXME: update winetricks_is_installed to look at installed_file2..n w_metadata flash dlls \ title="Flash Player 14" \ @@ -6495,6 +6508,86 @@ load_mdac28() #---------------------------------------------------------------- +w_metadata mdx dlls \ + title="Managed DirectX" \ + publisher="Microsoft" \ + year="2006" \ + media="download" \ + file1="../directx9/directx_feb2010_redist.exe" \ + installed_file1="C:/windows/assembly/GAC/microsoft.directx/1.0.2902.0__31bf3856ad364e35/microsoft.directx.dll" + +load_mdx() +{ + helper_directx_dl + + cd "$W_TMP" + + w_try_cabextract -F "*MDX*" "$W_CACHE"/directx9/$DIRECTX_NAME + w_try_cabextract -F "*.cab" *Archive.cab + + # Install assemblies + w_try_cabextract -d "$W_WINDIR_UNIX/Microsoft.NET/DirectX for Managed Code/1.0.2902.0" -F "microsoft.directx*" *MDX1_x86.cab + for file in mdx_*.cab + do + ver="${file%%_x86.cab}" + ver="${ver##mdx_}" + w_try_cabextract -d "$W_WINDIR_UNIX/Microsoft.NET/DirectX for Managed Code/$ver" -F "microsoft.directx*" "$file" + done + w_try_cabextract -d "$W_WINDIR_UNIX/Microsoft.NET/DirectX for Managed Code/1.0.2911.0" -F "microsoft.directx.direct3dx*" *MDX1_x86.cab + + # Add them to GAC + cd "$W_WINDIR_UNIX/Microsoft.NET/DirectX for Managed Code" + for ver in * + do + cd "$ver" + for asm in *.dll + do + name="${asm%%.dll}" + w_try mkdir -p "$W_WINDIR_UNIX/assembly/GAC/$name/${ver}__31bf3856ad364e35" + w_try cp "$asm" "$W_WINDIR_UNIX/assembly/GAC/$name/${ver}__31bf3856ad364e35" + done + cd - + done + + # AssemblyFolders + cat > "$W_TMP"/asmfolders.reg <<_EOF_ +REGEDIT4 + +[HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AssemblyFolders\DX_1.0.2902.0] +@="C:\\\\windows\\\\Microsoft.NET\\\\DirectX for Managed Code\\\\1.0.2902.0\\\\" + +[HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AssemblyFolders\DX_1.0.2903.0] +@="C:\\\\windows\\\\Microsoft.NET\\\\DirectX for Managed Code\\\\1.0.2903.0\\\\" + +[HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AssemblyFolders\DX_1.0.2904.0] +@="C:\\\\windows\\\\Microsoft.NET\\\\DirectX for Managed Code\\\\1.0.2904.0\\\\" + +[HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AssemblyFolders\DX_1.0.2905.0] +@="C:\\\\windows\\\\Microsoft.NET\\\\DirectX for Managed Code\\\\1.0.2905.0\\\\" + +[HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AssemblyFolders\DX_1.0.2906.0] +@="C:\\\\windows\\\\Microsoft.NET\\\\DirectX for Managed Code\\\\1.0.2906.0\\\\" + +[HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AssemblyFolders\DX_1.0.2907.0] +@="C:\\\\windows\\\\Microsoft.NET\\\\DirectX for Managed Code\\\\1.0.2907.0\\\\" + +[HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AssemblyFolders\DX_1.0.2908.0] +@="C:\\\\windows\\\\Microsoft.NET\\\\DirectX for Managed Code\\\\1.0.2908.0\\\\" + +[HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AssemblyFolders\DX_1.0.2909.0] +@="C:\\\\windows\\\\Microsoft.NET\\\\DirectX for Managed Code\\\\1.0.2909.0\\\\" + +[HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AssemblyFolders\DX_1.0.2910.0] +@="C:\\\\windows\\\\Microsoft.NET\\\\DirectX for Managed Code\\\\1.0.2910.0\\\\" + +[HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AssemblyFolders\DX_1.0.2911.0] +@="C:\\\\windows\\\\Microsoft.NET\\\\DirectX for Managed Code\\\\1.0.2911.0\\\\" +_EOF_ + w_try_regedit "$W_TMP_WIN"\\asmfolders.reg +} + +#---------------------------------------------------------------- + w_metadata mfc40 dlls \ title="MS mfc40 (Microsoft Foundation Classes from Visual C++ 4.0)" \ publisher="Microsoft" \ @@ -7430,9 +7523,9 @@ load_vb2run() { # Not referenced on MS web anymore, but the old Microsoft Software Library FTP still has it. # See ftp://ftp.microsoft.com/Softlib/index.txt - # 2014/05/31: Microosfot FTP is down ftp://$ftp_microsoft_com/Softlib/MSLFILES/VBRUN200.EXE - # Mirror list: http://www.filewatcher.com/m/VBRUN200.EXE.220504-0.html - w_download ftp://ftp.chatnfiles.com/Winfilesdotcom/winfilesdotcom-june-98-4-of-4/required/VBRUN200.EXE ac0568b73ee375408778e9b505df995f79ab907e + # 2014/05/31: Microsoft FTP is down ftp://$ftp_microsoft_com/Softlib/MSLFILES/VBRUN200.EXE + # 2015/08/10: chatnfiles is down, conradshome.com is up (and has a LOT of old MS installers archived!) + w_download http://www.conradshome.com/win31/archive/softlib/vbrun200.exe ac0568b73ee375408778e9b505df995f79ab907e w_try_unzip "$W_TMP" "$W_CACHE"/vb2run/VBRUN200.EXE w_try cp -f "$W_TMP/VBRUN200.DLL" "$W_SYSTEM32_DLLS" } @@ -9096,6 +9189,8 @@ load_dxdiag() { helper_directx_dl + w_call gmdls + w_try_cabextract -d "$W_TMP" -L -F dxnt.cab "$W_CACHE"/directx9/$DIRECTX_NAME w_try_cabextract -d "$W_SYSTEM32_DLLS" -L -F "dxdiag.exe" "$W_TMP/dxnt.cab" mkdir -p "$W_WINDIR_UNIX/help" @@ -9106,6 +9201,10 @@ load_dxdiag() then w_call dxdiagn fi + if w_workaround_wine_bug 9027 + then + w_call directmusic + fi if w_workaround_wine_bug 25715 "" 1.7.28, then w_call quartz @@ -9128,7 +9227,7 @@ w_metadata emu8086 apps \ load_emu8086() { - w_download http://emu8086.com/emu8086.zip fa3b2451cbc46fd2e3aa2670fa4d81ae8e75c7db + w_download https://web.archive.org/web/20140209022335/http://emu8086.com/emu8086.zip fa3b2451cbc46fd2e3aa2670fa4d81ae8e75c7db w_try_unzip "$W_TMP" "$W_CACHE/$W_PACKAGE"/$file1 w_try "$WINE" "$W_TMP/Setup.exe" $W_UNATTENDED_SLASH_SILENT w_declare_exe "c:\\emu8086" "emu8086.exe" @@ -9231,7 +9330,7 @@ w_metadata irfanview apps \ load_irfanview() { - w_download http://www.tucows.com/download/windows/files/iview438_setup.exe c55c2fd91ac1af03e8063442b110ba771357d42e + w_download http://fossies.org/windows/misc/iview438_setup.exe c55c2fd91ac1af03e8063442b110ba771357d42e if w_workaround_wine_bug 657 "Installing mfc42" then w_call mfc42 @@ -10146,7 +10245,7 @@ load_python26_setuptools() { w_call python26 - w_download https://bootstrap.pypa.io/ez_setup.py 50e215cb8efd8a9c982ca6894a057c2bea22d86f + w_download https://bootstrap.pypa.io/ez_setup.py 90b05e9298b7963eaec6de050c8fc751ce6a2a29 cd "$W_CACHE/$W_PACKAGE" w_try "$WINE" "C:\Python26\python.exe" ${file1} @@ -11257,7 +11356,7 @@ w_metadata algodoo_demo games \ load_algodoo_demo() { - w_download http://www.algodoo.com/download/Algodoo_1_7_1-Win32.exe caa73e73669a8787652a6bed123bbe2682152f12 + w_download http://www.algodoo.com/download/Algodoo_1_7_1-Win32.exe caa73e73669a8787652a6bed123bbe2682152f12 cd "$W_CACHE/$W_PACKAGE" w_ahk_do " @@ -11360,8 +11459,7 @@ w_metadata aoe3_demo games \ load_aoe3_demo() { - w_download "http://download.microsoft.com/download/a/5/2/a525997e-8423-435b-b694-08118d235064/aoe3trial.exe" \ - 2b0a123243092d79f910db5691d99d469f7c17c3 + w_download "http://download.microsoft.com/download/a/5/2/a525997e-8423-435b-b694-08118d235064/aoe3trial.exe" 2b0a123243092d79f910db5691d99d469f7c17c3 if w_workaround_wine_bug 24897 "Installing msxml4 to avoid font problem" 1.3.9, then @@ -12534,9 +12632,7 @@ w_metadata crayonphysics_demo games \ load_crayonphysics_demo() { - w_download \ - http://crayonphysicsdeluxe.s3.amazonaws.com/$file1 \ - 4ffd64c630f69e7cf024ef946c2c64c8c4ce4eac + w_download http://crayonphysicsdeluxe.s3.amazonaws.com/crayon_release52demo.exe 4ffd64c630f69e7cf024ef946c2c64c8c4ce4eac # Inno Setup installer w_try "$WINE" "$W_CACHE/$W_PACKAGE/$file1" ${W_OPT_UNATTENDED:+ /sp- /silent /norestart} w_declare_exe "$W_PROGRAMS_X86_WIN\\Crayon Physics Deluxe Demo" crayon.exe @@ -15428,8 +15524,7 @@ load_myth2_demo() # source code to Project Magma for further development. # 1 May 2011 1.7.2 sha1sum e0a8f707377e71314a471a09ad2a55179ea44588 - w_download http://tain.totalcodex.net/items/download/myth-ii-demo-windows \ - e0a8f707377e71314a471a09ad2a55179ea44588 $file1 + w_download http://tain.totalcodex.net/items/download/myth-ii-demo-windows e0a8f707377e71314a471a09ad2a55179ea44588 Myth2_Demo_172.exe cd "$W_CACHE/$W_PACKAGE" w_ahk_do "